This week I’ve been learning how one would build a simple RESTful back-end for an Android app, using Sinatra on Rack on JRuby on Java on App Engine and its Datastore, by doing it. The app needs persistence and user-account authentication, among other things. It’s been stimulating, but I’m feeling wistful.
Let’s see, we could call this the JAD stack. The problem is that while I’m reasonably Ruby-literate, I’ve never touched Sinatra nor App Engine nor Google account authentication. So while I think my conclusion will be that this is a good clean high-productivity stack for building this kind of thing, I haven’t actually been very productive, because I’ve had 25 different browser tabs perpetually open to consult on the details of all the different API levels and how they fit together. The ratio between time spent flipping back and forth plus that trying one combination or another in the REPL, and that actually writing and testing code... well, it’s not good.
I’ve been doing this sort of work since I joined Sun back in 2004, and I do enjoy it. Also it’s an important part of the software experience; one of the reasons a low barrier to entry is a critical technology success factor. I’ve had the privilege of learning about JXTA and Ruby and Erlang and Clojure and JSON and Android and Rack and mashups and syndication and cloud provisioning and more. For that I’m grateful.
But it means that I’ve been sort of a perpetual newbie. There’s another big piece of the software experience, one I haven’t shared in for years: where you’re concentrating on some problem and you know the codebase and tools, so your time goes more into doing and less into learning. In fact, that kind of work, in particular maintaining a large running production system, is where most of my professional colleagues spend most of their years of service.
I get a tiny bit of that when I now and then tinker with the software that publishes the blog you’re now reading; but not much and not often. There’s nobody to blame but myself; it’s all a consequence of my short attention span, and fascination with the software-engineering process.
I miss it. I watch the immensely gifted Android engineering team pumping out releases one after another, and the wonderful Google infrastructure people grinding and grinding away at our back ends’ rough edges, and I read Linus’ description of doing pull requests in Maui, and I envy their hard-earned unquestioned mastery of their tools and problem spaces.