Before I joined Gartner I was a developer. I was pretty deep into a handful of technologies and had broad understanding of many others. In my day-to-day work I was always looking for shortcuts and improvements to make me a better and more productive developer. Most of these related to the technology tools I was already working with.
I think most decent developers do this, and some try to stretch by learning brand new unrelated tools (even easier if you’re a consultant moving from project to project). IMHO if you bother reading developer blogs at all you’re already several cuts above the average developer.
A Peek Behind the Curtain
At Gartner we like to slice and dice everything and everyone into patterns, quadrants, matrices, etc. I’m not exposing any state secrets when I say that our business (at a very simplistic level) is divided roughly in half between producers of technology (vendors) and consumers of technology (end users). We get to find out what kind of horrible pain our end users are suffering and advise them on remedies. We also get to find out what vendors are planning to do, and advise them on strategy. Sometimes it feels like cheating.
As you might expect, by and large technology producers are much stronger at nuts and bolts than end users are. After all, for end users technology is a means to an end. For technology producers it is their core competency and competitive differentiator.
The Enterprise Web Developer
So, in my past life I was one of those enterprise Web developer guys who doesn’t really know anything compared to the engineers at Google and Microsoft. On the other hand I was much more in touch with the reality of doing business where technology is an enabler rather than a differentiator. The reality is that the best enterprise developers need to be slightly ahead of the pack technologically, and also good at the business side. You could say that from the perspective of the indivudal developer as an enterprise, use of technology becomes a differentiator for them.
If you want to be a highly-valuable (and hopefully highly-compensated) enterprise Web AD guy, you have to do a few things, probably not limited to the following (which are not in any specific order):
1. Be really good at the technology that you work with at your company.
2. Have a sense of what is coming down the road with technology that will affect your enterprise and work proactively to use it.
3. Be really good at talking in business terms to internal customers who really don’t care that you just built a cool widget using only 3 lines of jQuery. Be equally good at understanding business speak from the end users.
Do those basic things and you will be in a great position to make good bucks and maintain some job security and job selection. Why am I telling you all this?
Enterprise Web AD is Nearing an Inflection Point
The growing importance of the Web is pushing more transactions online. All businesses are under tremendous economic pressure. The explosion in elastically-priced Cloud application platform technology is creating a new ecosystem for doing business on the Web, one in which costs are lower, time to market is better, and developer productivity is higher.
Five or ten years from now, most Web applications will not be developed for “traditional” app servers like Java EE, .NET, ColdFusion, etc (although possibly these app servers will be re-engineered to become elastic; hard to be sure at this point). Furthermore, the amount of data developers are used to working with in a relational DB is going to change dramatically – you will be working with ginormous data sets and SQL just won’t cut it anymore. Most likely the tools you are working with today will change dramatically. You might use different tools altogether or the ones you’re using might morph into new ones.
I can’t predict which platforms will win and lose. Its too early for that. However if you want to continue to be a highly-valuable, highly-compensated developer I have a few pieces of advice for you (also not in any specific order):
1. Get familiar with non-relational horizontally-scalable databases. (Ex: CouchDB, Google BigTable, Amazon SimpleDB) I am not a database guru and we have guys for that here at Gartner. But I can tell you that this stuff is different enough to be alien to most developers, even the good ones.
2. Get familiar with platforms and languages that support highly parallelizable applications. (Ex: Erlang, Clojure, Hadoop, anything that uses MapReduce internally; maybe even break out the old LISP) At a minimum bust out some recursive programming techniques in the platforms you already work on.
3. Get familiar with composition methodologies. Give up “Not Invented Here” (I know its hard – developers like building things). The best Cloud application platforms – at least for building business applications – will offer high productivity boosts with generically reusable components. If you don’t get on board with composition you won’t be able to wire together applications quickly from reusable pieces, and the crummy cut and paste code monkey sitting next to you will whip you.
In the late 90s, the Internet boom created a lot of new jobs and obviated a lot of old ones. The simplicity of the Web removed the need for as many desktop applications. We’re about to have another such shift. The best enterprise developers stay ahead of the curve. Its time to skill up for Cloud AD.