I was at a party recently kvetching with some fellow developers and managers of developers about how hard it is to find good talent here in Colorado. One fellow said he feared a return of the last days of the 1990s, when the hiring bar, and thus the quality of code produced, was drastically lowered.
On the way home, my SO asked why, in a time where many are having difficulty finding jobs, why everyone wasn’t a software developer. At first, I thought, why not ask “why isn’t everyone a doctor; we have a shortage of those”, but then I realized that it is not applicable. Especially if you are willing to be a junior developer, the low educational and licensure hurdles to becoming a developer, the remuneration, and the flexibility and intellectual challenges combine to make it a very attractive job. (Given I am a developer, I may be biased.)
I think there are five attributes you need to have, that progressively fewer people meet. (I’m purposely ignoring experience programming, because everyone was junior at one time.)
- Willingness to work in an office–it’s not everyone who wants to drive (or otherwise commute to an office), sit on their butt every day, deal with office politics, and miss out on natural light. Even work in a home office or a coffee shop, while alleviating a some of the above issues, is a lot of sitting.
- Computer literacy–a developer has to have a basic level of comfort with a computer. This is a filter that will probably become less relevant for middle class Americans as younger people who grew up with a computer reach the workforce, but for a substantial number of workers, computer interaction is tedious, confusing and irritating.
- A logical mind. Computers aren’t very squishy (fuzzy logic aside) and while logic can be learned by anyone, it takes work to think of the world in the kind of systems that can be modeled in software.
- Initiative. You’ll notice that throughout this, I talk about a developer, not a programmer. That’s because a programmer, someone who takes a set of specifications and codes them, is a job that is rapidly disappearing. Developers, who have a broader skill set, including, if need be, the entire stack from business analysis to coding to testing to deployment to support, need to have initiative. Initiative is, incidentally, a precious attribute for any position.
- Lastly, I come to the actual skills of the job–coding, business analysis, testing, etc. This is the last hurdle, and one of the smaller ones.
So, there are many good reasons why everyone isn’t a software developer, even though there’s plenty of software to be written.