Ask a lot of people about the requirements to be a computer programmer or software developer and they’ll probably start talking about computer science degrees and years of formal training. Those things don’t hurt but they’re not strictly necessary, either. I personally do not have a degree aside from the accounting diploma I earned from a local college many years ago. I am certified by Microsoft in Windows application development, a certification I earned through self-directed and cooperative study with a few co-workers. Most of what I know about programming is through self-teaching and experience. Nevertheless, with my current experience, all I have to do is post my resume and send copies to a couple of recruiters and my phone starts ringing. It’s about the demonstrated skills, not the paper.
It still doesn’t happen overnight. Employers typically look for at least three years of experience with specific programming technologies, five is better, and they’ll be looking for experience with a collection of technologies because developers often have need of three or four on any one project. If you want to know the typical requirements for a programming position, I recommend a quick search of Monster.com or CareerBuilder.com for terms like “software developer” or “computer programmer”. (You should specify “computer” or you’ll get a lot of listings for CNC programmers which are something completely different.) I use variations on these terms interchangeably here although they can mean different things. One is very often, but not always, the other.
The job listing search is an occasional exercise I recommend even for experienced and employed programmers because the popular technologies are constantly changing. Of course, even employed software developers often find themselves checking these sites because the annual turnover for programmers can be rather high. A survey by CompData placed the 2008 turnover for high-tech employees at over 20%. Bear in mind that the economic meltdown didn’t become apparent until late in 2008 and over 17% of the turnover was voluntary, meaning the employees decided on their own to jump ship. The reasons are numerous and some might seem trivial to someone who is accustomed to holding on to a job at any cost but we are talking about highly-skilled technology workers in a high-demand field. When I say high-demand, I’m talking about the demands on the employee as well as for new employees. Again, this may seem surprising to someone in a more physical job like construction or maintenance but it’s true. Unfortunately, that truth has not caught on with the companies that are failing to keep the valuable employees who can take six months to train and be truly productive in any one position.
More than Writing Code
The most important skills for a qualified developer probably won’t be clear from the average job description which will often be written by an HR person with a fondness for abbreviations and product names they can list without having to understand. Those skills are basic problem solving and a talent for system analysis; the skills that enable a person to accept a project from a manager or customer with fairly vague requirements and then to break that assignment down into more specific requirements by asking the right questions, tackle each one and design a solution that will not only meet the entire specification but will anticipate the needs that the manager or customer hasn’t mentioned but expects anyway. You might remember your teachers trying to show you the problem solving part when you were faced with those word problems that we all hated so much on tests. I remember preferring the nice, quick True / False questions but it turns out that real life is often about as far from that kind of question as you can get. The rest can either be taught only by experience or can’t be taught at all. Some of it comes down to empathy for the user’s situation and some of it comes down to simple aptitude and talent for a specific field. For this reason, the need to find truly qualified and talented software developers leads to some very unusual job interviews.
Notice that I haven’t talked about writing code? That’s because as much as programmers naturally love to write code and as important as quality code is, it’s one of the last steps in the process and one of the easiest. Software development is an engineering field. This means that it’s about much more than assembling a product. As I stated above, it starts with making sure that the project requirements are complete and often doesn’t end until the software has been deployed and the users are providing feedback. That’s called the Software Development Life Cycle (SDLC), another acronym you’ll see on Monster.com.
Also, as engineers, programmers and software developers who want to pay the bills don’t always get to play with the fun theoretical code problems unless it’s on their own time. Usually, they will be responding to real-world business needs in various fields from healthcare to banking and dealing with all the regulations, issues, problems and even politics that are raised in those fields, including the knowledge that their work ultimately impacts the business customers. Even if a developer is designing computer games, he or she still works for a business with a financial bottom line, deadlines to meet and customers to satisfy.
Why do it?
All of this is said not to scare you away from programming or software development but to make you aware of the realities of such a career. That’s part of what I want to do with this site. Programming and software development are about much more than sitting at a computer guzzling coffee and typing code late into the night. While it’s possible to work your way into the field without a four-year degree, it’s not a cakewalk, especially since it’s not one of those jobs that you can just leave behind at the end of the day. This type of intellectually intense and sometimes high pressure work will follow you home at night, even if you are not cursed with carrying a company cell phone. If you are the type who actually enjoys solving complex problems and designing systems, it’s not an activity that your brain can just switch on and off.
In a perverse way, that’s why I do it. I started my career in the 8 to 5 jobs filled with routine work that I could leave behind at the end of the day and the only challenge was in dealing with office politics or a control-freak boss. For all the pressure, uncertainty and trials of a career in software development, it’s work that I love because I am using my abilities to their fullest. I love the almost physical feeling when all the neurons are firing and my brain is in full analysis mode. I get a rush from watching a section of code work right for the first time, especially if I’ve been wrestling with it for awhile. It’s satisfying to watch a system take shape and know that I have a hand in its creation. I do it simply because my brain is wired in such a way that I delight in programming concepts and it’s what I get the most joy from doing. It’s who I am.
If you feel like any part of that might be true for you and you want to learn more, then keep reading …
(This article is updated from an article series previously published by Comeau Software Solutions.)