A couple of months ago, a friend of mine shared an article about Code Year on Google+. The idea of learning to code with a year of straightforward online lessons was appealing, and so I signed up – and I am exceedingly glad I did. It has changed the way I look at computer programming, and the world. The timing was just right, for me – I had just finished reading Jerry Weinberg’s excellent An Introduction To General Systems Thinking, which I did not realize had prepared my mind to eagerly grasp the potential benefits of learning to code – even in a relatively simple, limited language like JavaScript, which is what Code Year is currently teaching. I couldn’t wait for the lessons to arriving by email – so I jumped ahead to what the people putting on Code Year, Codecademy, had going on already.
I discovered one of the most friendly and inviting self-education tools I have ever seen. It gave me an achievement! I love achievements. I want someone to give me achievements for writing fiction! Well, maybe not. At any rate, I swept through the lessons they already had available, enjoying each lesson more than I ever would have suspected. And then. When the first email arrived, with a link to that week’s lesson, I though I’d already done everything they had; I was wrong. Each week they are putting out a significant amount of accessible, quality educational content, and they’re doing it gratis.
I also learned something about programming. Writing computer code is not an exotic behavior, or a specialized talent that only a few can even comprehend. It is a basic, accessible human skill. I should have known; Heinlein told us as much in Time Enough For Love:
“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.“
I will admit that I have not put much practice into dying gallantly, though I hope I would be up the task if that’s what was called for. I have been putting a fair amount of attention into learning programming though, and it has been enormously rewarding. If you are reading this paragraph, it would probably be rewarding for you, too.
I don’t intend to work as a programmer for a living, though it might be nice to have the option some day. I don’t intend to write my own software for daily use. I am learning programming for essentially three reasons:
1: It is surprisingly easy to learn.
2: Working on programming problems helps me exercise the analytic parts of my brain that I rely on to live a good life.
3: It may help me solve a problem in some other endeavor later in my life, either directly (giving me insight into what’s may be happening under the surface of software I’m testing, for example, or allowing me to write a quick script to help me accomplish a rote task) or indirectly (software design and the behavior of computers, as with so many other apparently narrow disciplines, are enormously useful sources of metaphor that can be applied to many other areas of life).
If you are not convinced, the home page of Codecademy may yet convince you. I accidentally completed a lesson and was awarded an achievement within minutes of landing there, and was hooked. You can track – and publicize - your progress with a public profile page. Mine’s http://www.codecademy.com/profiles/jjarro.
If you sign up, or if you’re doing it already, drop your profile page in the comments and let me know what you think of Code Year!