I didn't intend for Please Don't Learn to Code to be so controversial, but it seemed to strike a nerve. Apparently a significant percentage of readers stopped reading at the title.
This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2012/05/so-you-want-to-be-a-programmer.html
I fear you still don’t get it; people advocating learning to code are not advocating people become programmers. If you see this as a contradiction, think about it a little harder.
Barry – did you read beyond the first paragraph? Look for the paragraphs beginning with “On the earliest…” and a bit beyond.
I remember when Jeff Atwood used to post about code and real programming challenges and solutions. Those were the days. This “You should do (or not do) this because I know better” junk you’ve been posting is not something I find interesting at all. Guess it’s time to unsub the rss feed.
I think advocacy of “learning to code” is focused more on learning to exercise the sorts of logical-thinking skills needed to get code to work, rather than on narrowly-focused learning of only the programming language, operating system, or input/output device that happens to be trendy at the moment.
Coding is a side effect of solving problems not the other way around. I have to say that i agree with your article, writing code will become just a step in the evolution of creating software not it’s end like it is today.
Makes so much sense to me looking back. Everyone assumes that I am a programmer because my Dad is. Which is sort of true because he told me not to become one so I immediately tried it anyway and loved it!
Judging by the harsh reaction to your first post, I think many of our colleagues have become a little too obsessed with the programming part of their profession. We should be focused on building better solutions. Programming is probably no more than 20% of the work in delivering a solution. Projects rarely fail because of technical issues.
As others have blogged, we should be spending more time becoming better communicators and solution builders (and encouraging others to do the same). Instead it’s easier to have the same old programming arguments.
I think the issue some take with the “everyone should learn to code” movement is that it seems to put coding at the center of the information age, while in reality it’s just a small part of what goes into solving problems. It’s also the part that’s least likely to look the same in 20 years as it does today.
The main issue I have with the “please don’t learn to code” movement is that it’s pure whining, it does nothing to solve the purported problem. “Do what you love” is far from new advice. People who do what they love do not need encouragement or (much) guidance.
But, you know what? Codecademy and friends are already there, offering a structured way to empower people to do things they thought were out of their league. And they aren’t forcing anybody to subscribe and try to learn.
By all means, start a solvecademy or communicademy, I’m all for it. But let people decide what they want to do with their time. Whenever you take people off TV and Facebook and get them to instead acquire a skill, it’s a net benefit to society. And when you whine and say don’t without offering a similarly guided way to acquire a different skill, you are not adding value.
You are just whining.
This whole new “everyone should code” movement is based on the predicate that all marginally scientific pursuits can be helped by knowledge of programming (more importantly automation).
We have evidence too. Every time a tech startup attacks a new domain and conquers it we can point to that and say, if their competitors knew the first thing about programming (not necessarily the second or third thing) they would have realized there were some serious deficiencies in their business and corrected. Maybe they could have hired some programmers and survived.
There is still something bothering me about your stance, however I am not as eloquent and, probably more important, experience as you and have trouble to put those feelings into words. I am still going to try though.
Pretty much every area of life can be deeply interesting, learning about ancient civilizations, about their leaders the sorrows of the population about incredible statesman like Cicero. This is deep and fascinating. Researching a tiny molecule like ATP synthase, a tiny tiny motor on which all higher life is based upon. Interesting beyond description. Caring about an elderly or disabled another person, making their lives better. Deeply touching and fulfilling. I want to highlight that one can find something a person can enjoy and be fulfilled of everywhere. This I think at least we agree upon.
So why not programming? I find your attitude exclusionist and maybe somewhat elitist. Problems in computer science in research and programming in general are also deeply interested. Every person should be exposed to a wide array of fields. So again why not programming? If the person you told us about had been exposed earlier to coding. His spark might have been ignited sooner and he might have had a very different and maybe more fulfilling career path. Maybe. Who knows?
I am troubled by your “survival of the fittest” approach to programmers. I know a lot of, in my opinion at least, programmers with incredible amounts of potential who think of themselves as not good enough and are in constant doubt of themselves. This is especially prevalent in the few girls in CS that I know. They are interested in coding, for a good reason, because it is interesting. The social stigma that programmers are supposed to be male, your “the toughest will survive” attitude (again as society at least pictures: a male) makes that even worse. There is not a single reason why girls or anyone should be excluded from this party.
You might be tainted by the black sheep, the ones who fail at FizzBuzz and still proclaim themselves the grandest programming being on earth. But that is just a vocal minority, the ones that are for whatever reason secure enough in themselves (or maybe desperate) to apply for random jobs they are not qualified for.
To sum this up, I think that we are actually agreeing to a large extend. Do whatever rocks your boat. Do not become a programmer in hope of a fat paycheck without having the passion for it. But I heavily disagree with your conclusion. Stumbling upon the programming world should not be a random occurrence like hacking a game you enjoyed. That is a random fluke; it might not happened for whatever reason. Maybe your family might not be able afford a computer, maybe they would not allow to experiment with it. So the recent “Learn to Code” campaigns are important.
Through the German education system I was exposed to coding in the sixth grade, if I recall correctly. I had learned through a similar path as yours a lot more a lot earlier then what I was thought in school. For other kids, that was the first time they had to solve a problem using explicit and exact instructions for a machine. I stuck with it, others did not. So what? I was exposed to a lot of things that I find are a “cute” way of spending ones time with at best. Things others have spent a lifetime studying or working with. But I am still incredibly glad that I was given this possibility. The possibility to get interested in something that might fulfill me. Is that not exactly what you want? Why the exclusionist attitude then?
When I was in high school and college, we took chemistry classes. I learned basic chemistry, some of the tools chemists used, what issues chemists deal with.
I’m not a chemist today. But those classes gave me a basic understanding, which allows me to talk a bit more with chemists I may meet, and which help me understand social or political issues that may involve chemistry, and which let me judge whether a career in chemistry was for me. (It wasn’t, and that’s OK.)
It seems reasonable that everybody might want a similar level introduction to programming. They don’t need to become master programmers, or code every day, or even code ever again. But it will inform their interactions with coders and code issues as these intersect their lives in other ways.
A programmer falls in love with programming naturally. You can’t force someone to make great programs. When you program for the very first time itself and don’t enjoy that, then probably you wont’ find it interesting later either.
Almost all the great programmers i have read about were interested in making their own stuff from the beginning itself. The energy and will power to make great products comes automatically if you really love programming.
Interestingly, i posted an article with the same title as yours roughly 2 weeks ago. So, you want to be a Programmer
You concluded this post perfectly. If you enjoy programming and making stuff, then just go ahead with it. Don’t care what others tell you to do.
I’m not sure why there is so much drama surrounding this meme. Honestly, if programming was for everyone, everyone would already be doing it. Would I like programming to be easier so that everyone could be doing it in the future, even if that put me out of a job? You bet! There are other things in life that I could jump right into and honestly find as interesting or even more challenging then twiddling bits in a computer.
I find myself getting deeper into the inner workings of software not because I love it or agree with the process, but because I think it’s been done incorrectly all along. Looking forward to more people involved in coding and hopefully tearing down the tower of Babel that’s been constructed these many years.
Jeff> what do you suggest is the best way to teach people basic digital literacy if not through code? I imagine that we differ on what basic digital literacy actually means…for me, it’s e ability to understand how a problem can be abstracted and broken down into something solvable by, say, a for loop. Ive worked with a lot with otherwise very smart and digitally literate (they know how to use Twitter, Excel, even Access) but they still don’t grasp why it’s important, for example, to not mix “true”, TRUE, and “Yes (see note)” in a column in a spreadsheet meant for programmatic parsing. I don’t think this requires knowing how to use gcc or memorizing the classic design patterns, but I’m at a loss to understand why logical job professions can’t understand these concepts. The result is that as programmers, we spend a lot of time writing code to compensate for fuzziness…which is a headache for the client and future programmers to maintain.
Maybe there’s a way to improve data literacy without programming, just like there’s a way to teach word processing without the actual use of a computer…but successes have been few.
I wrote a response to your original essay, demonstrating the use of simple code to simplify a common problem in fashion photography (for smaller operators), Others in more data-dependent fields can obviously think of more…I think you vastly underestimate the digital ignorance of non-coders
I haven’t even read “Please don’t learn to code” but I agree with the sentiment one hundred percent.
All the things that could be learned by coding can be learned by studying math, physics, poker, go or pretty much anything else that engages the rational mind. It’s only when one needs code that one should learn to code and if one can learn the previously mentioned things than learning to code should be no problem at all.
This reminds me of when my linear algebra teacher told the class that we were going to skip UL factorization because one never needs it and if one does need it and can’t learn it from reading the book then one is screwed anyways.
Learning is for donkeys unless you need it. Learning how to learn is where it’s at.
I remember just learning to code and looking at the compiler and the API book and thinking “There’s no way I’ll ever learn all this stuff. It looks really hard”. Then, as I was doing my assignments I began working on programming problems and remember being thoroughly enthralled with solving those puzzles, making the computer do as I wanted and hunting out those bugs.
I remember that feeling of working for 10 - 14 hours and being disappointed that I had to go to bed - and waking up in the middle of the night with a solution to a problem.
If coding is what you love doing, then do it. Don’t do it because someone tells you it’s important to know.
I think the anger expressed is somewhat coming from our inability, as programmers, to provide the tools that users actually need. Spreadsheets were great advances, taking financial calculations out of the domain of programming and into the handles of the financial workers themselves.
Since then, we haven’t seemed to be able to find anything but macros and visual flowcharting to take “end user programming” to the next level. So instead of finding ways to allow end users to automate their tasks and configure their computations, we are throwing “learn to program, noob” out as a “solution”.