Codecademy has been gathering a lot of attention in recent times with many people, including Mike Bloomberg, pledging to learn code. The high-profile pledges shouldn’t be taken too seriously: they are just friendly endorsements for the well-funded startup that Codecademy is. And some of the others are perhaps well-intended, but the equivalent of New Year Resolutions, never to be followed up for any significant change in the person’s knowledge or skills.
For most people, not spending their time on learning programming is a good thing, because:
- Most people are good at (and work on) something other than programming. It is a better use of their time to become better at what they do.
- Programming may not even be a useful secondary skill. Many people would benefit much more from improvements in items like financial management, formal writing, presentations and so on, that help them in personal and business situations.
- Experienced programmers have already created hundreds of thousands of programs to solve most needs that require programming. Just take a look at the App Store.
- There are very few, if any, unsolved problems that can be solved with a cursory knowledge of programming.
- Many people struggle with basic programming concepts that even programming as a hobby or entertainment is not an option.
Experienced programmers who have huge codebases floating in their brains all day, may find this strange, but many people find elementary algebra and logic too hot to handle. This is even true for those looking for work as programmers. Let alone things like recursion, polymorphism and pointers, people find it difficult to understand basic control flow constructs such as conditions or loops. Forget programming languages for a minute, think about something like Excel functions. Sometimes even smart business people find them challenging beyond the most simple formulas. To the extent that they can use brute force to solve some basic coding challenges, they will start drowning in code when they try to write larger programs beyond “Rock, Paper and Scissors”.
I am not sure where this falls on the nature versus nurture spectrum. Is it possible for someone who has not demonstrated any aptitude for programming-related skills to overcome those deficiencies and become a good programmer over time? Perhaps, though I have come across very few examples. Most people are happy doing what they have been doing and a combination of risk averseness and lack of time combine to keep them where they are. It works the opposite way too. I suppose a good programmer may, with hard work, become a good physician. I haven’t seen any.
A complicating factor in all this is that code is taking over jobs that people do. Think of the professions that have been made obsolete with increasing use of software. There are many people who would willingly trade their jobs to be in the shoes of the programmers writing the code to displace them. Unfortunately, the usefulness of tools like Codecademy is limited because not only do you need much more than an introduction to programming, you need solid experience plus a bunch of educational credentials. The latter usually means a computing diploma or degree (from an educational institution) that can get you in front of an interviewer.
The people who would most benefit from learning code or at least understanding how code is written are the people who interact with programmers in their professional life. Take designers, for example. Programmers love designers who understand how good layouts can be implemented well on the web. A designer who just knows Photoshop and cut-and-paste CSS/JS makes it difficult for everyone involved. Or other examples:
- A tester who can write a well-maintained set of automated scripts for functional and load testing.
- A project manager who understands how complex a particular task can be in code instead of measuring its impact solely by front-end changes.
- A recruiter with the ability to accurately appraise candidates through meaningful technical questions and doesn’t get fooled.
And so on. In technology, we are obsessed with programmers. But there is a much bigger set of people that deal with programmers directly or indirectly. It makes a lot of sense for them to improve their knowledge of programming as a secondary skill so that they can do their primary jobs in a much more informed way.