March 24, 2015

In polite disagreement

 

This post caught my eye on Reddit:  “We don’t need more programmers, we need better tools”   And I felt compelled to respond, because I disagree vehemently with almost everything this author has written.

 

I’m of a similar age to him, and I had some of the same initial experiences – programming in BASIC on TRS-80s, TI-99/4a, and then Windows PCs.    So I feel like I can knowledgeably comment on his article.

 

He writes:

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.

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.

 

Ok.  One can theorize about a world in which every single person who is “above average” in programming ability is already a programmer.   If you add one more person, who must therefore be below average, you will be reducing the overall skill level.

But there is absolutely no reason to believe that is the actual world we live in.    Programming is a skill without a lot of “sex appeal”, with known issues with misogyny and ageism.   Lots of people who might have incredible talent never even start programming, because they don’t fit the standard “white / asian / indian guy” profile.    The benefit of teaching everyone to code is that they will find that they enjoy and are good at it.    That’s only part of the solution to the “we need more/better programmers”, but IMO, it’s a vital one.

 

Almost everyone will probably think that tools have become a lot better over time. But have they really?

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.

Well, let’s see.    In order to write a simple tic-tac-toe game, you need to install javascript, a browser, and a text editor  (and a tutorial to show you how to get started).     Yes, that’s complicated.

Oh wait. all of those are already installed on your PC when you get it.  Or on your Mac, or on your Linux box.

And in a lot of ways, Javascript is far superior to BASIC.   You get a lot more graphical expressiveness for free, when you interact with HTML… but you don’t have to use that….  You have the source code for thousands of other Javascript programs just a right-click away (view source).    It’s a simple introduction to programming, and if the 14yo enjoys it, he can then start to branch out towards compiled languages and editors and databases and registering for tools, etc, etc.

And that’s just to start.    Consider this challenge:  “Create an easily-installable audiovisual application for an embedded device which interacts with the touch sensors and delivers compressed sound data to the device’s audio drivers”

I decided I wanted to learn how to program on Android a few years ago.  So I connected my phone to the USB of my computer, downloded the SDK, looked at some example code, and had a viable prototype soundboard app working on my phone in about 4 hours.     The tools these days are often fantastic, especially considering how much complexity they abstract away.

If we ever actually get to a world where everyone who has a talent for programming is programming, that’s a good problem to have.   Let’s get there first, before we start trying to fix other things.