[VPM] I'm hiring programmers for new high-impact project
Darren Duncan
darren at DarrenDuncan.net
Sun Dec 5 20:36:21 CST 2004
I'm planning to launch a new business by the end of February that develops
its own new software applications and libraries for the mass market;
around that time, I would like to hire several programmers to help this
venture succeed (up until that time, I will be going it alone). For all
around simplicity and fairness, I plan that all the early hires will be
done on a contract basis, and paid by the hour at negotiable rates; I will
have them when I need them, which can often be full time, and they will be
free to do other projects on the side.
Please contact me asap if my venture is something you have any amount of
interest in working for (more details are below). While I won't be making
any final decisions now, I would like to get to know any applicants better
before bringing them in, and the intermediate few months should provide
opportunities for that. Some desirable traits in applicants are also
listed below.
My new business venture is the culmination of about 6+ years of planning
and design work plus research that I have been doing to date. I have a
strong interest in the relevant subject matters and the real-world needs
which this business and its products will serve; I will be doing whatever
it takes (that remains ethical) to see that this venture succeeds, and
continues to last for a long time.
The core product of this new business is a system for managing and
preserving all kinds of data in a way that is highly accurate and readily
adaptable to changing times and circumstances, over a long period. One of
the main goals is to empower people of today to keep records in such a
fashion that they can be fully and un-ambiguously understood later on,
whether in 5 years or 5000 years, despite the inevitable changes to a
society's living context that lead them to make different assumptions than
we do today, and despite the inevitable disasters that can wipe out
civilizations or historical records alike. Similarly, this system should
be a huge improvement over the tools that people have today for assembling
and verifying the various patch-work of records we have about those people
that came before us. The system is also not limited to handling records
about people, but about anything else, such as natural history or
scientific methods and discoveries. It can also handle not only large
events but daily minutae such as inventory or financial transactions.
The core product is technically a "database engine", but working on it or
with it should not be boring or same-old by any means. The product core
is a library that implements a particular database schema and takes care
of issues such as internal consistency, security, and auditing. It is
implemented as a layer on top of a traditional SQL database; users can
typically chose any back-end database that they want, or one will be
provided by default that hides any gory details behind the veneer of a
typical point-and-click application. Said library is a platform upon
which various user interface or bridge applications or plug-ins can be
built, some of which I/we will provide, and others that can be made by
third parties to solve particular needs. The whole system is designed to
be portable and will run on any commonly used operating system. The
system is also simultaneous-multi-user from the ground up.
One of the main initial user groups of this application will be
genealogists of all stripes, though it is the professionals that should be
especially interested in what I bring to the table. My system will
compete with the dozens of existing genealogy applications by being a lot
more functional they are, but just as easy to use, providing all
functionality they do plus a lot more that they couldn't hope to do
without being rebuilt from scratch; it does this without being bloated.
My prototype of this system is written in Perl 5, some parts of which are
relatively generic and released free on CPAN (mainly the database
portability ensuring components), and some parts of which will remain
proprietary. While a few early customers may get this prototype version
in exchange for valuable feedback, I plan to rewrite the system with the
help of extra developers, using other tools, prior to it being released on
the mass market. My current plan is to target the new bleeding edge
Parrot virtual machine (http://www.parrotcode.org/) with the final
version, which will be distributed mainly as Parrot bytecode. Parrot is
the host for the new Perl 6 language, but many other languages target
it too (and they can all talk to each other easily). I expect that all
software dependencies of my core product will be Free (as in "liberty")
and Open Source Software, so that we avoid being left high and dry like
a share-cropper on the whims of some other vendor.
These are some traits I find desirable in someone I would hire (there
are many more, not listed); not all are essential:
- Someone who enjoys writing software and does it in their spare time for
fun; not someone whose sole reason to code is to earn a living.
- Someone who has completed a formal education in writing software, such
as from a college or university.
- Someone who is good enough at writing software that they have been paid
to do it, and a reasonable customer/client would be happy with the result.
- Someone who has an eye to making their software components in an easily
reusable fashion, such as by using functions or libraries or classes.
- Someone who normally writes software in such a way that it can be easily
maintained by most other people skilled in the art.
- Someone that has worked in a team to develop software, and contributed
to the team's success in making a working and maintainable product.
- Someone who has good general written and verbal communication skills.
- Someone who is good at listening to others.
- Someone who is skilled in using the internet to communicate with others
and to look up information.
- Someone who can take the initiative and suggest logical improvements.
- Someone who regularly makes self-documenting code and use consistent
code styles.
- Someone who is skilled at documenting and testing their software, or
that of other people.
- Someone who is comfortable with and/or prefers object-oriented design.
- Someone who is experienced with SQL databases and knows about good
database design, including how to normalize a schema.
- Someone who understands the basics of how their computer hardware works
and what the main parts are (especially inside the enclosures).
- Someone who knows the basics of how computer operating systems work.
- Someone who knows about the common issues concerned with multi-process
and multi-threaded applications.
- Someone who has considerable experience with multiple families of
computer operating systems, including Macintosh, Windows, and Linux.
- Someone who isn't in Microsoft's pocket.
- Someone who knows good human computer interface design and makes
applications with a good end-user experience in mind; especially
applications that can be explored easily and used for basic tasks without
the user having to look at a manual.
- Someone who makes applications that have reasonable default settings,
and doing simple or common tasks is quick and easy to a user, and where
only complicated and uncommon tasks may require considerable user work.
- Someone who designs applications with a foremost thought to reliability
and security, that have safety mechanisms to isolate any small problems
before they turn into big problems, and that expose the user's data to as
little risk of loss as possible.
- Someone who has worked on large applications and/or databases.
- Someone who has used multiple vendors of SQL databases and/or non-SQL
databases.
- Someone who understands how to write effective SQL.
- Someone who is proficient in multiple programming languages, both those
that are statically typed and dynamically typed; someone who could learn
and apply new languages easily.
- Someone who is proficient with Perl 5.
- Someone who enjoys using Perl, and promotes it to others.
- Someone who is experienced with C.
- Someone who is experienced with assembly languages, either hardware or
virtual machine.
- Someone who has used and/or studied Parrot.
- Someone who is interested in the Parrot project and wants to work with
it closely.
- Someone who has written web-based applications, either as CGI or
non-CGI programs.
- Someone who has used multiple families of web servers, especially
Apache.
- Someone who has used multiple families of web browsers.
- Someone who understands current web standards such as XHTML and CSS, and
can write them by hand.
- Someone who has written non-web GUI applications.
- Someone who is experienced in windowing tool kits, such as TK.
- Someone who has written command-line applications.
- Someone who knows how to debug an application or library, both with an
IDE debugger and without one.
- Someone who has written image or graphic generating code, or graphical
chart generating code. Even better if proficient with it.
- Someone who appreciates free and open source software (FOSS),
as well as their developer communities.
- Someone who has written and released free software.
- Someone who has a general interest in preservation or archiving or
research or genealogy or science or education or data accuracy, etc.
- Someone who has a working knowledge or fluency in a non-English human
language, written and/or spoken.
- Someone who cares about the well-being of others, and the world.
- Someone who is open to learning or trying new things, and actively seeks
out new knowledge and experiences.
- Someone who is willing to search in books or the internet for answers to
things they don't know.
- Someone who is willing to ask for help from other people, rather than
letting their pride keep them stumbling along on their own.
- Someone who doesn't give up when there are setbacks.
- Someone who lives in and/or can easily travel to the greater Victoria
area on a daily basis.
More information about the Victoria-pm
mailing list