A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
-Robert A. Heinlein
That's always been a favorite quote of mine and, though I can't say I can do ALL of those (yet), it's one that I take to heart.
had a good post up yesterday called Please Learn to Think about Abstractions
, in response to Jeff Atwood's Please Don't Learn to Code
and Zed Shaw's rebuttal Please Don't Become Anything, Especially Not A Programmer
, in which he makes a point very similar to Heinlein's:
Everything is a layer of abstraction over something else. I push a button on my Prius and the car starts. No need even for a key in the ignition. A hundred plus years of internal combustion abstracted away to a simple push button.
I think everyone should learn how to think and when to dig deeper and should be able to do it in a welcoming and friendly environment.
Learn how to question how things work. Learn that everything new and simple hides something large and complex. We are all standing on the shoulders of giants like Newton, Tesla, Kettering, Berners-Lee, and on and on.
You can choose to live in a world where things just work, or you can choose to dig a little. You don't need to learn to code, you don't need to be an expert in everything but know that you can learn. You can learn a little or a lot. I don't think the Mayor of New York needs to know how to code, but it'd be nice if he knew a little about DNS and a little about HTTP
I come across this phenomenon, the "Let the professional handle it" mindset, quite often. Hell - I used to have that mindset to a degree. It's definitely a lot less work to just call the plumber or the electrician or buy your way out of a problem, but it certainly doesn't help you prevent it next time. But if you don't try, you'll never learn. Then the next time it happens, you'll "call the professional" again and still be no better off.
To Scott's point, and Zed's, I'll take a ton of bad code over no code at all if it means that someone is learning a new way to do something, learning how to think a bit differently, or trying to solve a problem themselves.