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: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:
- It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that's true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can't even code, so please pardon my skepticism of the sentiment that "everyone can learn to code".
- It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79k/year after attending a mere two and a half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your ten thousand hours like the rest of us.
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.
Thank you for reading this Techdirt post. With so many things competing for everyone’s attention these days, we really appreciate you giving us your time. We work hard every day to put quality content out there for our community.
Techdirt is one of the few remaining truly independent media outlets. We do not have a giant corporation behind us, and we rely heavily on our community to support us, in an age when advertisers are increasingly uninterested in sponsoring small, independent sites — especially a site like ours that is unwilling to pull punches in its reporting and analysis.
While other websites have resorted to paywalls, registration requirements, and increasingly annoying/intrusive advertising, we have always kept Techdirt open and available to anyone. But in order to continue doing so, we need your support. We offer a variety of ways for our readers to support us, from direct donations to special subscriptions and cool merchandise — and every little bit helps. Thank you.
–The Techdirt Team
Filed Under: code, jeff atwood, mike bloomberg, nyc
Reader Comments
Subscribe: RSS
View by: Time | Thread
Byte my Bits!
The comments there had already (quite vocally) expressed the same opinion I would have expressed:
[ link to this | view in chronology ]
Re: Byte my Bits!
[ link to this | view in chronology ]
Re: Re: Byte my Bits!
Thank you.
[ link to this | view in chronology ]
Re: Byte my Bits!
[ link to this | view in chronology ]
Re: Re: Byte my Bits!
However, time has shown that I despise bureaucracy, and so I code.
[ link to this | view in chronology ]
Re: Re: Re: Byte my Bits!
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. ;-)
[ link to this | view in chronology ]
Re: Byte my Bits!
[ link to this | view in chronology ]
Re: Byte my Bits!
Writing anything beyond 'Hello world.' requires logical thought process, something which is sorely lacking in politics and many other places in society.
[ link to this | view in chronology ]
Re: Byte my Bits!
[ link to this | view in chronology ]
Re: Byte my Bits!
So many people don't know in the slightest about how to think logically.
[ link to this | view in chronology ]
"Programming Hero"
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.
[ link to this | view in chronology ]
Re: "Programming Hero"
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.
[ link to this | view in chronology ]
Re: Re: "Programming Hero"
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.
[ link to this | view in chronology ]
Re: Re: "Programming Hero"
[ link to this | view in chronology ]
Re: Dunning-Kruger Effect
[ link to this | view in chronology ]
Re: Re: "Programming Hero"
"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.
[ link to this | view in chronology ]
Re: Re: "Programming Hero"
You just described most perl programs, although I usually describe them as looking as though a cat has walked across a keyboard
[ link to this | view in chronology ]
[ link to this | view in chronology ]
[ link to this | view in chronology ]
So called elitism.
Being able to create precise instructions and being able to precisely follow instructions are both very important to understanding how a computer works.
[ link to this | view in chronology ]
Re: So called elitism.
[ link to this | view in chronology ]
Re: Re: So called elitism.
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
"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.
http://www.randsinrepose.com/archives/2012/05/16/please_learn_to_write.html
[ link to this | view in chronology ]
Re:
It often seems to be the case that those who can express their thoughts cogently in prose can also do so in code, and vice versa. Is it then any surprise that obtuse specifications often result in unreadable, nonfunctional, unmaintainable code?
[ link to this | view in chronology ]
Duh.
[ link to this | view in chronology ]
Prideful ignorance makes you an easy mark.
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.
[ link to this | view in chronology ]
Re: Prideful ignorance makes you an easy mark.
Whoosh!
[ link to this | view in chronology ]
Re: Re: Prideful ignorance makes you an easy mark.
Ever laid tile or run romex?, blah, blah, blah...
Whoosh!
By the way, its Romex, not romex.
[ link to this | view in chronology ]
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.
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Re:
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.
[ link to this | view in chronology ]
Maybe not programming but 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 a2f2a.com 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.
[ link to this | view in chronology ]
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.
[ link to this | view in chronology ]
Re:
[ link to this | view in chronology ]
Valve approach
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.
[ link to this | view in chronology ]
Re: Valve approach
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.
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Scripting and hard coding are not the same thing
[ link to this | view in chronology ]
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.
Doubt?
https://en.wikipedia.org/wiki/Parrot_virtual_machine
[ link to this | view in chronology ]
You left out his main point!
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.
[ link to this | view in chronology ]
Can you understand the theory of relativity without understanding the math behind it?
[ link to this | view in chronology ]
Re: the theory of relativity without understanding the math
[ link to this | view in chronology ]
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Learning to do anything
[ link to this | view in chronology ]
I could see someone not being interested, but actively discouraging people from doing so is rather counter-productive.
[ link to this | view in chronology ]
Developed nations need "everybody" to programme
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.
[ link to this | view in chronology ]
[ link to this | view in chronology ]
subway tile
subway tile
[ link to this | view in chronology ]