“You should know how to code, your children should know how to code, and you better hope to god that the milk you’re putting in your coffee came from a dairy farmer with 5+ years of development experience building high-performance, fault-tolerant applications capable of easily scaling for high-bandwidth traffic. Experience in Scala and/or Clojure preferable.”
Quite the exaggeration, but to some — including myself — this is what various versions of the “everyone should learn to code” philosophy probably sound like. I believe these kinds of exaggerations are why some software developers are taking the recent explosion in tweets, blog posts, articles, and for the most part, crusading initiatives to get everyone to learn how to code as a threat.
To clarify, I’m not arguing the merits of this philosophy. What I was hoping to present were some personal viewpoints on the idea and what it tries to convey. It definitely does have some potential merits; on the one hand, it would be advantageous if more people did understand what it was developers do at work. In that environment, I can easily imagine expediting projects and meetings if non-software developers had at least a minimal understanding of the programming languages, data models, libraries/tools, frameworks, etc., in use at the company. Outside of the office, another plus would be that my parents — who are not computer illiterate to say the least — would know what it is I do at work (and where their money went putting me through school).
On the other hand, this philosophy does have another possible contribution; the general public gets a better understanding of just how difficult it is to actually program software. But this is the point that I think is actually being masked by the philosophy; the threat that I think some developers may be feeling is that the general public is being led to believe what we do is so simplistic that anyone and everyone can do it.
As humans, I think this is understandable. For the most part, we all probably want to believe what we do in our lives is worthwhile — why else would you be doing it? When that thing is based on a certain skill-set — probably gained over years of school and/or personal and hands-on experience — it can be diminishing to be told everyone should know how to do it too. To clarify, not all the versions of the “everyone should learn to code” philosophy exemplify this and I have found some that clearly state that a minimum understanding is the point. But, again as humans, mixed emotions do arise when your profession is compared to a 4-day course (or worse, an 8 hour course with 1 hour break for lunch). Seriously though, this is not a potshot at schools and courses that teach programming. I know those courses are useful for both the amateur and the professional. My qualm is with what the philsophy could possibly be doing to falsely convince people to take such courses.
Having programmed for more than ten years — both in an academic and industry environment — there is at least one thing I can say for sure: programming is fun. But that is not a feeling shared by everyone — including some software developers! The best version of this philosophy is the kind that is aimed at primarily getting people interested in programming and helping them realise this is something they might enjoy partaking in. The philosophy shouldn’t prioritise benefits such as the improvement of your profession, or a way to reach the top of your company, or a way to get your start-up started. I love talking to people and colleagues about programming because at the very core, it is a hobby. If anything, this philosophy should be about attracting people who may have never thought about programming as something they could enjoy — personally and possibly as a career. Beyond that, the philosophy should secondly be about at least having people understand minimally what programming and software development are all about.