15 September 2006

Johnny can so program

Yours truly tussles with esteemed science fiction author David Brin over honest criticism about a Salon published article titled Why Johnny can't code. So much so that Brin ends up resorting to namecalling and tossing a hussy fit, declaring me unwelcome there. Still, I am a fan of Brin's writings, even if he begrudges me, I just think he's veered off into a funk, and extrapolates an anecdotal tale into a broad assertion that's simply not true. At least in this scientific discipline and for this poor article.

Bemonaning the fact the archaic BASIC language no longer comes with the computer, Brin contends that today there's no easy way for kids to get hooked on programming.

For three years -- ever since my son Ben was in fifth grade -- he and I have engaged in a quixotic but determined quest: We've searched for a simple and straightforward way to get the introductory programming language BASIC to run on either my Mac or my PC.

Why on Earth would we want to do that, in an era of glossy animation-rendering engines, game-design ogres and sophisticated avatar worlds? Because if you want to give young students a grounding in how computers actually work, there's still nothing better than a little experience at line-by-line programming.

Only, quietly and without fanfare, or even any comment or notice by software pundits, we have drifted into a situation where almost none of the millions of personal computers in America offers a line-programming language simple enough for kids to pick up fast. Not even the one that was a software lingua franca on nearly all machines, only a decade or so ago. And that is not only a problem for Ben and me; it is a problem for our nation and civilization.

Whoa, an "epic problem" because of the absence of "line-by-line" programming language?

Brin harkens back to an earlier time, when tinkering with line-by-line programming was a large part of the reason why a computer was purchased. That the buyer was a financially endowed nerd already passionately motivated and inclined to what was, for that time, a solely hobbyist pursuit. Today, the price of computer hardware has plummeted, making a PC purchase within reach of nearly all. And the entry level barrier for youth to enter into the discipline of programming computing machines has never been lower.

  • As stated, the cost of machines that 20+ years ago would preclude ownership for many kids, is now, in most all cases, a total non factor.

  • In the good old days of BASIC PEEK and POKE, your only link to programming prowess was a geeky magazine article, or provided by a fellow nerd friend. There were a few books, but rare. No googling for help, no vast internet repostiory of tutorials and how-to guides that exist in 2006, however.

  • The machines of yester-lore were no more than glorified calculators. In fact, the machines that sit on our desktop (and in our laps) have much more in common with old school mainframe computers than the early IBM/PC and Apple computers. Point is, running a comptuer today, in many ways requires a whole heap more of

  • Apple Macs and Linux machines all come with all the programming tools a budding programmer could wish for. Even Windows machines, though less endowed, come packaged with C# programming environment.

  • But all that really is needed to write programs and see the output of basic algorithms is a web browser and a text editor. Both of these come standard with any machine today.

There are still BASIC programs in textbooks? Brin is dismayed over his the internet choir's emphasis on his repeated references to BASIC, but there are at least 30+ mentions of BASIC in his article.

Yes, and the problem, according to Brin, isn't the textbook publishers who add program exercises in an archaic language that some computer science luminaries consider to be "life corrupting". it's Microsoft's fault for not maintaining lingua franca on its machines!

Not all of Brin's missive is misguided. I understand his sentiment, but he laments for an age that has come pass, and because of his own nostalgic remembrance, distorts reality. The computing landscape has indeed changed, but you don't have to run BASIC programs to gain an understanding of how a computer works. BASIC is no different than any of the newfangled scripting languages. Furthermore, the fundamental model of "how a computer works" is radically different today — the simplistic model Brin details is less instructive than the state of the computer circa 2006.

But while Brin bemoans the current status of programming tools for aspiring programmers, here is what is happening in the golden age of programming.

  • Millions are busy creating home pages, scripting game macros, writing Microsoft Office VB scripts to access databases and perform Excel functions.

  • Others are creating web applications or writing social networking applications such as MySpace.

  • Millions are downloading and installing free and open source (F/OSS) software, including the various Linux and FreeBSD distributions. And by doing so, are receiving far greater instructive benefit by learning how a modern day computer works, encountering firsthand, the challenging experience of installing, configuring, maintaining and even scripting/programming in nearly all the layers of software and services that make up a contemporary computer system.

Even if Brin's claims have merit, the contention that its a "problem for our nation and civilization" is unbelievably far fetched. The discipline of computer programming differs from other fields of science — most programmers are, in large part, self taught, and gravitate to the field, based on their inkling and proficiency in being able to tell the computer what to do. Years ago, when the government went recruting programmers, they attempted over and over, to discover who would make a good programmer. Chess wizards, mathmeticians, bookkeepers, etc... were all once viewed as being optimal programmer candidates. But it was discovered that there was no common theme, and good to great programmers came from all walks of life, that a small segment of folks just had a knack for it. Even back when I went to school (I changed majors halfway through), it was expressed by professors that they viewed their job as weeding out those who won't cut it, who are pursuing the field for the money or because they think they'll dig it. And just examine the successful programmers — it's quite evident formal schooling and/or training is not necessary to ordain a great programmer. Therefore, even if all of the other points Brin contain some merit, that "computing is not as easy" without a "lingua franca", there are those that still will be drawn to the field. Incidentally, Steve Jobs and Bill Gates are both college dropouts.

Perhaps I am being a tad bit harsh on Brin's essay, but the endless parade of "Why Johnny can't program" is so irksome when the question truly is Why Johnny won't program. Johnny can so program, but if the IT industry is facing a dilemma in the United States, it has more to do with the wholesale corporate sellout of programmers and engineers where American programmers and engineers are replaced in favor of cheaper non-immigrant visa workers and/or offshore workers.