Can You Understand How Technology Works Without Understanding Code?

from the yes-and-no dept

There’s an interesting debate that’s broken out in the tech world, kicked off by tech/coding superstar Jeff Atwood arguing that people shouldn’t learn to code. He was mostly responding to an announcement by NYC Mayor Mike Bloomberg that he wanted to learn how to code:

Jeff found this to be a misuse of Bloomberg’s skills:

A noble gesture to garner the NYC tech community vote, for sure, but if the mayor of New York City actually needs to sling JavaScript code to do his job, something is deeply, horribly, terribly wrong with politics in the state of New York.

He goes on to explain why he thinks this is a bad idea, even as he’s a fan of programming himself. I won’t go through his full list of points. You can read them on his site yourself, but it does feel like a lot of his complaint isn’t so much about people learning to code, but the idea that people learning to code will mean more people coding for a living. For example, there are these two points:

While I understand the points he’s raising in both of these cases, it feels like he’s taking the “everyone should learn to code” argument way beyond what is generally meant in that discussion. I don’t think anyone is saying that people should learn to code for a living. Lots of people learn math, but don’t become mathemeticians or even use math in their daily jobs — but it doesn’t mean it hurts to understand math.

In fact, I think that Jeff recognizes this. He notes that a better focus would be:

The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the Internet, work. Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.

And that’s something I think everyone agrees on. It’s just that some folks are suggesting that the way to better understand computers and the internet is if they have some familiarity with code. And thus, I actually think that Jeff and those arguing against him, may actually be in agreement. It’s just that some people think that understanding code is a good way to understand computers and the internet.

One of the better responses to Jeff points out that learning to code is different than preparing for a job as a coder. As that post notes:

Learning to program is not the same thing as training for a programming career. Learning new skills opens up new perceptual avenues and cognitive spaces. I’m learning to sew right now, not because the world needs another tailor but because I want to be able to recognize quality in clothing and create pieces that I can’t find. Novice coders feel the same way about their digital goods and should be encouraged to continue. Learn to program.

Perhaps where the major difference comes in is that Jeff believes that learning to code is not a stage in understanding computers and the internet, and he compares it to plumbing:

I can also recognize plumbing problems when I see them without any particular training in the area.

However, as esmoov writes in his response, Jeff may have just internalized what he has learned about plumbing:

He may not have had formal training (the professional/personal equivocation again) but he has been trained by an unruly digestive movement, a low water tank and the horrible things 18-22 year-olds do to and around toilets. My dad showed me how to fix a broken chain in the tank. Before I learned that, toilets had three states: working, clogged and broken. After learning to fix the chain, I added a new state to which my toilet-perception could resolve: loose or broken chain. Again, the ability to take in, cut up and categorize the world is a product of the things learned.

Indeed. I don’t think that learning the basics of programming solves all internet/technology illiteracy, but it certainly helps people to understand the lay of the land better. It’s not necessary, but it can help them better understand the problems and potential solutions when they come up — even if they don’t intend on programming themselves. It can lead them to recognize, for example, how bizarre it might seem to copyright an API or patent software itself. That’s a concept that’s a little harder to comprehend if you don’t understand programming at all. That isn’t to say that understanding programming is completely necessary, but it certainly can help in getting people to a point of digital literacy.

Filed Under: , , ,

Rate this comment as insightful
Rate this comment as funny
You have rated this comment as insightful
You have rated this comment as funny
Flag this comment as abusive/trolling/spam
You have flagged this comment
The first word has already been claimed
The last word has already been claimed
Insightful Lightbulb icon Funny Laughing icon Abusive/trolling/spam Flag icon Insightful badge Lightbulb icon Funny badge Laughing icon Comments icon

Comments on “Can You Understand How Technology Works Without Understanding Code?”

Subscribe: RSS Leave a comment
:Lobo Santosays:

Byte my Bits!

Read this on his blog the day it came out…

The comments there had already (quite vocally) expressed the same opinion I would have expressed:

In order to learn to code, one must learn to think in logical, ordered steps and embrace the basic if/then thought architecture (at a minimum.)

The importance of learning to code isn’t code, it’s just an allegory for learning to think.


Re: Re: Re: Byte my Bits!

decoding legalese is like trying to read spaghetti coded perl without comment lines ­čÖé

Still I can’t see it hurting much if it allows Bloomberg to see the amount of even the best code dedicated to copying data contained in variable “copyRightTroll” into variable techdirtPost before posting the contents of the variable. Just to see how much processor time is dedicated to copying things around that have nothing whatever to do with “piracy”.

I’d be a little more concerned if he was learning that other bastion to spaghetti code called PHP though that would make the NYC web site a whole lot more interesting, I’m sure.

That one would mean becoming used to the Web and Internet and having to learn about how it works. Not entirely a bad thing for a politician to learn about.

If that’s what Bloomberg wants to do by learning how to sling code around a bit then more power to him. Maybe he’d learn about the true meaning of the word “hacker” which is used by the media to describe what “crackers” do. ­čśë


"Programming Hero"

My wife uses the term derisively to describe coders who understand how the stuff works and when a problem arises, “Don’t worry, dear, I’ll take care of it for you.” leaving her with no clue as to how the machine works or where the booby-traps are.

Yes, there is a fair gap between “Learn Perl in 24 hours” and building a professionally-polished system.

But keeping “the peasants” ignorant is the fastest way known to man to destroy a free society.

Mason Wheelersays:

Re: "Programming Hero"

It’s not about “keeping the peasants ignorant.” It’s about the Dunning-Kruger Effect.

The barrier to entry for programming is very low. Anyone who has a computer and knows how to use a search engine can easily get started at zero additional (monetary) cost. And if you read a few tutorials, it’s easy to produce a very simple program that works right.

The problem is that once someone’s done that, they think they know how to write programs, and they don’t. They know just enough to be dangerous, and they don’t know enough to do more complicated things well, or to know that they need to.

Software development is an engineering discipline that doesn’t look like it needs to be one, and that’s the problem. A lot of times you can do something in a very bad (but obvious) way and it looks like it works just fine, and if someone who knows what they’re doing tries to explain the problems, the obvious (but wrong) response is to say that they’re over-complicating things for no good reason.

And these obvious-but-wrong issues don’t really start to bite you until your code becomes large enough and complex enough that going back and fixing it is a serious hassle, assuming you even know enough to recognize the nature of the problem. And so you end up with a really bad program and no idea how to fix it.

Jeff Atwood has a good point when he says that people who aren’t good at programming shouldn’t get jobs as programmers. Easily half the bugs I have to deal with at my job as a programmer (and pretty much 100% of the ugliest half) come from a few specific people who got hired without knowing the engineering parts of programming. A lot of the code looks almost like someone vomited all over a text editor, and I’d really prefer not to have to deal with it, but they give it to me because the people who wrote it don’t know how to fix it.

So yeah, I don’t think we need to “keep the peasants ignorant,” but to extend the analogy, we need to keep the peasants who are too ignorant to realize that they’re still peasants and not skilled craftsmen out of skilled craftsman work until they’ve learned enough not to write horrible code.

:Lobo Santosays:

Re: Re: "Programming Hero"

You’ve made a very valid point, thank you.

Half of being a genius is having the ability to recognize and admit when you were wrong–this is why there are so many stupid people in the world, it is the teeming mass of those people who cannot see their own mistakes, or admit to having made a mistake if they see them.


Re: Re: "Programming Hero"

This has nothing to do with professional programming. That’s where the problem is. It’s like if John Carmack tweeted, “Gonna start playing Basketball on thursday nights! #exercise” and Michael Jordan responded with a blog post detailing how there are too many professional basketball players and that people shouldn’t learn to play basketball.

“We don’t want a huge bastion of bad programmers writing terrible code and causing more work for everyone” is a solid sentiment with good backup. “Don’t learn to program in your spare time” is not.


Its a noble gesture and might just be an eye opener, but I doubt he’ll have the wherewithall to really understand the interworkings of technology underpinning the ‘big picture’ politicos would like to affect. For that he would need the time to create a time travel machine, go back to high school, break up with his girlfriends and drop sports. Popular people just don’t have the time to embrace if they don’t have a knack.


Re: Re: So called elitism.

I think it’s just a context thing. The mayor basically said, “Woo I’m learning programming in my spare time!” and Jeff Atwood replied, “WE DON’T NEED MORE PROFESSIONAL PROGRAMMERS!” Hopefully Mr. Atwood has no problem with more people becoming hobbyist tinkers who write some code in their spare time.

Michael Longsays:

The majority would be much better off learning to communicate in English…

“However, there is a language you could master that teaches many of the same lessons, appears far more forgiving in terms of syntax, and has immediate broader appeal. The language you can learn is your own.”

If you can’t even form a coherent sentence in a proposal, letter, or email, I’m probably not going to give you a chance to prove that you can write a coherent program.


Prideful ignorance makes you an easy mark.

Ever laid tile or run romex?

It gives you an entirely different perspective on “luxury” home. In fact, you may find a “luxury” home completely intolerable once you’ve don’t your own brick laying.

Given that a house might be the most significant asset you ever own, it might be worthwhile to do some relevant volunteer work just get a better handle on things.


Well I think it’s good he wants to learn but still coding does not define technology. It defines a small part of it only.

There are many crafts when it comes to technology. There are people with so much expertise in their field it can amaze anyone. But that person with all their knowledge in their field will be just as amazed when they see a Jedi in a different field.

Look at the companies that product awesome computer hardware. Then the companies that product hardware to help hardware companies produce their hardware and so on.

Technology is a term that none of us could ever fully begin to comprehend. There are too many skills required to just get it all.



Actually yes. I was discussing this with someone who said they needed a COBOL developer and this discussion was in the summer of 2011. They have legacy systems laying around and also had really old database systems that could not easily be ported to something new.

I must be too inexperienced with databases to understand how rules can be so complicated that you can’t port from an old database to a new one and create rules to perform the same domain (real world) to database mapping.

Either I’m naive and too green with DB’s or the people they had offering their expertise were the non-programming programmers. I have experience with one like that who switched to CS because she did well in a Java course for some business program. She could not understand how to take three single function (“main”) programs and merge into a single program. I was dumbfounded at how she managed to get into CS, especially at UWaterloo.


Maybe not programming but protocols?

Something that helps bridge the computer/Internet illiteracy gap is understanding protocols.

I’m not talking about having someone memorize them, but if you want someone to understand why when they plugged in their new printer and it didn’t work.. it helps to explain how devices talk (though technically USB should have fired that up to the OS with an interrupt, but I digress).

My family does not need to learn to code, but I try to get them to understand what is happening. I use analogies that help them remember. Think of the old RS232. Request to send, clear to send, etc.. Easy analogy, you’re at a bar, you make initial eye contact and smile, that’s request to send, the woman smiles back, that’s clear to send.

In terms of explaining how the Internet works, I’ve had the privilege of trying to do that on the now non-existent which was intended to bring artists and fans together. The intent was to open communication between the two parties and help artists understand how technology benefits them and how consumers can understand the value of investing/supporting artists.

Quite often that barrier of background information existed and explaining things became tiring. Some just don’t want to get it, but coding would not have helped.

What does help is to explain that, the content you are viewing right now was copied from one computer (server likely) to your web browser and is sitting in areas of your memory (or in the case of Windows, being stored and retrieved numerous times to/from your harddrive – cursed virtual memory management).

So in this case, explaining HTML or database coding wasn’t necessary and even if the artist understood SQL they would not understand TCP/IP. So it would benefit more by explaining how computers communicate and how data is exchanged, hence protocols being of high importance.

While I don’t completely agree with Jeff, I do think there are those who don’t apply perspective after learning some programming.

I have in my time seen far too many people who learn a bit of coding and feel they can now code with the best of them or that their insight has equal value to professionals on technical consultations.

It’s as though they’ve learned to drywall their own basement and now they feel they’re ready to trump your design decisions on a 20-storey condo development.



Happens with everyone on both sides. Sometimes the people who have been in the business for a long time ALSO forget to take a moment to look at something from a different perspective. Everyone’s guilty of it, though, I grant that the younger or newer programmers certainly have a greater tendency to do so. I don’t think it’s a problem with “new” programmers per se, but a problem with people who are incapable of seeing their own faults or have problems learning.

Valve approach

Was reading the Valve staff handbook yesterday (don’t ask) and one of the things they mention there is that they are a software company, even if you’re not a coder, every thing you can learn on the way adds to the value you can bring to the company.
In an increasingly technological world I think this translates wider as well. Whilst most of us won’t be programmers, knowing a bit about how these things work can help us all.


Re: Valve approach

Whilst most of us won’t be programmers, knowing a bit about how these things work can help us all.

Reading through all of this, I’ve been thinking of the judge in the Oracle vs. Google java kafuffle. The judge was a programmer and still writes code. When the lawyer for Oracle said some dinky little function was obviously stolen, he knew enough to call him on it.

Knowing enough about something that you can call BS in situations like that is a good thing. It keeps people honest. He may never build the next great thing, but who cares? He can buy it when the specialist comes up with it.


Scripting and hard coding are not the same thing

Stating the bleeding obvious but… Scripting and compiled coding are not the same thing and never will be. Everything seems to be called coding these days… But while scripting can make a web page or make calls to the software API, real programming code makes the software and API. Cutting and pasting a few lines of script can be taught to almost anyone… Real effective programming needs long hours of experience and a real programmers brain.


Re: Scripting and hard coding are not the same thing

I disagree, scripts and compiled languages are just front ends for the machine code, there are ways to make scripts do things if you know how, heck you can translate one language into another so it doesn’t really matter in what language you write anything.



You left out his main point!

I’m disappointed that Jeff’s main point was left out of this article. You’d have to copy the whole thing to provide 100% context, but his last few sentences are key:

Please don’t advocate learning to code just for the sake of learning how to code. Or worse, because of the fat paychecks. Instead, I humbly suggest that we spend our time learning how to ?

– Research voraciously, and understand how the things around us work at a basic level.
– Communicate effectively with other human beings.
These are skills that extend far beyond mere coding and will help you in every aspect of your life.

I agree with Jeff completely. Learning to code is great but it’s rarely the right tool for solving a problem. If your problems can be solved by coding then by all means get to coding, but learning how things work at the most basic levels will help people everywhere better define their problems and will lead to much better results. Jumping straight to coding a solution doesn’t necessarily provide the best solutions.

Anonymous Cowardsays:

In my opinion, it’s better to understand the basics of communication (not that everyone has to read Shannon) and networking (not that everyone has to be able to understand network analysis, IP v 6, or how to do the math). Programming is what professional programmers do, and the really skilled ones are the best ones to do the programming – not the cheap folks billg likes to obtain from certain places, train for two weeks, then call them “java programmers”. No offense, but in my opinion, they don’t really qualify.

Developed nations need "everybody" to programme

I reckon not knowing how to programme in the 21st century, will be like not knowing how to read and write in the 20th. Just as our ancestors produced cave paintings, then speech and later writing, programming is the next evolution in the human journey and expresses our compulsion to exchange ideas and communicate enabled by cheap, easily accessible and readily available tools. Knowing how to code however is more profound than just another chapter in the history of human communication.

The act of programming is actually about accessing a raw resource and manipulating that resource to produce something with value added. Comparable to how a furniture maker manipulates wood to make a chair or a seamstress manipulates cotton to manufacture a dress. A programming language is imbued with the fundamental properties required to make derivative goods and programming is the discipline necessary to manipulate those properties. Programming is the new Crude Oil of developed nations.

Add Your Comment

Your email address will not be published.

Have a Techdirt Account? Sign in now. Want one? Register here

Comment Options:

Make this the or (get credits or sign in to see balance) what's this?

What's this?

Techdirt community members with Techdirt Credits can spotlight a comment as either the "First Word" or "Last Word" on a particular comment thread. Credits can be purchased at the Techdirt Insider Shop ┬╗

Follow Techdirt

Techdirt Daily Newsletter

Techdirt Insider Discord
The latest chatter on the Techdirt Insider Discord channel...
This site, like most other sites on the web, uses cookies. For more information, see our privacy policy. Got it