Jeff wonders what it takes to be a practicing Software Developer (”You didn’t tell me“).
Traditionally, an inclination for Computer Science – the basics, math, data structures, algorithms, database, operating systems, other subjects.
To quote Jeff,
I am rapidly coming to realize that those basic skills aren’t enough anymore for people who want to spend their working lives building things out of bits.
He (and others who commented) feels a good software developer is a little bit of a lawyer, usability engineer, an artist, a marketer, a writer, a communicator, an architect, a database administrator, a hardware technician, a system operator, and finally a business-man (I am tempted to add “hacker” to include a hacking or innovative mentality and “quality engineer” to ensure quality, but that list is getting too long).
I will pause for a moment to let it sink in.
Jeff writes,
In the past, project teams were large, and it was possible to create a team with a bunch of developers and other people with the requisite skills. These days, thanks to better programming tools and high-level platforms and services, very small teams can have an incredible impact, but only if that small team includes enough people with all of these skills. Instead of specializing, it is better to be a jack of all trades.
Ouch, I spent 6 years of my life studying computer science
! What is made extinct is the idea of large teams of developers with support groups that carry these other skills (refer to “The Mythical Man Month” – Fred Brooks, to see where the idea of support and specialization within teams is documented).
I read the above and I thought “That is so true, he is dead right”. I would base my hiring strategy on this rationale. There is really no such thing as just a practicing computer scientist any more (thats not my profile for sure, seriously). Paul Graham also has a note on how computer science and software engineering are misnomers. – he calls them all “hackers” and “painters” interchangeably. But he stops short of telling us that the good hackers don’t specialize.
If you specialize in one language, or platform, could it be that your thoughts and efforts are constrained? So many other software development organizations out there continue to persist on the large development team theory (especially here in Pune).
I will add “Leadership” skills to the list. When your team’s stuck in the mud, it is very important for someone to step up and lead. A good friend of mine really believes this to be a necessity especially within small teams of people.
There are a few other questions we do need to think about. What do you think jack’s (of all trades) resume will look like
? Also, I still believe you have to be an expert in one skill at least. Finally, Teams that are too small teams are also a drag (2 or fewer). 3 or 4 works better in my opinion.




