Please Do Learn to Code

Tuesday night was not a happy one in the “Land of Rob”. First off I read this post from Jeff Attwood which argued that it is pointless for “normal” people to try and learn to program. Most depressing. Then I watched some of The Matt Lucas Awards Show, a rather vacuous and self-congratulatory program where the “celebrities” were invited to identify the subjects they hated most at school. One said “Maths”, another said “Computer Science”. They followed up with examples of why they hated the subjects so much, and even brought on an obviously very talented maths teacher just to make fun of her. Ugh and Ugh.
Two sides of the same coin. An expert telling non-experts not to bother learning their subject and two apparently “successful” people who seemed proud of the fact they hated the same subject. Two rules I work by:
- Never be proud of your ignorance.
- Never dismiss those who you think know less about something than you do.
The only great thing about this is that today Scott Hanselman, a proper computer person and almost a celebrity, turned up with the perfect response in his blog.

This post from Alfred is pretty good too.


Reader Comments (9)
http://sachagreif.com/please-learn-to-code/
The pro-coding post said "learn as much as you can! you don't know when you'll actually need it!" while the con-coding post said "It puts the method before the problem and concentrate on less".. both equally true!
The real issue in this debate is the fine line between expanding your horizont and learning something without actually knowing why.
On first sight it might seem that the the con-programming article should loose the debate.. but it's not quite like that.. if you concentrate your efforts on learning from absolutelly every source you might find yourself bad at everything you do.. and that's not what you want. You must learn a few things best and from that point on more and more things but at much more lower-level to a point where you don't learn anything about a subject you stumble upon (because we are humans with limited resources: time, memory, energy etc. ).
So as in A.I. in C.S. you must 'train' a bunch of artificial neurons to handle a given situation but due to the fact that we have limited resources around us, we end up not being very efficient.. quite inefficient even in the case of some problems. (i digress)
Everyone should learn at their own pase and see where that fine white line is for them, a general solution is not available..
I think learning to program calls for two things -
1) The kind of talent that often goes with maths / physics / engineering degrees (although I have worked with good programmers with arts degrees and even good programmers without any degree at all)
2) The perseverance to do the work required.
With his electrical engineering degree I would expect Bloomberg to have 1) and to get where he did from where he came from I would expect he also has 2).
I think Attwood's suggestion that the most Bloomberg is likely to achieve is a 2-line infinite loop program in Fortran IV (a language I last used in 1981) is just puerile.
Regarding his anti-"everyone should learn to code" comments, as a chess-playing programmer I would like to see chess and programming offered as subjects in school as a matter of course, although not compulsory. As subjects they both have a lot to offer in different ways and are at least as worthy of inclusion in the curriculum as some other subjects. Admittedly, finding teachers capable of teaching them is another problem altogether ...
The riposte from Alfred Thompson which Rob mentions at the end of his post is truly excellent. At the end of his post he brings up another of Attwood's strawman arguments -
"It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally."
<OldFogeyRant>
1980: The highlight of the year for the first computer company I worked for was when they bought half a megabyte (524,288 bytes) of additional memory for the 32-bit Perkin Elmer machine we did our development on for a cool £50,000 (I was paid just over £5,000 a year).
The idea of anybody working on their own at home producing software systems to sell to large companies was just absurd given the barriers to entry.
1995: I was working as a freelancer for two other freelancers who had set up their own company and bid for development work from Digital (formerly the very successful company DEC). They won a bid to produce a system to run on Windows NT using MS C++v4.2, VB4 and SQL Server 6.0. My sidekick and I both bought MSDN subscriptions so we'd have NT4.0 plus updates, I bought the first VB4.0 box in town and our boss bought MS C++ and SQL Server and lent us the disks so we could make "off-site" back-ups. We still went into DEC offices to do our work but we could have the system at home on our PCs and if an idea occurred at the weekend we could check it out there and then. The possibility was there ...
1997: Working as a freelancer at another DEC site (in another European country) again on a PC-based project I had a boss who was enlightened enough to allow me to do certain work packages at home in my own time at an agreed rate. 80% of my time was still in the office but a full 20% wasn't!
</OldFogeyRant>
2012: Every Tom, Dick, Harry and Rob is advertising their services as freelance programmers on the web and some of them are even making a good living at it.
I'd go further. Now millions of would-be-developers with a Windows 7 PC can download the development tools for free from MS and write phone apps. MS will market and sell them for you and the limits of your success are defined by your ability, talent and imagination.
What was an absurd fantasy when I started out in 1980 is now commonplace.
When I am not at university or the job I still have alongside it to pay the mortgage, I am a songwriter and worship leader with my own band. I am not the greatest guitarist in the world, but I know enough to do what I need to do to lead the band. I am also not the greatest songwriter or singer in the world, but again there is enough skill there to do what I need to with it and create an occasional song that has an impact and moves people.
Programming is very much like that. It is not simply a case of being a programmer, or not being a programmer. Anyone can learn to program to the extent that it is of use or interest to them in their own situation. A professional programmer will be proficient in a number of languages and constantly learning more to keep developing (no pun intended) their skills.
For anyone else, there are useful things to be gained from being able to program ... from the band's point of view, when our lead guitarist couldn't find software to store songs, and display words and chords to use when leading, he wrote his own. We now use that software for the whole band, and I am starting to see ways in which I can take that software and improve/tweak it going forward.
It is not a black/white issue. There are degrees of "being a programmer", and maybe we nerds haven't made that point strongly enough for so-called "normal" people to understand, so they think it is an alien concept.