Home‎ > ‎

Land of Confusion

 Opening a book like Robert Sedgewick's Algorithms makes me hurt for programming before there were mouse-driven operating systems and frameworks, the time when running a benchmark more than once always gave you the same number and you could predict the path of execution without exceptions, event handlers or interrupts to worry about. To have that again you'd be back in time, rubbing shoulders with Grace Hopper and working with machines with no greater use than balancing a tea company's books or computing ballistics tables. Like Ryan Dahl I hate almost all software and its complications, clumsy user interfaces and broken or incomplete APIs. None of them deserve an icon on my desktop or a splash screen, none should require a network stack and paid connection just to be sure they're properly licensed. 

 Whatever trade-off we've chosen to live with now, in order to throw away printed manuals because every button has a picture of what it does, it isn't worth it. It isn't worth it to hide complexity, it isn't worth it to make computers adapt so much to humans, humans need to do what they've begrudgingly done since the 1950s and adapt further to computers--to our creations--to tools we've allowed run our lives.

 Instead, I want a future where basic programming is the new literacy and the primary user interface is a programming language. I don't think that this will be a nice thing to have, I think it'll be the difference between prosperity and oblivion. To do that, we as a collective group of programmers, designers, project managers, executives and elected officials need to take these steps.

1. The API Always Comes First

 Poor Steve Yegge, if we are to take him at his word, did not mean to share with the world his opinion that Google must change its culture. But he's right and should borrow some nails and a hammer from Martin Luther. Before any button is drag-dropped, resized and code-behinded on a GUI there must be a public API defined that already does what the click would do.

2. The UI Must Be Open Source

 Keep the implementation of the API a secret if you must, but we need to be able to do with our Smart-Phone apps, Tablet apps, and desktop apps what we can currently do with web apps: View Source.

3. Basic Programming Needs to be A Mandatory Course in School

 And beginning with the First Grade. China does not teach Intelligent Design in its schools, instead they teach biology, and consequentially they're now graduating more biologists per capita than the United States is. They also have the world's leading genetic research institute: BGI. One day the United States will have another scuffle with China, and shortly after the average American voter will wake up one morning with a headache, runny nose, cough, and total paralysis from the neck down. The cure will be dispensed the moment the President signs an unconditional surrender (with an Autopen, necessarily).

 The only defense will be a populous that is adept at manipulating information by machine, including the information we're born from. And even if the Chinese Manhattan Project is never used, there will still be economic Manhattan Projects underway in a dozen different nations, each producing everything from high-frequency trading systems to compilers that optimize whole manufacturing processes. Any country with an illiterate (that is, non-programming) population will be unable to compete.

 If junior can't write a conditional statement by second grade, he doesn't enter second grade. If they can't write a loop by fifth grade, they go to Special Ed. Programming is the new literacy and has been since the 90s. The good news is that many of them have already learned the rudiments in spite of the Board of Education.