Although it focuses on what type of programmer would make a good co-founder, I think it is not a too much of a stretch to ask, what type of programmer is best for your project? At some point in the project, there is room for each type of programmer to play a role.
Since I work mostly with open source software, I naturally consider myself a hacker.
From the article,
Ever meet a programmer without a personal Website — or any online presence whatsoever? Perplexing, right?
These types of programmers generally dislike gadgets and mainstream technologies. Instead, their interests run narrow and deep: they enjoy solving really tough technical problems. It’s possible they’ve never done Web development, instead focusing on engineering research or things like machine learning, artificial intelligence, natural language processing, and vision detection. They’re probably heavily entrenched in academia or an R&D environment.
The Good: They’re really really smart people and they have excellent pedigrees that might impress investors. If they have experience with Web development, they’re probably focused on very specific back-end engineering challenges like search, scalability, storage, or latency. In which case they’re probably working at Google, Microsoft, or another large technology company.
Computer scientists seem like natural fits for co-founders. After all, if they’re smart enough to build an image recognition algorithm then building a social networking site should be a cinch, right?
The Bad: Consumer startups rarely face interesting technical problems in the early days. Instead, they take lots of grunt work and repetition. And these types of programmers will be bored to death at the thought of doing mundane tasks like building a signup process, dealing with forgotten passwords, or dealing with session management.
These types also tend to be risk-averse folks who just want a stable paycheck. And they may lack a strong sense of how to design a product that people will actually want to use. This means they’ll need to be managed by a person with a strong design sense.
These are programmers who pride themselves on writing beautiful code. Sounds great, right? But remember that your end users will never see the code behind your product. A coders who prioritizes beautiful code is serving the wrong customer: s/he is making things for himself or herself (of which there is one) rather than for the end users (of which there are hopefully many many more). The goal of a startup is to build something people want, and writing beautiful code is of secondary importance.
The Good: They’ll write great code that lasts a long time.
The Bad: Several times I’ve seen developers so obsessed with writing beautiful code that it lead to the detriment of the product experience; they often have perfectionist tendencies that will slow down progress. Early stage startups need to rapidly iterate until they find product-market fit, which often means neglecting to finish that last 10% (which naturally takes 90% of time). Perfectionists have trouble cutting corners.
Remember, the most important product a startup can make isn’t pretty code. It’s a product people use.
These are programmers who have a strong product focus. They see programming as means to an end: ‘hacking’ stuff together to fill a need in the world and serve people.
The Good: These types typically have a solid online presence with lots of projects, hacks, and experiments that they proudly display. As one friend put it, these are “people who do open-source stuff.” They’re usually dripping with product sense, and always sharing their thoughts on which products they love using and which they hate.
The Bad: Often they no have formal computer science training but are instead self-taught. In many cases their work may be quick and dirty — prioritizing progress over polish.
Which Make the Best Co-founder?
As always, it depends. If you’re a first time entrepreneur, you may not even have a choice – beggars can’t be choosers!
But in general a hacker is best because they’ll rapidly build prototypes and iterate. Quick and dirty is fine at the beginning. Then when you raise money you can hire software engineers to focus on writing good code.
Computer scientists can also be a useful part of a founding team if your startup will rely on a strong technology advantage (such as a unique algorithm or processing engine). But even then, you’ll want to complement these folks with hacker-types who understand how to make a usable product.
In an ideal world, you’ll find a hybrid Hacker / Software Engineer. These talented folk will be able to rapidly hack together your prototype, then architect and build the real version, and then build and lead a technology team. They’ll write both quick-and-dirty code and well-written code — and they’ll perfectly balance progress and perfection."