When I was 15, I learned C++. My high school computer science teacher, either oblivious to C++’s insanity or confident that it didn’t matter, steered us through recursion, Towers of Hanoi, the whole beginner’s lot. I coded a checkers program while the first day of the Iraq War played out on a huge tube TV near his desk. It may have been the last real program I ever coded – courses at my high school had a habit of declining and falling somewhere around mid-March, crushed by addiction to March Madness basketball (a bigger deal in Kentucky than anywhere) and the “it’s warm so school’s almost over!” mindset. I didn’t take any CS in college.
My only tangible reminder of CS’s existence over the next 5 years was a friend who, sitting across a lounge table from me while sipping Hoegaarden, cried while refactoring a final project in 2007. I didn’t stay up nights wondering how to solve problems through code. Even the explosion in the iPhone’s popularity during the summer after I graduated (2008) did not prompt me to dust off a compiler and punch my ticket as a maker or tenant of the “sharing economy” (blah).
So how did I end up almost burying myself in an intensive training for would-be Web developers? I was moved in part by my time at a software startup, in which I handled customer support and occasional product management duties. I was made to feel very unimportant while there, perhaps since I didn’t even code. The company’s CEO made a big deal about engineering being the core part of the organization.
During the summer after I departed, there was a strong desire to prove I could cut it, that, yep, I could code and fit into a certain culture. Plus, there was the swelling attention to coding as a nouveau rich profession, on par with being a physician, even. Learning to code would solve both my self-perceived skills gap and secure my financial future, my logic/instinct went.
What a weird approach to changing my life’s direction. I was accepted into the program in early summer 2013 and spent nearly the next year reading books about Ruby and JS. I completed scores of tutorials. Nothing seemed to help, but maybe it seemed that way because I was looking for solutions to problems that didn’t exist. Per Jeff Atwood:
“[Wanting to learn to code] puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?”
Nope, I sure as fuck was not sure. I was instead carried but some vague BS presumption that me “being smart” etc. would let me grind through the preparatory materials and the actual 9-week session on-campus. It would be like going through med school or law school, except on a really tight schedule, I thought – just make it through, and I’m golden.
I didn’t like to code. In this sense, I wasn’t that different from the many individuals who soldier through training to become healthcare professionals, only to realize that they don’t even like the healthcare environment or responsibilities, with the exception that I came to my realization early.
But coding is unique at this stage in time because of the overwhelming social pressure and marketing behind it. Everyone needs to learn to code, we’re told, because if can’t program then we’ll be programmed. There’s a lot that’s off about that sentiment – technology is not some immutable godlike force (weird how many of the most nominally atheist people on earth can get behind nebulous collective forces as “technology,” “the Internet,” and “progress”) but a manmade technology shaped to the interests of its makers.
Moreover, society is built on the idea that not everyone has to know how to do everything. Imagine a world in which every woman was her own doctor, dentist, farmer, grocer, cab driver, etc. It’s scary. What would happen to professions and income? Would everyone end up reliant on government assistance (but would government even exist if everyone had learned how to be a politician?) The logic of training everyone to do everything isn’t all that much different from that of automation, which I suppose shouldn’t be surprising. Automation, too, is predicated on the idea that what individuals do or like doesn’t matter.
How many people know how indoor plumbing really works? Or electrical grids? How many are knowledgeable of Latin and Greek, which gave shape to the more technical parts of the English language and in turn created much of the culture in Anglophone countries, right down to it values oratory and extroversion? How many are carpenters, capable of building a house from scratch and not having to rely on someone else’s labor or designs? There are so many skills essential to the construction of society, and most people have no expertise in any of them, nor the realization that they lack it. And that’s ok! If they had to worry about that all the time, they would become automatons trying to cover all bases, without any time for the few things that they really like.
But what about money, you ask? The jobs situation around the world seems to have deteriorated over the past half decade, and the future looks grim, with “automation” (read: capitalistic corporations) set (destined? why stop short on the crypto-religious rhetoric..) to take many more away. Wouldn’t being a programmer be great insurance against being put into one of the shantytowns were they keep anyone who can’t work well with automated systems?
Yes and no. For now, coding attracts all sorts of people who would probably be better off doing something else. Many similar individuals were weeded out of the profession during the 2000 dotcom bust, which may happen again. It’s true that coding is financially lucrative, but what kind of profession is it, really?
Atwood has compared it to plumbing and being a car mechanic (the second analogy is apt). It isn’t defined by academic achievement. What would stop it, too, from someday being subsumed by the masters of automation? There’s the strong political/cultural barrier of coders not wanting to make their own profession obsolete (through creation of tool that make it easier to create software), but as stated above, society is overrun and in fact ruled by many people who know nothing about code and would gladly preempt the interests of coders for others.
Ok, ok – so if someone shouldn’t learn to code, then what about all those other disciplines? Should everyone skip mathematics and English, too? Slippery slope arguments abound. Plus, the pro-coding/learn to code advocates will quickly tell you that coding is important to society’s education
“The reason, why everybody should learn to code is not to have more programmers! It is only to have people know the most basic things about the technology they use everyday so that companies, advertiser and politicians can not trink them as easily as they do right now.” – commenter on Atwood’s post quoted above
How naive. Even if someone knew how to analyze Java code line by line, what would that do to stop someone else’s political motives? The code is secondary here – it’s an instrument. Would being experts on traffic engineering make ordinary citizens better equipped to oppose highway construction projects that are likely motivated by economic and political reasons (and not by the characteristics and limitations of development tools and frameworks)?
I’m not sure technical knowledge is what is needed in either case here . What is needed is the ability to be skeptical and engage in argument as needed. Code isn’t where the power is. Code is a vehicle, and vehicles change over time. If this were pre-Reformation Europe, “Latin” would occupy a pedestal similar to that of “code” in the 21st century; it’s an implementation detail, and all it would take to disrupt is someone who could initiate a breakthrough similar to Luther’s decision to translate the Bible into German, removing the exclusive sheen of Latin. Even many of today’s most successful “tech” startups – Uber, AirBnb, Groupon – exemplify the vehicle model, since they’re taking on fields such as hospitality and transportation and software is simply the means, not the end.
Many like me will likely have better results with learn to code initiatives and bootcamps. I realize that I had an unusual set of obstacles to overcome, on top of the skepticism expressed above. I’m introverted and opposed to the idea that individuals have to step out of their “comfort zones” to grow and learn. The comfort zone is a necessary construct for supporting the idea that social discomfort is the road to enlightenment, when in truth it can be a detour and a distraction for anyone who is ill-conditioned to respond to such disruptive external stimulus. I’m also lukewarm about the oft-touted panacea of “collaboration” and “sharing,” which are thin wrappers over extroverts feeling like they have the right medicine for everyone.
I withdrew and felt enormously relieved to be free of my fixation on closing an imaginary skills/professional/”technical” gap. If someone truly loves programming, then she should by all means pursue it. Society needs programmers! But it doesn’t need a new class of workers forced to learn and apply a skill that it doesn’t like or need. The current direction of education also makes it hard to endorse absurdities like treating code as an acceptable foreign language, or forcing elementary school children to learn it. Let’s focus on giving people environments to learn what’s important to their lives, and teach them to communicate with other human beings, whether that involves code or not.