May 15, 2012
The whole "everyone should learn programming" meme has gotten so out of control that the mayor of New York City actually vowed to learn to code in 2012.
10 PRINT "I AM MAYOR"
20 GOTO 10
Fortunately, the odds of this technological flight of fancy happening – even in jest – are zero, and for good reason: the mayor of New York City will hopefully spend his time doing the job taxpayers paid him to do instead. According to the Office of the Mayor home page, that means working on absenteeism programs for schools, public transit improvements, the 2013 city budget, and … do I really need to go on?
To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it.
Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That'd be ridiculous, right?
The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways.
- It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can't get behind that. You should be learning to write as little code as possible. Ideally none.
- It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
- It 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?
- 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.
I suppose I can support learning a tiny bit about programming just so you can recognize what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognize plumbing problems when I see them without any particular training in the area. 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.
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.
[advertisement] How are you showing off your awesome? Create a Stack Overflow Careers profile and show off all of your hard work from Stack Overflow, Github, and virtually every other coding site. Who knows, you might even get recruited for a great new position!
Posted by Jeff Atwood
"can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder?"
Because God forbid the man should have a fucking hobby! How do playing Tekken, or watching The Avengers, or eating cake, make you better at your job? Why the hell should they? Is it so difficult to imagine that he might like to do a thing that isn't related to running New York every now and again? Just as some people who aren't mechanics fix up cars in their weekends, and some people who aren't professional directors make movies in their spare time, some people write code as a hobby, and if you've forgotten that there can be enough joy and reward to motivate someone to spend time on a coding project for the sheer love of it, then it's probably a blessing you don't have to spend your working day writing code anymore.
I might point out to the vast majority of commenters that similar sentiments were all the rage during the first 'home computer' boom. 30 years ago. Machines like the Atari 400/800, Commodore 64, etc. made computers cheap enough that everyone would have them in their homes. Everyone would learn how to program and control this magical beast. The general public would benefit from learning critical thinking and logical reasoning skills, etc., etc., etc... Programming books were 'aimed' at the general public, even to the extent of a series where Sherlock Holmes was co-opted to use the Difference Engine (programming it in your choice of language!) to demonstrate how programming worked.
And, like most utopian ideas, it pretty much came to nothing. I got hooked a couple of years before this, when a grade school teacher brought in her TRS-80 Model I a few times for us to play with; by time this movement started rolling along, I was reading every computing magazine I could get my hands on, and enthusiastically embraced the idea.
When I got to college in '86, I volunteered as a monitor for the CS labs because I was on fire with the need to spread the gospel by helping out all the students taking their first 'introduction to computing' courses. (Many majors at this state university required the CS 200 'Introduction to Programming' course. I think it's instructive that within a year or two, the CS department came out with a CS 100 'Introduction to Computers' course for these students, that focused on things like basic computer literacy and how to use Microsoft Works.)
So what happened? The same thing that happened when "In the Beginning was the Command Line" was released 15 years later. A few people caught the excitement of tinkering with the system; the vast majority reacted with indifference at best, active pushback at worst. Because most people are more interested in using tech to do cool things, not in tinkering with the tech. Doesn't matter if it's computers, cars (how many people like to hot-rod their cars compared to the driving public?), home stereo systems (remember how important assembling your own component system used to be?), home theater (though here there's still a significant overlap between the hard-core hobbyist and the general public)... off the top of my head, I'm having trouble thinking of a tech-related field that hasn't followed this general pattern.
I'm sure the latest 'Learn to Code' initiative will follow the same basic course. A few people (relatively speaking) will try it, find out they like it, and learn more about how the machine works. A very few will actually find a calling and get good enough to work at a professional level. A lot of people won't be able to make that mental leap into thinking algorithmically, get frustrated, and drop it. And the majority of people just won't care.
i think this guy is being way too cynical, and this is coming from someone who doesn't think our civilization would survive an oil crash, so i know cynicism pretty well.
people aren't so one dimensional that they could be defined by their occupation and nothing else. the author implies that the mayor should just stick to his job, and as should every other non programmer. this is a terrible mindset. there's nothing wrong with programming as a hobby, and with it comes exercise for your critical thinking and problem solving faculties, which is not a bad thing, i'd say.
i don't see how this initiative is in any way a bad thing.
as for learning plumbing, hey, if you have free time, it's not such a bad idea either. plumbers are expensive!
i upvoted because **downvote != disagree**
I'm sorry but I think you totally misunderstood the point of the « everybody have to learn to code » movement.
This article is off topic.
I did learn math. I do not use it in my job on a daily basis, but it help me to understand the world I live in. I far away from being a professional mathematician.
I did learn physic. I do not use it on a daily basis. Still, I help me to understand the world I live in. I'm far away from being able to run the LHC.
I did learn french, english, italian and esperanto and basics of dutch. I far away from using all of them on a daily basis. Still, it helped me to understand many things. Still, I wouldn't advice you to translate your blog in any of the language above, except english, my cut paste skill is still working fine.
I did learn some mechanic. Still I'm unable to repair my car myself, but at least, I can understand how it work.
I can go on and on, but I think the point is clear. Nobody that is sane would consider that you can be a professional programmer easily. But computer are everywhere, and people should understand how they work. And knowing some basics of programming is a good way to do so.
Talk about constructing a bunch of fake arguments to make a point. You are right - if learning to code creates such sloppy thinking as demonstrated in this post, then it's best avoided.
"Can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it."
Well sure, but it's not about variables and functions, pointers and recursion. (Michael Bloomberg probably won't even learn a language that has pointers in!)
It's about things like learning how to define abstractions (in the abstract sense, not in the 'which keywords to use' sense). It's about learning how information flows and changes through an interconnected system. And crucially it's about learning how getting those things wrong can make it damn near impossible to get things done. These are crucial problem-solving skills.
As it happens, Michael Bloomberg is probably already pretty good at those things. I imagine one can't be the mayor of a city like New York and not already be pretty good at picking out the important details from the unimportant details. So I don't imagine that him learning to code really will make him a lot better at his job. That said, he's a thought leader - so him talking about learning to code means hundreds of people at least thinking about learning to code, and those people aren't mayors of New York; some of them will benefit from it.
And as Michael Bloomberg would no doubt be able to show us, there are other ways to learn all these things. But I've yet to see any that are as efficient and focused as coding other than studying pure philosophy, and that tends to go wrong because most academic philosophy is utterly crap (see http://paulgraham.com/philosophy.html).
God forbid people learn how to code as a hobby. You know, because it's fun and they actually enjoy doing it?
Everyone should learn to code != Everyone must code.
Jeff Atwood seems to imply that most people are implying the latter, but I think most proponents of the idea are suggesting the former. For example, a long time ago, I learned French. I barely speak it now, but it definitely made me a more well-rounded person and gave me a deeper understanding of English.
Most of the time, Jeff writes insightful posts, but this time, I think he missed the point.
Learn how to think. The 7 liberal arts - rhetoric, music, logic, arithmetic, geometry, grammar, and astronomy were the standard.
If you can think - both linearly and in patterns, programming will be easy.
Google 'the perils of java school'
Other things might be nice and make for nice people, but people can't think these days. Fast food cashiers can't make change without the register (shocked looks when I get exactly a quarter back).
My university had a series of "Programming for Non-Majors" courses.
Having tutored them, I'm pretty sure the whole purpose was to make the non-majors just go away.
Perhaps not so bad an idea.
On the other hand, it just might be a good idea if everyone were required to be trained in "looking through the menus of whatever program you're using to see if one of those commands might help you get unstuck."
Oh please. You want to talk about "meme", how about we talk about the meme of code bloggers who think it's impossible/irresponsible/foolhardy/laughable/pointless for the hoi polloi to learn to better use and understand the code and computing technology that underlies almost every aspect of their modern lives.
Why should developers learn lots of languages even if they will only use a couple for their entire career? Because it gives them a new way to think about a problem.
Same for the non coding mass, if they learn to code they might never use write any code for their job, but it teaches them new ways to look at problems in new ways - and that's a good thing.
When people say they are learning to code they really mean they are learning to solve problems and using code as the method to lean it.
How do we downvote this?
Bloomberg's written more code & developed a more substantial business than you look likely to.
Don't pick on him just because he's aged and in politics.
How angry do some of you readers get????
I'm feeling the heat sitting here, not even being the target of the anger.
Anyhow, there's obviously a lot of truth in what you've said in this post.
Others make the good point, that you owe to know a little about everything e.g. plumbing.
As someone working as a Software Developer, I have to say that it would do Business Analysts, project managers and others (in none-technical roles) in the industry much good to get an idea of how programming, and software development works.
As for Mr. Bloomberg...it's hard to disagree with the guy who's software runs on a big chunk of the financial systems!
Code (which I currently know close to zip about) IMO is part of a basic set of skills kids should have. As a volunteer for numerous organizations, I see this huge gap in how these offs are reaching humans. They can't utilize the awesome connections available through technology bc they do not know even the basics of how the online world works. I can't even effectively communicate w the programmers willing to help, I don't know my options, & idk if they r doing a good job (which I so know my geeky friends take advantage of which is fine but I'd like to be able to help). Anyways, like how you highlighted some issues the city could be focusing on but getting government to work for the people currently related directly to technology.
Richardathome has it right. Programming is not about code. It is about critical thinking, the process, more than anything. Now if we restructured other subjects (specifically maths and/or physics) we could perhaps get kids to do what I get paid to do. Solve problems. Sometimes it takes just talking, other times code, a few times even just retraining staff to do it right... But that analysing is what they should be learning. Maybe there even needs to be a problem solving course where you present kids with obscure problems and they have to solve them within certain limitations. They are told the problem, they have to probe it and find the reasons for the problem. Explain those. Try and find solutions within certain constraints. Hell, even through in trick problems.
Personally I would love it if people understood better how computers work. I do which is why people always ask for my help. There are things I see when looking at a problem that others dont because I look and think what would I have done to solve this and go from there.
Nobody learns to code, everyone who is learning programming is learning to build and have there own logic about how thins work.
The logic learnt can be applied anywhere and everywhere.
There is no need to learn the same by learning programming but programming somehow seems to me the best amalgamation of physics and maths, the basics.
So there is no harm in everybody learning programming, but the logic that you build needs to apply and find better solutions.
You just don't code meaninglessly.
Yeap i'm with the camp that advocates that Mayor Bloomberg, or anyone else, can choose to learn something new even if it is nothing to do with their job.
Or should musicians or artists or mechanics or carpenters also write discouragement blogs if he decided to learn a new instrument, oil painting, car engine tuning, DIY home improvement, respectively?
Hm. What I think: People learning to code MIGHT help them to think correctly. Basically, people should learn how to design programs, rather than the syntax of some language or other. They should also be taught to apply the necessary analysis and design skills to other areas.
I'm not explaining this very well.
As both a plumber and programmer, I'd be happy to see more people learning both. I'm a little tired of hearing 'Why does the [non-descriptive noun] do this [vague and unhelpful verb] when I tap the [unrelated object described using a made-up word]'.
The question shouldn't be: "Do or don't code", but how much.
Teaching secondary students bound to study English Lit in college, a month of text processing skills, could help them find that reference they need.
There is some efficient intersection for everyone between the time / opportunity costs of learning to operate a computer better and the PV[benefits] of that degree of knowledge.
This post with its muddled arguments really does feel like a "jump the shark moment", and it's left me with a strong urge to finally unsubscribe. How about making a distinction between programming professionally and as a hobby? How about not creating a false dilemma between learning to program and doing other important things? Bloomberg can both be mayor and learn to code beyond the stupid GOTO example. How about not making posts titled "Please Don't Learn ", especially if the "whatever" is an increasingly important and accessible topic, and especially if there exists a marked lack of learning habits in society? How about not using bad analogies, like between plumbing and programming? Maybe your logic isn't that sound if you need to use comparisons to significantly dissimilar things to make it compelling. Just ugh!
All activities that make one think help with other activities that require thinking.
Some people study languages for fun, just to keep their brains busy. Others paint or learn to play a musical instrument. Learning to code is not only a fun hobby (for those who like it) but it also trains the brain and can be useful.
Not everyone who learns French needs to become an interpreter. Not everyone who attends pottery class will try a career in the tableware industry. So why shouldn't people learn to code without it being part of a career as a programmer?
I feel that this was a pretty douchy post. If he wants a new hobby, why the hell not? It's not like he's a mayor 100% of his time awake.
People should learn what they want to learn, for any reason (yes, even hyped marketing campaigns), with only a few exceptions related to wackos learning how to make and use weapons, mostly.
Now, I agree that as professionals the focus shouldn't be on (just) programming and that research and communication skills are more important in general than programming skills. This is irrelevant to the point. Unless you are planning to design a course that most people could follow on those topics.
Although it's already been said I will say it again. You are wrong. Not everyone needs to be be a software engineer. Your plumbing example is a good one to illustrate. If your drain is clogged and drain cleaner doesn't work you could call a plumber. You could also use plunger or plumbers snake. Most people won't however because they think it's scary.
As for the Mayor, this guy is making decisions with respect to technology. How is it not a good thing for him to at least have a basic understanding on how it works.
I broadly disagree, although I see where you are coming from. The reason is that I've found coding useful in every non-coding job I've had where I have sat in front of a computer in an office...
Office jobs, and general running of any business can be improved with knowledge of code - as well as code itself imo. The understanding of how to define procedures explicitly is great - although humans are error prone I've worked with enough broken procedures to know that the vast amount of errors I seem to encounter when dealing with... everyone, could be reduced with some good practice.
That mayor should learn how to use Linux, and then implement in all public departments and schools. With that approach, he not only will save millions and millions of dollars in software licenses, he also will give a job to a lot of independent developers (not only to Microsoft) to implement great features to GNU software that will be available to all the community.
Judge Asup, of Oracle vs. Google, learnt Java for this case and the result seems to be great: http://news.ycombinator.com/item?id=3979899
"But Judge Alsup wasn’t convinced. He told the court he had learned to code in Java for the trial — implying that he knew other languages as well — and he said that he had written some of the infringing code at least a hundred times since Oracle filed its suit in August 2010."
This is a great post, and makes a great point. But I think it also misses the point of the "everyone should learn to code" meme, which would more appropriately be named "everyone should learn computational thinking", as my friend Roger Magoulas notes.
I don't think that the comparison to plumbing is apt. The comparison to literacy or numeracy or perhaps even public speaking is closer. Not everyone is a professional writer, but being a good written communicator has great impact on everything else you can do.
I'm thinking right now of two people I know in a small company, one in marketing and one in administration. Neither of them is a professional coder, but one of them knows enough to do tasks that are completely beyond the comprehension of the other. And that literally makes the first person 10x more capable.
And I remember early days in my publishing company, wishing that my production editors would learn more coding skills because it would have allowed them to recognize which problems were amenable to algorithmic solutions that they were currently solving by brute force.
And as to plumbing, I have to say that there's something to that too. Enough experience with any hands-on skill to know how to solve common problems is essential. You say that you know enough plumbing to recognize a problem. Well, a lot of people don't.
E.M. Forster wrote about the endgame of this kind of ignorance in "The Machine Stops." It isn't pretty.
"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?"
Well... one way to find out is to try to code it...
Or in other words, the questions that you are asking are the ones that are naturally asked - by a programmer.
I think maybe you are taking this a little personally, many, many people learn a small piece of other peoples trade.
I fitted my own kitchen, does not make me a kitchen fitter.
I fitted a new bathroom, did the plumbing and all, doesn't make me a plumber.
I wired up my oven from the junction box, doesn't make me an electrician.
I did all those things for 2 reasons, to save money and to achieve something, the other reason which I didn't find out until the end was to appreciate how hard those trades are, it's the same for programming.
Everyone will give programming a go, they'll do their own website and maybe write a little desktop app, doesn't mean they will, or intend to, become full-time programmers, or certainly to enhance their existing careers.
It's cool to code these days, just like it's cool for husbands to take on DIY :-)
It's not the power of code, it's the creativity of solving meaningful problems through the code. The benefit of a car isn't a faster horse, it's what it spurred as result. Suburbs wouldn't have happened without it. The highway infrastructure, the sprawl, the mobility, all impossible. That's the power of technology, and that's the power you'll give each of us by enabling us, at least on a fundamental level, to code our own solutions. [We are Code Academy].
You sound like the Wizard of Oz - terrified of anyone peeking behind the curtain. Computers are not magic. There is absolutely no reason people should not learn the basics of how computers and software programs work, given their ubiquitous nature. I do not use programming in my professional life, but I took programming courses in high school and college. They taught me how to construct a logical argument, break a problem down systematically, and chain together processes to achieve a goal. These are skills applicable to every aspect of my life, computer-related or not. Why anyone would advocate ignorance over curiosity is beyond me.
Personally, I'd settle for users learning how to use the tools they already have. Excel in particular (I spend a good chunk of my week fixing people's formulas and teaching what VLOOKUP does).
Programming is still mis-understood in the world - it varies between "oh, this is simple, why aren't you done yet" and "this is arcane mystical power you wield, please help me I beseech you", with little middle ground. (And oddly, the really simple Excel stuff is treated like dark magic, and the complicated database work is the stuff they think must be really easy.)
You point out that a bad programmer can cause lots of unnecessary work. That's relevant, but importantly, that destructive force is even more true when it comes to politics.
Now, in both disciplines it is obvious that you need to design well (code and laws). But only in programming it is really obvious that you need to refactor all the time. A coder is himself hurt when the code deteriorates or lose simplicity and structure. A politician is likely insulated quite a bit.
Laws are typically too complex, too intrusive, too buggy and non-coherent. Politicians commit pork-barrel nonsense together with important structural changes. Laws need to be constantly refactored and simplified to cause as little unnecessary work as possible among "customers", i.e. citizens and corporations, and also among architects such as lawmakers and laywers. AND it's important that laws are simple and coherent for citizens to be able to understand them and exercise their political rights.
This I would like politicians to learn from coding. The power and necessity of refactoring!
Saying that the Mayor of New York City shouldn't be interested in code because "he's got better things to do" strikes me as very backward thinking. What if he could update city websites or web scripts himself unassisted? What if he could create apps for New Yorkers to use? Think of the possibilities. Yes, things could go terribly wrong, but things go terribly wrong with dedicated teams of software developers. Just imagine the possible upsides for a minute. Or what people in other high authority positions could do if they knew how to code.
I agree wholeheartedly with your learn to write/communicate line of thinking. However, learning to write and learning to code aren't mutually exclusive.
How do you define coding? Making a table in HTML? Writing a Macro in Excel? Doing a little PHP or C++?
I'm not really sure it matters how you define it though; while knowing how to code may only be useful once in a blue moon, but when it is, it's worth it. How often do you use Algebra in every-day life? I certainly rarely need it other than when I am programming. However, having it as a tool in my arsenal of capabilities when I do need it means I can solve problems that I couldn't otherwise.
Basically, I'm of the opinion that you should never discourage someone from learning.
@macmnc said it best above:
"Programming is a *very* inefficient method of learning how computers work, or learning how problem solving works. Knowing how to write FizzBuzz won't help you understand why streaming is taking up bandwidth."
Also, the analogy is not between programming and plumbing, but probably programming and electrical engineering. Shouldn't all of use coders learn how circuit boards works and gates and transistors and all that shiny stuff on the motherboard? Wouldn't knowing all of those things help us write better code?
The answer is that it would help marginally and there are far better ways we could devote ourselves to become better coders; much in the same way that normal people would better their own computer literacy through other means than coding.
One final point: Jeff is not dissuading people who want to learn coding for a hobby or out of interest; he's attacking the notion that coding is a necessary skill that everybody needs to learn.
Try to take a longer view of the situation.
As human communication evolved from grunts to spoken and written language, there were most likely many stages of necessity along the way. It went from not necessary at all, to not necessary but beneficial, to absolutely necessary, with many stages in between.
This process never stops. At some point in the future, it will be not only necessary but commonplace to know how to speak and write logic in order to keep up with a society that is increasingly infused with and reliant on technology. It is inevitable that "programming" will become less and less of a specialty and more just "what people do" without thinking too much about it.
There's no need to worry about your office day job, though. You and I will most likely be long dead before this happens, just as scribes from thousands of years ago aren't bummed that there are no jobs on CareerBuilder where the only skill requirement is being able to write down words on paper.
So, in summary, as Reed Richards said, "Don't be a dick."
You should help to lead your neighbor, and should feel honored that you are at the forefront of something so much bigger than yourself. You could have just as easily been born in a place in the world where there is no written language.
Not everyone should learn to code. I think it works out okay the way it is now; people that are actually interested in coding and want to do something useful with it will because they love it. People that do it because they think that it's going to be a good career choice will do it and fail or work at mundane places where they can patch monolithic applications day in and day out. The ones that don't care will be lawyers or some other parasite.
I've taken the evening off to play Diablo 3. I've come back to re-read this post and the associated responses. (Including the "discussion" on Twitter; if you can even call it that.)
I have to say the criticisms of Jeff's post seem a bit undeserved. - Yet I can understand where they're coming from.
Jeff, I feel like you didn't make it clear enough that you are not dissuading hobbyists from learning to program. This, I feel, invited the opportunity for attack.
In a way, the title you've chosen and the visual aid you've chosen have invited an attack on an otherwise sound and constructive post.
However, I still think I agree with the fundamentals of your post. People shouldn't learn to code because of the money. Learning to do *anything* because it commands a high salary is simply the wrong motivation.
Also, programming is not a fundamental life skill. At least *not right now.*
In fact, I posit that if we as developers and designers do our jobs properly, we should need less programmers.
If you make increasingly better cars, you need fewer mechanics to keep them all running, no? Programming should be the same. If we create better pieces of software, it should take fewer people to keep the whole charade running.
Y'know, as the son of an electrical engineer, I've only just started learning about circuits and logic gates of my own accord. (http://www.amazon.com/gp/product/0262640686/ref=oh_details_o00_s00_i00)
So your post hit especially close to home.
Clearly it wasn't required knowledge, but it is certainly nice to know, and it makes things conceptually easier. I have to admit that I'm somewhat glad that my dad never said "you need to learn how circuits work! It is a fundamental life skill!"
Totally agree with you Jeff. Started "writing code" at 15 in high school in C and BASIC. Now a sophomore in college and working at a tech company and its not until working on a huge codebase you start to realise the less code the better.
I agree with your article. There is a difference between being able to write code and being able to design and develop software. And learning a specific language will not help a layman when looking at another language.
What makes sense, is to teach people logic and some standard algorithms and patterns. It would be great if the non-professional understood how programming works. When I was in college I took a course in computer logic. It was language agnostic and it involved creating algorithms to solve specific problems.
I totally cracked up reading this. Back in 80s and 90s, before programming became more specialized I wrote a lot of bad code, meaning it took me 20 lines of code to accomplish what a talented programmer could do in 1. These days people who provide graphic design elements to things like websites and animations do not necessarily have to code. There is greater division of labor.
I have nothing else to add except: THANK YOU! Sick & tired of hypes and memes like this that minimize the role of those who don't program, taking them away from what they may do very well to do something else very badly, and of those who do program, making them look insignificant and nothing more than monkeys who learned a basic skill.
This completely misses the point in multiple ways. Teaching everyone to code does not mean that everybody becomes an expert. It means that everyone is introduced to coding at a young age so more kids can become masters earlier if they want to (especially women and minorities who don't get exposed to it as much). It means that people who interact with technology every day (the vast majority of us) can understand a little more of what we're dealing with and be able to control more of how we want things to work (making up scripts and the like). It means being able to do coding projects for your job which will gradually take over most professions. If you think plumbers won't need any programming skills? You've lost your mind. Eventually toilets, pipes and the like will all be controlled by computers and code that will solve most plumbing issues. The earlier more people learn to code, the better they can be later down the line as more and more computer knowledge becomes necessary for the world. When people say, learn to code they ARE talking about solving problems with coding.
Also your implication that to get a job in programming you need to be an expert ie 10,000 hours is completely basis. That takes 5-10 YEARS! Most people don't get programming jobs or any job in their field that requires that much experience or else that'd be a whole lot of interns working for 5-10 years to get that experience. Ironically that supports people learning to code young so they can get those 10,000 hours of experience and get a great job out of high school/college.
Whether or not Mike Bloomberg learns to code, I can guarantee you that something is indeed deeply, horribly, terribly wrong with politics in the state of New York. But that's nothing new, and we're kind of used to it by now.
As for the article itself, I wholeheartedly agree with you. I have no intention of ever learning plumbing, because my time is better applied to other pursuits, and I can pay someone to do it for me. And most users shouldn't need to learn programming, they should find software that does what they want, or pay a professional to create it for them.
Sure, coding is a way to improve logic skills, but it's not the only way. People commenting act as if coding is the only path to thinking logically. Coders think you need to code to be smart. Go figure.
But if Bloomberg does code more, maybe he would spend less time ensuring that we don't feed homeless people without permission.
But then again, he would probably start to micromanage the way every New Yorker codes, so it's a tradeoff.
I think there is something fundamentally wrong within the software development community which results in this kind of misconceived, elitist opinions.
@Jeff have you ever tried to learn to play an instrument ? ...if you can already play, have you tried for instance learning to play Jazz ...or have you ever tried to draw ? ...or sing ? ...or dance ? ...or cook ? ...all of these are hobbies that require *a lot of effort* to become even reasonably good at. The professionals in these fields tho' /actively/ encourage everyone to participate in the fun ! What's wrong with software professionals ?
Encouraging people to code for the joy of it is what 'learning to code' movement is about -- it is about encouraging people to appreciate the 'art' of coding as much as we coders appreciate it.
It isn't too far back in the past that people from all walks of life were tinkering with this new kind of thought called science -- everyone from potters to painters, from farmhands to aristocrats were learning science. I imagine, there existed then too, a few elitist scientists, who like you, saw this as something bad ...for science, for progress ...for whatever. However, fortunately science and scientific thought turned out to be as much 'fun' then, as programming is today and the average kid out there asking their parents about the sun and the moon and why ships float and planes fly can get a reasonably correct (if not completely scientifically sound) answer.
If you thing this is a bad thing -- then you are consistent in your views. If not, your just hypocritical and elitist about software.
To end, as someone who has visited your blog plenty of times, I am surprised (and disappointed, tbh) that you hold this opinion ...tho' you do seem like a reasonable man who'd change his stance after a bit of thought -- I encourage you to think ;-)
"This completely misses the point in multiple ways. Teaching everyone to code does not mean that everybody becomes an expert. It means that everyone is introduced to coding at a young age so more kids can become masters earlier if they want to"
It's not that I'm completely opposed to this idea, but this borders on the now-popular idea of "teach every kid everything as soon as possible so they will be super smart".
"If you think plumbers won't need any programming skills? You've lost your mind. Eventually toilets, pipes and the like will all be controlled by computers and code that will solve most plumbing issues."
Most occupations now involve interacting with the computer in some way, but I don't think most of those occupations require programming knowledge. I imagine most plumbers will use the software without knowing the internals.
I have mixed feelings about "Learn to Code" and #codeyear.
On the one hand, I hate that for years the "suits" have lectured technologists and scientists to understand business and to adopt business speak. So it's nice now that the onus to understand is reversed a little. It has to be good for managers to have an appreciation of coding.
On the other hand, a great deal of the "Software Crisis" can be blamed on programmers themselves not really understanding what they're doing! For a couple of decades, we in software have tended to differentiate "software engineering" and yet we are still a long long way from professionalising what is more craft than engineering.
Code is so very unlike the stuff of other professions – soil and gravel, metals and alloys, nuts and bolts, electronics, even human flesh and blood - that the engineering analogy is misleading. By simply coopting the term I fear we have underestimated the fundamental challenge of forging a software profession. It won't be until software engineering develops the normative tools and standards, culture and patience of conventional engineering that the software crisis will turn around.
Meanwhile, teaching managers to knock up code could give them entirely the wrong impression. Coding should not be so easy.
More at http://lockstep.com.au/blog/software-engineering.html
"Talk with other programmers; read other programs. This is more important than any book or training course."
Quite right. But for all the resources available, it's impossible to find a good program to read. A class here. A function there. All interesting. But nothing with a clearly stated problem to be solved much less the solution provided that was good.
Programmers are a secretive lot, by nature. They/we write in code, just for starters. For finishers there's not much to be found.
Problems solved by code are rare if they exist. And what's the measure of a successful solution? Was it what was good today? Was it answering the question as asked (rather than the question meant)? Was it what got the money, whether it was good or not? Was it the solution that solved the long-term problem the programmer-analyst solved that no-one else knew, nor cared about.
Friends are calling. I'm running on 8,700 hours towards hitting the mark. Should I answer? I did not. But so what?
Shortcuts to finesse the details; who wants to pay for that? They stand more to gain by proving how hard it is. They don't know what it's good for. Better, in a world with 7 billion people, everything falls apart.
"But understanding variables and functions, pointers and recursion? I can't see it. "
So learning functions in High School (functions), and the how to find the greatest common divisor (recursive) is pointless? Hell, to solve a word problem you create an equation which abstracts away the instances in the question with a variable.
But you claim that learning arithmetic is fair enough. Should kids stop math after long divison?
This is really just programmers thinking their skills are indispensable. It's absolutely fine to have pride in your skills but always remember, if this was a plumbing website we'd be saying exactly the same things about plumbing.
Yes, we should be celebrating solving problems not coding.
Yes, there has been an overwhelming push for bringing CS to more people, but people can choose to do what they want with it. I would rather have access to it than not. CS for the last 30 years or so is like science before the Renaissance, only a few knew how to do it and the instructions were cryptic.
You say something is wrong if a Mayor needs coding to do his job. I'd actually prefer my elected officials to know how to parse and analyze data thank you very much. Plus, saying we shouldn't teach everyone to code because not everyone's job requires it, would be like 150 years ago saying we don't need to teach literacy because only a few people need to read for their jobs.
The point I tried to make in my post (http://weblogs.asp.net/jgalloway/archive/2012/05/16/why-i-taught-my-daughter-to-code-a-little.aspx) was that:
- The stakes are so much higher when comparing the risk of computer literacy to plumbing or automobile mechanics.
The return on investment (time and cost) is so much greater. A few hours (less than the time to watch a season of Glee) is enough to get a much better understanding of how the world works, and perhaps the beginning of a lot more. I know some people who have made careers out of building internet businesses and writing blog posts about software development! As I mentioned in my post, I know a lot of other people who applied some pretty basic coding skills to help in their day to day work, or ridicule Oracle lawyers. The sky's the limit!
"I point you to the Big Bang Theory as what mainstream does to your subcultures."
If you don't want to associate with novice programmers then don't. I'm learning to code for my own purposes, not to work in some code-monkey sweatshop and CERTAINLY not for the company of close-minded elitist pricks like yourself.
People who go out of their way to discourage learning make me ill.
We live surrounded by digital devices, I guess it's not bad to actualy know what is code, what it's useful for and to understand the logic of it. Doesn't any car owner need to know a little what's in his car ? I guess knowing about plumbing wouldn't be a bad idea too, even if I have no idea of it. If people just consume thing, and never make them, they end up "proletarized" (Marx), meaning they have no personnal control (or illusion of control, that is sufficient) on anything, they don't actualy own their life, they are slaves, without the comfort of being taken care of. Therefore, even if NY mayor statement doesn't mean much than if he'd have say "This year I wish to learn spanish or italian", I think a culture of coding can be a good thing to learn at school. It's important for the professional too, because it makes the amator able to explain better what he wants.
This is an excellent article that is being unfairly maligned. Probably the best line in here is "Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems", this is absolutely true, and I think today is driven by an obsession with techniques like Agile and a desire to build something, anything and start coding immediately without thought to what is being done.
I would also add that Software Developers are always attracted by the latest "brightest and shiniest" technology and are often completely oblivious to the deeper decisions that should be taken from a business perspective as to whether it actually makes sense to adopt the technology in question. But that's probably another article...
Why should everyone learn to code? If everyone learns coding we programmers loose our jobs. Likewise why not have everyone learn to build and repair cars, bake bread, navigate ships, build houses, be a math teacher or whatever profession comes up. Programming seems to be a fad right now and being a geek is oh so sexy. It's that coding is limited back to where it was in the 80s/90s: to the real techies.
Oh my god, I cannot believe there are people who don't get this. Really. The world is a lot scarier place than I thought.
The idea, you know, in code is to describe things in the world. It's not the other way around. And usually those descriptions are pretty bad. Usually all they do is to work out where the complexity is then run like heck to get away from it.
All that coding can really do for you as a human being is to constantly remind you of how dumb you are and how limited to your own little world view you are.
Look, there is a pattern! Wow! A pattern! But you are actually inside a pattern, yourself, already, now. Seeing the pattern is a pattern.
It took Christoper Alexander and his companions eight years to write _A Pattern Language_ . Who else has spent that time on a book about coding? Knuth, OK. But the next level up from there?
Essentially it is like, coding creates all these vast problems. Then coding solves a few of them. And we think we are geniuses.
People actually choose to code in languages that make all this process really involved and elaborate, because they feely even more like they are geniuses. I mean really, face it, there is nothing out there that is coded in Java that cannot be coded better and more cleanly in Smalltalk. Really. Or Self for that matter. But people love Java. They love C++. They talk about these little efficiencies they get. Meanwhile, processors have increased in capacity by a gazillion (approx.) since Java and certainly C++ came along, so what is the point, really? And concurrency, etc, will be solved at that level eventually. Not in code. Because code should be describing the world, not the way the world-emulating symbolic machine works. The code that enables the machine needs to do that, but not the code that engages the machine with the world.
It's nuts. Truly. Just nuts. And the great big wonderful programs that change the world? What do they get written in? Really? Fricken PHP. I mean. And not O-O PHP. Twitter. Facebook. Then they fall down. But it doesn't matter. Because they have MONEY!! If you have MONEY it no matter code all fall down. You buy more code. WHEEEE!! More code. Then you have Scala. Look, real objects. Look real class methods.
It's sad. But what's really sad is not understanding how great and funny this post is.
This is a publicity, I won't say stunt, but rather a "plug" for a fairly well known online training academy. Who by the way pocketed some $150,000.00 in their first month of operation so I've read (founder citation).
I feel the opposite to you. I don't think we're missing out at all on anyone with the passion, intelligence and capability to be a coder.
If you have those attributes, you'd already be one. You either have a love and passion for all things technical and not.
You can't be that smart and stupid at the same time.
The diversity amongst programmers is diverse enough, to say that I am uniquely different to you as you are to me. Though, I may share some similarities with others - we are all individuals with very unique personalities, that share one commonality being a love for code.
From this, programmers are stereotyped as being one particular one and one particular kind of breed, thus its easy to say all programmers are a like or that there is a lack of diversity within the industry - thanks to our ability to stereotype groups.
Just like I think all lawyers are sharks. See the problem?
I'd like to know where else the pipeline is broken too? I don't see it.
There are numerous paths and opportunities present at all times within this industry and if you can't find them then you need to stop listening to people who tell you "its hard to find a job within the industry because of x, y, or z". It's not.
This is a very, very clever initiative of Code Academy to solicit the blessing of our hire-ups in power to spread the word and that word is "come line our pockets with your money".
Marketing at its finest and I don't blame them if you consider the stupid amounts of money they are making, recurring mind you.
I lol'ed for 3 seconds until I realized you're a bit of a loose-cannon, jittery and all over the place with your birds eye view of programming and the world.
What are you doing talking about Java, C++, SmallTalk then whinging about PHP and finishing with some random comment about Scala?
Trying to get a grip on the point you're trying to make here. A language is a matter of preference and taste.
PHP is good language for web based applications. Hard pill to swallow, I know...
If you say its not then I'll assume you don't know how to code and that's the problem, if you don't know how to code, your code will look like shit and function just the same.
If the roles were reversed and Ruby was the popular language of choice and PHP were the far lesser known of the two then we'd be saying similar things about Ruby, in that half the code out there is shit and that's because of the sheer number of people writing shitty ass code versus the programmers writing clean, functional code - procedural or object oriented.
Its that simple.
Screw the little nuances between languages, you either write clean code that follows standards or not; but bashing on a language is stereotypical of someone who complains about the nuances between one lang-to-another, you're all the same but then you yourself say "so what is the point, really?" But then go about contradicting yourself by doing just that.
Breathe deep brotha and make peace with the code...
You make a lot of good points, as do the commenters. I think you point out that there is a general superficiality with regard to skills. A lot of people tell me "people need to learn calculus to get a good job these days," when perhaps they're talking in fact about certain numerical skills that are necessary, but are not calculus.
We should also ask cui bono? Certainly the people who would teach the incipient programmers benefit from all this talk of needing more programmers, as would the vacuous corporations that spring up around any excess of skill.
One reason I promote learning programming to science students in my university (not just anybody) is that writing a simulation program gives you a better idea of how certain dynamical processes work, and what the right questions are to ask than fiddling with an already written program. Guess where I learned this? In the course of my own research.
I would use a different reason to say that my son should learn programming: he likes building things, he likes robots and he's very technically minded. Also, programming is a fun thing for kids to learn. If he decides to use it later is up to him.
Consider also that I would rather have kids learning about programming than just learning what passes for computer skills in schools these days. I've recently toured a lot of schools and they get very excited when they tell me "Your son's going to learn how to use this this and this Microsoft product, so he'll be ready for the workforce!" The workforce of twenty years from now? Yeah, right! He's six. Teaching kids to use Word and Powerpoint (in deference to anything that empowers them) is just advertising for Microsoft.
However, you're right that teaching them to program so that they will grow to be "programmers" (as in, professionals) is also foolish. I would generally rather have them learning things that will help them be more learned than more marketable. It's tough to get anybody to see this point, or your points, when almost everybody believes that the point of doing anything is to make more money.
for me code has always been a useful tool, i want to do something i could grind it out or i can spend a little more time to make some code to do it for me, using code to make novel solutions, to query or manipulate data, to automate computer functions, or just to make my life and my work easier is what i feel code is there for.
i find in situations like this i like to look to harry potter
coding is like magic in the harry potter series, there are those for whom magic is their goal, who work to be the most powerful witch or wizard, and there are those who look down on people of lesser magical capabilities and see them as inferior, or that they should disappear entirely.
then there are those for whom magic is a tool, such as the weasleys, for them magic is a means not an end, an enchanted dish scrubber, or broom, different things performing tasks to make their lives easier and more productive.
and we should remember that sometimes its fine to use code as a tool, and that just about anyone can benefit from learning to code. there is nothing that says they must make elegant code, or production level code, or even share their code. maybe their code is useful only to them, i think we shouldnt discourage anyone from coding, and should encourage EVERYONE to code.
"Don't celebrate the creation of code, celebrate the creation of solutions."
I agree 100% with this sentiment.
We need to be teaching people how to think critically and solve problems. That solution may well involve getting someone else to do it for you because your own area of expertise lies elsewhere.
I think it's important for people to be at least somewhat technology-literate, because we're surrounded by so much of it now. But that doesn't mean they need to learn to code any more than I need to learn how to rebuild a gasoline engine because I happen to own a car. I do, however, need to know how to drive the car, and how to recognize when there's a problem which needs expert service or if it's a minor issue I can correct myself.
There's a significant difference between "learning to code" and "becoming a coder". Kind of like, "learning to write" and "becoming a writer".
Much of what is taught is schools isn't realistically thought to have day to day applicability for most professions. Learning how to think and building frameworks for understanding problems is what most schooling does.
Another side of the argument is, what valuable things are we avoiding based upon the limited understanding of basics of coding, such as logic, flow, etc?
To state that last point another way, what kind of things would we have avoided if understanding of basic arithmetic was missing? We can actually see examples from looking at times and places where it is missing.
Coding seems like a natural fit for general education because automation is a general need, and even if you don't really learn anything useful, you should at least have been challenged to improve your method of thinking. At the very least I think it may be a more appropriate context to teach the principles of logic than math, because it's naturally interactive.
"It's not about getting more professional programmers into the job pool."
Then why does the primary metric of success seem to be the employment rate and average salaries of the program graduates ?
I think your example of the Dev Boot Camp is a poor choice. When I read the article, I get that the point of the boot camp was not to quickly create programmers from non-programmers, but rather it was a class to teach Ruby on Rails. I would not expect anyone leaving that class to be able to code a network stack in C, for example.
To me, the point of these classes is really to teach a new tool to developers. Going to a job interview armed with the knowledge that you've attended this course and can actually apply Ruby "in the wild" is great.
try comment this:
Programming, the second literacy A.P.Ershov
in that meaning mayer NY is the programmer cose hi can plan self action then do it than again.
so by now Mandkind need that bigger than now piple can plan they action
How sad. Simple coding is getting to the point where it should be an essential or at least highly beneficial skill.
Bloomberg also is not a better mayor because he can divide. Should we not teach division?
Not everyone can be a programmer, but I see nothing wrong with large numbers of people being able to whip out a bit of perl to make something simple that takes a crapload of monotony out of their day. I am not a programmer. But being able to do a little bash scripting and a small amount of perl has made my life easier.
I'd rather more people learnt about computers in general, I.e. That a hard drive isn't the big box you plug the wires into.
I can understand the mayor promoting programming in his town, programming is probably the biggest source of worker migration in from a certain sub-continent and judging by the posts on StackOverflow, there are likely to be a lot of jobs available to clean up shonky code!
Your plumbing example is an interesting one, and I think you dismiss it too quickly. It is very valuable for a lot of people to have some simple plumbing skills. Do you really need to call a plumber every time you need to snake a drain? I can change a valve, or swap out a toilet, or replace a drain by myself. I wouldn't try to plumb a house (at least, not one I intend to live in), but having some basic skills in a lot of fields can save you calling some very expensive professionals, and allows you to better communicate with them when you have problems that are beyond your skill level. I don't see why any of us would object to people picking up some basic programming skills. I don't think the major intends to give up his day job to focus on his code.
"If coding was fun and easy, everyone would be doing it."
Coding is fun and easy. I've been introducing beginners to Java with my Teach Yourself books for 15 years, and I hear from people all the time who took programming up for the first time with the language.
I think Atwood's objections are bizarre. Everybody who has an urge to learn programming should try.
Whether it's programming or any other difficult field, it is a good thing when people want to learn it. Even if they never get past the basics, increased technical literacy is a good thing.
Atwood asks, "Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?"
I ask, how are these people going to know whether coding can solve their problems if they never learn how to code?
I'm glad this learn-to-code movement is springing up. Programming is a lucrative and valuable skill and some people will discover they have an aptitude for it -- and, even better, that they love doing it.
Will everyone who dabbles in programming like Bloomberg or reads my 24 Hours books go on to become an expert coder working professionally in software development? No. But every great programmer started somewhere, and I can't find a single drawback to helping as many people as possible get that start.
I don't think Mayor Bloomberg is the best person to serve as your kind of stereotypical paradigm of the "clueless old man talking about technologies he doesn't understand": he made his fame/fortune initially with his Market Master/Bloomberg terminals. I'm not at all a fan of the man as Mayor of NYC--but though he's a politician now, it's rather presumptuous/naive/stupid to use a fantastically successful tech pioneer as a clueless old man. Many years ago, he earned his BS in Electrical Engineering - as a student now he'd likely have pursued a course of study requiring more than a little coding. And the same could be said of students in many other fields - not only engineering - who studied and then entered the workforce decades ago. What's more - the need to code custom solutions rises in all sectors--though specialization piled on top of poor basic math/science education too often dulls people to the mere existence of those possible solutions.
You are arguing within very narrow professional boundaries (and even there making a false argument), while the Mayor and many others are arguing pedagogy. Parents and educators aren't concerned with algorithmic thinking with a mind to getting students to knock out code. I'm surprised that anyone who isn't a luddite or reactionary could seriously argue against innovations in math pedagogy...
What an idiotic, self-righteous post. Nothing more than link bait, Jeff. I guess we shouldn't bother to learn French or Spanish either?
It's discouragement like this, predominantly from crusty old programmers that make this field seem so elitist. Learn to code (if you want) because it's the language of the future, it's good for your brain, and it's fun.
I 100% agree with this post.
Extrapolating further, it is not necessary to learn everything there is to learn. This ridiculous idea that a "well-rounded" person is the most successful person is crap.
When's the last time I used math beyond basic algebra? Let's see.. math class! When was the last time I had to write a paper? Again, another class in college!
We waste so much time generalizing ourselves instead of streamlining the process (and information gathering) towards choosing a profession. Yes, you should be able to communicate and think logically, but beyond that it's entirely up to you what you want/need to learn.
The top reason classmates of mine have been struggling to get a job out of college (aside from lack of openings, as cited by potential employers) is that they were too generalized. And that's after they chose a major in college.
Other countries start offering courses to narrow your specialization in their equivalent of high school.
Bit of a ridiculous post here, Jeff. Arguing that someone shouldn't learn 'X' because 'X' is hard and there are already plenty of people doing 'X' professionally is a complete dead-end for me. It smacks of arrogance and elitism.
Any kind of education enriches the human experience. The more humans become enriched, the more our culture is enriched. It really doesn't matter how people use the knowledge they acquire - how else are we supposed to work out what we like doing and what we don't?
If someone has a desire to learn to code then they should be encouraged to do so, if only so that they understand just what is involved in being a full-time developer, and so they stop wondering why they can't get their business app developed in only a couple of weeks!
I'm certainly not concerned about the world becoming suddenly full of crap code, because, hey, it already is, in case you hadn't noticed!
It seems there are lot's of people here who think this post means that Jeff thinks that you shouldn't go out and learn how to code. I don't think that's the point of this post.
The point to me is that if you choose to do that, you should also make sure you understand what you're doing. I have more than once seen the havok of code written by people who didn't understand and trust me, it can bring down entire companies.
Read more about it in this post: http://jvdveen.blogspot.com/2012/05/writing-code-developing-software.html
The misunderstanding we're having stems from us thinking the skills we have are more important than they are and also, at the same time, selling ourselves short. It's the analogy with plumbers that bears this out.
We are not like plumbers. What plumbers do is more like what the Geek Squad does (and both trades are very important):
- Pulling a dropped ring out of a P-Trap is like restoring lost desktop icons.
- Unclogging a drain is like removing a virus from a computer.
- Fixing a leaky faucet is like setting up a VPN.
- Even running copper pipes to a new bathroom is more like setting up a router and running CAT5 than it is to anything coders do.
What we do -- trying to stick to plumbing -- is more like the guys who build dishwashers or hot water tanks or come up with new piping systems. Coders are more like the engineers that create machines.
So, should everybody learn how to empty a P-Trap or unclog a drain? Yes, in the same way they should know how to remove a virus or setup a connection to their router. Those are skills that everybody should know.
Should a normal person learn how to create a garbage disposal, which is more like the kind of things coders do? If they are interested and want to, sure, but that's not the point of Atwood's blog post, which was saying that coding is not a skill that is as important as reading and writing.
Building a garbage disposal might give you insight on how plumbing works and would make you more of a well-rounded person, but it certainly doesn't rank up there with a must-have skill, and neither does programming.
Nobody is dissuading people from programming or arguing that knowing how to program would be beneficial, but let's not oversell the importance and say it's as necessary as reading and writing.
A somewhat belated rebuttal:
You Should Absolutely Learn to Code
It's not about becoming a developer. It's about building a better mental model, automating your life, communicating with your teammates, and building better prototypes.
While not everyone can learn to program professionally, I would opine that everyone should at least be exposed to the basics of programming in school., just so they have SOME idea of how it works, and can appreciate the work that goes into a well-written program.
And using plain old regular basic. And BEFORE the "indoctrination to Microsoft word/excel" courses that seem to be the norm today. Or perhaps even instead of.
Well when I first read this post I did feel a bit like, "Hey new kid, don't code, your wasting your time", but I looked at it from a different perspective.
To me it seems that Jeff is just annoyed that the whole "everyone should learn programming" meme is kind of trendy right now. Yes, the whole 'geek' thing is played out in a way, but there will always be people that are really interested in programming and doing amazing things with languages like Processing, and SuperCollider.
I used to dj quite a bit when I was younger, and had a few friends that where dj's too, but now everyone and there mom is a dj! At first it was a little irritating seeing people buy dj stuff just to be cool, but hey, who cares! It's a trend, and trends eventually die out. The people that have enthusiasm for their craft will stick with it.
I think the reason for the coding meme right now is because of how the press/media portrays coders like David Karp, and movies like The Social Network. They make it seem that coding will bring you lots of money, fame, etc. So yes, the post is a just rant, and everyone does it all the time.
Learning of programming languages is not important for everyone. I do not see the need of a politician to be able to implement any particular software.
But I thing there is some misunderstanding in what a politician promote. You have to understand, that a political goal should not be taken too directly. By saying "I want to learn code" is more of a statement, a direction for more mathematical and scientific approach in your live. Its a motivation to many young people to make them understand that programming is not boring at all and is everywhere, from your smartphone to the electric city grid.
I am, as probably many here, a professional programmer. Yes, I agree that a few hours, days or even weeks of programming is not enough. But we think on a different level. The software we write is not the software a politician is talking about. Whether it is R for some financial calculation for a economy student or a programmable calculator - the spectrum is wide and the motivation to learn programming as a general statement remarkable.
This is one of the most ridiculous posts I've ever seen on the internet.
What an arrogant, egotistical, asinine opinion to have. You sound like this is some kind of elite club. "NO PLEEBS ALLOWED!"! In one part of your article you question why people would learn to code, and ask what it could possible have to do with their job. "It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it.
Seriously? How short sighted can you be? One might think a federal judge has no business knowing how to code, maybe you can tell that to Judge Alsup who was able to tell Oracle to get bent when they tried to baffle him with bullshit. He was able to do so because he sat down and said "Ok let's see what they are talking about."
Technologists complain every day because the people who are making the laws in this country have no technological background therefore no point of reference and they make bad decisions because of this problem. Sure we can hire experts to advice, but really how well has that worked out for us. I'd like to point to exhibit A, our patent system.
Learning to code teaches principles like problem solving, and abstract thinking. It allows the student to be master of a universe where their thoughts and creativity are the only limiting factors.
You then go on to say that coding for money is a bad idea. I'd argue that this movement SUPPORTS that line of thinking. The pandora box is open Mr. Atwood. And while, no everyone shouldn't be plumbers, or mechanics, or farmers. Being able to fix a leak, or change the oil in your car, or grow a small garden are skills that are vital. How about we stop trying to be so elitist. Embrace the population as they start to embrace technology. It has empowered us for over 30 years. It's time to share our toys.
Speaking from 20+ years in the software industry, I think this article (and its author) is absolutely on the money. Each of the 5 bullets highlighting the reasons why it is wrong for everybody to learn to code is absolutely true, in my opinion. Many people have commented that learning to code allows people to develop skills like critical thinking, problem analysis, etc. While I agree with that, I must also state that these are disjoint sets. Learning to code is not the only way to develop those skills. And, conversely, developing those skills doesn't guarantee that you'll code well. Every profession needs and allows the development of those skills, whether it is that of a civil engineer, a mechanical engineer, a surgeon or a pilot. To say that learning to code is the only way to develop those skills is extremely snobbish. In fact, even a habit of solving puzzles like Sudoku, etc. can help do develop those skills to a certain extent.
Agree that we should be encouraging automation, so that time doesn't have to be wasted on repetitive admin tasks. It's a lot easier to deal with specifying IT stuff if you have some appreciation of what's involved, and there are many improvements that would never be made without someone understanding existing solutions well enough to adapt them.
Knowing the basics of plumbing is also very handy.
Solutions vs code is a fair point, but it's like maths/English/science/etc... some of the basics have to be learnt by rote. Make it as fun as possible, but give people that opportunity to learn something they can build on later.
"Don't celebrate the creation of code, celebrate the creation of solutions." I wish every developer in the world prints that in their desks, and takes a look everyday. Forever. Might just solve a lot of world problems! :) Loved reading your thoughts.
I'm glad to see that I'm not the only person who strongly disagrees with you on this one.
Comparing programming to plumbing as a specific, special-purpose skill of little relevance to "the common man" seems quite frankly dishonest.
Somehow, you've produced a division between fundamental skills that everyone should have (basic maths, reading and writing) and very specific, non-transferable skills (plumbing, lawyering, programming).
Placing programming into the latter set is utterly bogus. To me, programming is a cousin of maths, engineering and writing. Not only can it help think in new ways and solve problems in a more structured way, but it can be used to help in practically any domain you like. Including plumbing.
You say: "It 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?"
What better way to learn how to do this than by learning programming? Isn't that pretty much what it's all about - think, figure out what the problem was, and what possible solutions you could create?
And if that's too difficult up front, to explore the problem and solution through testing and thinking as you go?
If your program solves the problem, your tests demonstrate it, and if not, then you keep working. Isn't that a fantastic way to learn how to understand and solve all sorts of problems?
I completely agree with you'r opinion, and i think those who argue that the initiative has some major benefits in the sense someone will get a grasp about what coding means...are confusing merely someone's job with someone's hobby. There is nothing wrong to get a sight and a minimal understanding about what's behind the technology, or the gadget what it's using, but to make some fancy and nowadays trendy statements about that everyone should start to code, is completely unreasonable. Every man has a scope in this life, be that to use their hands or use their mind, and i think it's overrated the necessity to start learning programming. I like the plumber analogy a lot, and i think it just reflecting the reality very much.
Wow your really making an ass out of yourself sir, you may want to denounce yourself as an author to this one. Look, I grew up programming, from middleschool through most of college- (ended up changing careers- however i still utilized some coding in the movie/commercial industry) Look. your paranoid about the market being overflooded, we allll can see and understand that. If someone is intelligent, and has ideas for a better future, much of the time Yes I could recommend it as a hobby to someone interested- or as secondary information for their work- their ability to tell someone who does it professionally what they want and have realistic expectations (this is the keeeeey reason i would recommend people learning to code) However its also good for anyone else who has the critical thinking problem solving patient mind that doesnt mind staring at the computer screen all day... if you can get past that, and be persistent, and choose a path that matches up with marketing trends, you can reset your whole career- and it would probably be a good thing. Its even one of those you can have a 1 hit wonder with, and create it in your spare time... its not a guarantee, but hey its a hobby with potential- biz people like potential. Personally, at this point in my life I may never program again. HOWEVER, i wouldnt take back one day of the 15+ yrs of coding I have done- nor would i take back one persons knowledge that i have taught them. AND its not my career, by any means now. So seriously sir, get your panties out of a bunch, stop being scared and realize, now more people will be able to better communicate their needs to you. and Chillax, sir.. you may wanna rethink learning some basic plumbing as well, maybe that should be YOUR hobby.. because guess what- its pretty nifty to not need to call a plumber at 4 in the morning.
you obviously attempted to choose writing as a hobby, because you rushed this one through, and didnt think.. maybe your just not a very good programmer? your missing some critical thinking, problem solving, application and communication here. you failed at trying to scare away people, go back to your dark cave.
your like one of those people that i would almost expect people to say "guns kill people because of the video games they play, because of the programmers who make them, programmers kill people" except of course, THAT even has more a more relevant transference of categories then you did. Maybe you just need some sleep. put the code down, and take a nap.