Ask HN: How do I hire an initial developer for an earnest undertaking?

5 points by blockwriter ↗ HN
I am a novelist by trade, but I began a coding project at the outset of the pandemic. My failed stint as a student of physics included courses in programming. I had a good base to work from when I discovered I needed tasks with a shorter feedback loop than writing to occupy my time. The project consists primarily of tools meant to make explicit the implicit boon that reading is to writers, as well as facilitate the rehearsal and dramaturgy of plays, all by providing a group of contributors and collaborators another place to turn to regularly as part of their methodology. Although it began amateurishly, I was happy to find that my efforts, often fraught, but always enthralling, gradually produced a product that is truly useful and a code base that is mostly clear and concise. I have also been working on other programs that help make my publishing, e-commerce, and retail operation easier to manage. I also have a raspberry pi side project that I would like my hire to scale up.

I am ready to hire a programmer, but I am at a loss as to how to do so. I think the project has potential, not great potential, but some potential, and I have capital to invest. I make use of GitHub, but I am inexpert in its intricacies. I am thinking about going to a nearby university and finding an undergraduate to hire. I suppose that I could hire foreign developers, but I would like to develop a relationship with a small team. It is important to me that the software is a creative enterprise and does not lose the esoteric motivation that is literature. Do I need a contract out of the gate? Could I begin a working relationship without too much formality, or is that a bad idea? How do I hire my first developer?

3 comments

[ 4.7 ms ] story [ 14.7 ms ] thread
One thing you could do is spell out what the new hire would be doing slightly more explicitly. Modern software engineering consists of feature stories and then 2 week sprints to implement those features completely or at least make enough progress and then regroup for the next 2 weeks as needed. This structure works pretty well for most businesses and is generally a good practice even when working on personal projects.

So if you could outline the goals for a few sprints then it would be easy to hire someone to work on the project because you'd have done the necessary legwork to allow someone to start productively working with your code in a structured and measurable way.

The other thing is outlining the "stack" which just means the set of tools you're using like programming language, databases, frameworks, libraries, etc. That will help any potential hire orient themselves in terms of how much they would need to learn to be able to contribute productively to the project.

Thank you. That will give me two places to start looking. About the stack, is it standard to ask the developer to implement libraries, frameworks, or databases that have yet to be used. I’ve made database migration my line in the sand as far as what I want to do personally. I have managed to migrate a database using alembic and sqlite3, but I created a database for each module to use, and alembic seems like it prefers a central database, and sqlite3’s alter statement seems to add an additional level of complication, and on and on and on. Part of the problem may be that I can layout what functionality I would like to see implemented, but I am limited in how best to enact these changes to the libraries, databases, frameworks, and etc. that have served me so far.
That should be enough information for someone to make sense of what tools you're using. Most software engineers are familiar with sqlite so that won't be an issue. If you can outline in some detail the features you want then a competent software engineer will be able to work with what you currently have and evolve it towards the outline by either adding some other set of libraries and software components into the project or subtracting the parts that won't be useful for what you want to be implemented.

This is all obviously at a high level so the more concrete the feature specification the easier it will be to figure out how much work will be involved in implementing it.