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.
Comment feed for ongoing:
From: Ian (Aug 06 2011, at 00:33)
If it makes you feel any better :-) I'm one of those maintainer/specialists, and I tend to revert to my tried-and-trusted tools on new projects to avoid yak-shaving. This may not be a good thing - I'm pretty sure I'm missing out on lots of good new stuff by sticking to my defaults.
In any case, one of the first and most important things I learnt about tech is that there is ALWAYS so someone who knows more about something than me, no matter how long I've been studying. The attitude of "perpetual newbie" is one I try hard to maintain, because I find the humility helps me learn. You seem to be particularly good at it, which is no reason to feel sorry for yourself! :-)
From: William Vambenepe (Aug 06 2011, at 22:47)
You too are a master of your problem space and its tools. It's just that your problem space is something like "understanding how software technologies fit together and helping people use them productively" and that the tools for this task are meta-tools.
From: Tony (Aug 06 2011, at 22:59)
complementarity, bro. you can't do everything, but if you're different enough in what you do and you have enough followers who don't do what you do and who depend on your difference, you'll do ok.
From: Nick Johnson (Aug 07 2011, at 06:06)
I know the feeling. Ever since I joined App Engine DevRel, I've spent more time at the beginning of learning curves than I was used to. Far less time actually coding than I prefer, too.
At the same time, I've had an opportunity to become a real expert in the more heavily used parts of App Engine, so I do get to sample the other end of the learning curve too, as my Stack Overflow reputation can now attest. ;)
From: Paul Morriss (Aug 08 2011, at 02:59)
I feel the same too, though with different technologies. When I look over the fence though I wonder if those who are deep into one area get bored.
From: Chad (Aug 09 2011, at 09:19)
I agree with John, the roles complement each other. Although employers seeking outside help don't see it that way.
As a job seeker, specialty seems easier to market. My experience with local (Vancouver) employers is that they seek specialties. General skills have been a tougher sell. Maybe I just need to work on my pitch!
From: Uriel (Aug 19 2011, at 16:54)
Any reason you didn't give Go on AppEngine a try? The simplicity of both the Go language and the APIs in its stdlib greatly reduce the 'noob' phase.