Tim Bray‘s Software in 2014 is a great survey of the state of software engineering, particularly on the server (good) and the client (bad). I’ve spent my fair share of time in both places, and my experiences match up with his conclusions perfectly.
Beyond cheerleading, my main reaction is to consider why server side development is so much better than client side these days. On the client, we’ve seen a massive tectonic shift over the last 5-10 years. Win32 had a comfortable monopoly for decades, hangers-on notwithstanding, but that ocean is well and truly boiled, and clearly for the better. The new trio of web, iOS, and Android have done some pretty amazing things for end user technology. It takes time for tools and best practices to shake out of young new platforms, though. You know it’s saying something when the web is the most mature of any bunch.
The server side seas, on the other hand, have stayed cool and calm. Tools and languages have improved steadily, and the rise of APIs and app platforms and DVCSes and cloud computing has done wonders for code reuse and modularity. The spectre of multi core and concurrency still haunts us, but we have weapons to fight it with now, and they’ll only get better.
At a high level, these changes have clearly been good for users of both client and server software. The difference is that server developers are their own users, more or less, while client developers are not. Reinventing the client platform from scratch was an epic Spolsky’s Folly that client developers will be digging out of for decades, and general purpose computing may not make it out alive, but it’s already a big net win for end users, businesses, and most other constituencies. It’s not always all about us engineers, and that’s a good thing.
18 thoughts on “Software in 2014”
Putting on my elitist hat for a moment, I suspect part of the difference between server vs. client software is related to how those two talent pools have developed. System software in particular has never been easy, and if anything server-side development has gotten harder because everything’s distributed now, so that pool has expanded only slowly. By contrast, the cllient-side pool has exploded. In a way we’ve made both development and distribution too easy, with tools and frameworks and the cloud and app stores. Now every halfwit with a keyboard can create something that half works, take a few screenshots, and fool some people out of their money. Lather, rinse, repeat. Don’t worry about debugging. If things don’t work you can just blame it on cross-browser issues, or on the server-side platform, or you can just “pivot” to a completely different project.
When there’s no barrier to entry and no penalty for failure, of course the unwashed masses come in to claim a share of the fortune.
interesting idea, jeff! thanks for the response!
i definitely agree that we’ve lowered the barriers to entry a lot, especially on the client side, and raised the incentives, which may mean we hear disproportionately more complaints about client side development.
even so, i think the idea still stands that, for engineers with roughly the same skills and experience, server side development truly is in better shape these days than client side. today is the golden age of the full stack hacker, at least in many circles, and i’ve heard the same client side complaints echoed by plenty of other very competent engineers who understand the big picture and the tradeoffs at play.