To Learn or not to Learn

(with apologies to Shakespeare)

This week has been rife with opinions on what people should or should not do.

Jeff Atwood started it off by pleading with the world not to learn to code. His rant centers on what he calls the "everyone should learn programming" meme or movement which he claims is growing. His prime example? Mike Bloomberg, mayor of New York City, who tweeted earlier this year of his New Year’s resolution to learn to program via Codecademy.


On the strength of that single tweet, Mr. Atwood comes out all guns blazing with the scathing opinion that as a public official whose job description doesn’t encompass writing code, Mr. Bloomberg should stick to the tasks taxpayers are paying him to do and leave software programming to trained professionals.

An interesting position which has caused quite a bit of virtual ink to flow.

Of course, this assumes that Mr. Bloomberg’s intent is to learn and/or program during the work day rather than as a hobby outside of the demands of his employment. I can find no indication of this in the mayor’s tweet.

Perhaps the example wasn’t best chosen so let’s investigate some of the other arguments presented against the populace learning to program.

Apparently, there are "those", an undefined group of people out there, who, we are told, argue that programming is an essential skill that should be taught to our children in school. Our author views this as preposterous in light of the fact that the mayor of New York would unlikely be better suited for his job had he learned about pointers, functions and recursion in school. Strangely enough, in Ontario where I live, as well as in many other constituencies, music, visual arts and physical education are required courses until a child reaches a certain level of high-school education at which time they can choose to continue or veer towards other subjects. I wonder how many of those particular skills have been of direct use to the mayor in his current position?

Ah, perhaps that particular argument wasn’t fully thought out so let’s just move on.

Mr. Atwood proceeds to relate the writing of software as being limited to the solving of a problem. I agree that software can be used in that manner but my 12-year-old son is currently spending all of his spare hours programming his very own game. He is writing many more lines of code than strictly necessary because he’s in the process of learning how to program. "Refactoring", "abstraction", and "inheritance" have recently become part of his regular jargon and he’s even writing tests to ensure his code works according to his very own specifications. He is doing this, not because a tangible problem exists that must be solved, but because he’s curious about how games are built. Best of all, he thinks programming and being able to see his characters move on the screen and do as he directs is great fun!

Perhaps the drive to learn programming shouldn’t be exclusively reserved for the gifted few who, from day one, are capable of producing the most concise and perfect solution to a problem vetted by a third party as truly worth solving.

Scott Hanselman said it best in his rebuttal: "You don’t need to learn to code, you don’t need to be an expert in everything but know that you can learn." Zed Shaw’s insight is also one I can relate to: "If you attach your identity to being a programmer, then changes like ‘everyone can code’ will lead to resentment because you are no longer unique."

I happen to be employed as a software developer though I do take guitar lessons in my spare time. Will I ever use this skill in my day job or steal a session guitarist’s job? Not likely. What are you learning today?