Every now and then someone will say that we need more programmers. That every child should learn to program in school. That programming is the new writing.
In every field you will have a few people who are at the very top of their profession, more who are just good, even more who are average, and yes, you will also have some people who plainly suck.
Let's face it, not everyone is suited for every job. Just as most programmers will suck at being a salesperson or an actor or a physician or a lawyer, so will most lawyers or actors or salespeople suck at being programmers. There is a finite supply of people who are suited for any given job.
If you try to cram more people into any profession, then the only additional people you will get are those who are average or even subaverage. If you do that, you will end up lowering the skill-average of that profession.
But we do have the problem of living in a world where products depend more and more on software. And somehow we need to satisfy that increasing demand for software-development.
Having more programmers won't help. Adding more (probably subaverage) programmers would lower software-quality. And we are already bitching about that. No need to make things worse.
What we need instead are better tools.
Almost everyone will probably think that tools have become a lot better over time. But have they really?
I was 14 when I started programming, and that was more than 30 years ago. My first computer had a 4MHz CPU and 16kb of RAM. I had never programmed before. I had nobody to teach me how to do it. All I had was the documentation that came with the computer, and the tools that came with it. Which means that it had a built-in BASIC interpreter. And yet I managed to write my first (VERY simple) game within a few hours.
Now imagine that scenario today. Give a 14 year-old, one who has never even used a computer before, a computer in its original box and see how long it will take him or her to write their first program. My guess is that it will either take weeks or not be accomplished at all.
Because despite all the progress we made over the last decades, computers have not become easier to use, but more complicated. You can't just unbox it, plug it in and start working. You need to create a user-account, maybe fill-out a registration, download all the latest security-updates, find and download developer-tools, then find, read and understand some horribly complex documentation for your programming-language of choice.
Just take a look at the size of today's APIs and class-libraries. The sheer size of these will probably discourage a lot of people from further exploration. The learning-curve has gotten way too steep.
We need tools that are easy to learn for beginners.
We need tools that make it easy for someone to switch from say programming for Windows to programming for a Mac or for Linux or for the Web.
We need tools that help with all the routine work.
We need tools that enable us to concentrate on the actual task, instead of all the housekeeping that still comes along with it.
That will fix the problem. Simply having more programmers, won't.
I appreciate your article, but have to disagree with your logic and conclusion.
Almost all children are taught basic painting/drawing skills, yet we do not expect them all to become artists.
All children that have the opportunity to attend school (as we need to remember some sadly do not) are taught to read and write, yet we know not all of them will become avid readers let alone accomplished writers.
And so on, and so on.
To think that providing basic computer and programming knowledge would force them into a career as mediocre (or worse) programmers is making a very large leap in logic.
Teaching the basic skills in this or any arena provides the exposure to a possible path for them, it does not lock them into it.
Lastly I would argue that the need for better tools (which I do not disagree with the merits of better tools) comes into play in two specific situations. First when more productivity is required thus making a capable engineer/programmer that much more efficient (this is good). Second, when there is a lack of knowledge in the underlying mechanisms and the individual does not actually know how to accomplish the task, they merely know how to use the tool (this is bad).
I want an architect that understands the physics of constructing a stable structure, not one that knows how to let AutoCad make decisions for him.
I started to write a comment here, but it got a little long. So I posted it up to my blog.
I find that a majority of programming these days is trying to figure out the bureaucratic nightmares that other coders set up by throwing a library or framework at every trivial problem. People don't seem to want to code unless they're able to do it by trying a 'neat' new API or cool toolkit, and of course the price is that every small act requires learning another API, another mental model to wrap your head around before even being able to focus on the problem at hand.
It's gotten way out of control, and I don't have a clue what to do about it, other than to give in a bit, while trying to steer everyone and every thing away from this mess.
I agree with this article.
Many people are completely Maths phobic even though Maths is taught from an early age. The effect of too early an exposure to Maths is to put people off! Many of whom could probably do a better job if it was introduced later or on friendlier terms.
Introducing Programming could also drive even more people away from it. We need to rethink some things about effective education before we risk ruining Programming's appeal further.
"My guess is that it will either take weeks or not be accomplished at all."
I bought my newphew a delphi book (delphi for kids) with an older version of the delphi-ide, and he made a tic tac toe game within two days. It takes ambition and talent and tools...
You want to comment on this blog-post? If yes, then simply enter your comment in the field below and click on "Submit".
Comments are moderated at the moment thanks to some $%&# who thought it would be funny to post total nonsense here.