I still have content I want to discuss from CES, but frankly, I’m all CES-ed out for the moment. Fortunately, I saw a very good post on “Ongoing by Tim Bray” today. It is thought-provoking and covers topics I care a lot about. So that will be my topic today, and I can come back to CES next week. If you for some reason really want to read more about CES today I suggest the Wirecutter’s very practical guide to the best of the show.
Tim Bray is an old-school, original gangster of the web, a long-time developer and leading voice of the development community. He is currently employed by Google where he works on a variety of high-level web-thinking projects. I met him a few times when he was working with the Android Developer Relations team. His personal blog, Ongoing covers a range of topics from photography to the latest in software trends. I do not always agree with him, but he is an immensely credible voice for the software world.
Periodically, he publishes high level evaluations of the various programming languages out there. Investors regularly ask me about some of these topics: “What is the most important programming language out there?” or “Which programming language will ‘win’?”. For non-programmers (myself included) it is sometimes hard to parse the various trends in the coding world. There is no real winner, just many options each with their own trade-offs. Today, Bray published a post “Software in 2014” which provides a pretty good lay of the land.
His main point is that software tools used to power servers and data-center based applications are in really good shape, but the tools for programming on the ‘client-side’ or programming for applications used by end-users are in bad shape. That alone is an interesting point, but what really caught my eye in his post was the root cause of the problems on the client-side all boil down to trouble in writing for mobile.
Many of these problems should be familiar to readers of this site, or just to anyone who uses apps on a smartphone: App distribution is still tightly controlled by Google and Apple; testing is hard; no real choice in programming languages, etc. All of these boil down to the fact that programming for mobile is much more restrictive than programming for servers or even PCs. The platform vendors (i.e. Google and Apple) still call most of the shots. And while they have done a good job of providing tools for developers, mobile still has far fewer degrees of freedom.
My favorite part of the post, however, is when he takes a look at HTML5. Bray is a big advocate of open-source projects, and like many developers is drawn to the freedom of developing web applications. Nonetheless, he is pretty scathing in his assessment of the state of HTML for mobile today. It gets a bit technical, but his main point is that mobile browsers are still severely restricted and under-powered. I have argued before that this is the key battleground of the future. Bray points out, correctly I believe, that the mobile platform vendors are also the leading providers of mobile browsers, and they prefer to put their best teams on improving ‘native app’ environments, relegating browser improvements to the a lower priority (edit: see comments). This was the point I covered less succinctly a few months back.
Remember, that he works for Google. He does not speak for them, and it is a big company where many things are going on that he may not be familiar with. Still, I think it is telling that he is so downbeat not only on the state of tools today but on the very bleak outlook with no change in sight.
People outside the programming world tend to think of coding as being a very scientific process that should be highly efficient and industrialized. In fact, programming remains an artisinal craft, with much left to personal judgment, experiential learning and trial-and-error.
The one thing I think he left out was the declining barriers to entry. Despite all the challenges he outlined, it is getting easier to write code. The ‘democratization’ of software is a subtle but growing force. If you want to learn code, there is enough free material online to give yourself a complete high-school, college and graduate education in the subject of computer science and programming. There are also a huge array of ‘coding playgrounds’ or easy-to-learn pseudo languages being developed for young children.This ranges from complete programming environments like Scratch (which admittedly has been around for a while) to fully analog tools like Robot Turtles, a board game (as in made of paper and cardboard) designed by Dan Shapiro and funded on Kickstarter which teaches basic programing and instruction set concepts in a very colorful format.
To me, this is the hopeful future we should be waiting for.