I was reading through some job listings recently and noticed a pattern. The same skills keep appearing, and the ones that were important five years ago are shifting. Not disappearing entirely, but moving around. Here’s what I think developers should be focusing on right now if they want to stay employable over the next few years.

This isn’t exhaustive. There are plenty of specialisms and niches I’m ignoring deliberately. I’m thinking about mainstream development work, the kind most people do.

One of the “Big Three” (.NET, Java, PHP)

Pick one. You don’t need to know all three, but knowing none of them is a problem. These are the platforms that run the majority of business software, and they’re not going anywhere.

Knowing the language itself isn’t enough either. If you say you know Java but haven’t touched Spring or Hibernate, you’re only half there. Same deal with .NET and the framework, or PHP and the ecosystem of libraries around it. Learn the tools that come with the platform, not just the syntax.

Rich Internet Applications

This is the buzzword of the moment, and for good reason. The gap between desktop and web applications is closing. Flash and Flex are mature, JavaFX is new and interesting, Silverlight is Microsoft’s answer, and HTML5 is the long-term wildcard.

You don’t need to master every one of these. But understanding how to build something that feels responsive and polished in a browser is becoming table stakes. GWT, Dojo, jQuery UI - pick a framework and learn it properly.

Web development fundamentals

This should be obvious but it’s not. I still talk to developers who can write business logic in their sleep but have never touched a line of JavaScript. Or who treat CSS like an afterthought.

HTML, CSS, and JavaScript are the building blocks. Frameworks come and go - I’ve seen that happen already - but the fundamentals stay. Learn how the browser actually works. Understand the DOM. Know what a cookie is and why it matters. Accessibility isn’t optional either; it’s just something most people ignore until they’re forced to deal with it.

Web services

REST or SOAP, JSON or XML - you need to know how systems talk to each other now. Everything is connected to everything else, and the glue between systems is web services.

Consuming a web service is the easy part. Building one that other people actually want to use is harder. Think about authentication, error handling, versioning. These are the things that separate a quick hack from something production-ready.

Soft skills

I know, I know - everyone says this. But it’s true. The days of the developer who hides in a corner and communicates exclusively through code are numbered.

You need to talk to people. Product managers, designers, clients, other developers. Being able to explain why a feature will take three weeks instead of three days is a skill. Being able to listen to what someone actually needs instead of what they say they want is another one.

A dynamic or functional language

If your only experience is Java or C#, learn Ruby or Python. If you’ve only done imperative programming, try something functional - even just the functional parts of a language you already know.

This isn’t about adding another bullet point to your CV. It’s about learning different ways to structure problems. Ruby will teach you about convention over configuration and writing code that reads like English. Python will show you how indentation can actually be a feature. Haskell or Erlang will make you question everything you thought you knew about state and side effects.

Even if you never use these languages professionally, the ideas leak back into your main work. I’ve seen Java developers who learned Ruby write noticeably better Java afterwards.

Domain knowledge

The best developers I know aren’t just good at coding - they understand the business they’re working in. If you’re building financial software, learn about finance. If it’s healthcare, understand how hospitals work. If it’s e-commerce, know the difference between a shopping cart and an order.

This makes you more valuable because you can spot problems before they become bugs. You understand why a requirement exists, not just what it says. And you can suggest alternatives that actually make sense in context.

Development hygiene

Version control. Testing. Code reviews. Continuous integration. These aren’t optional extras that you get to when there’s time - they’re the difference between a project that ships and one that becomes a cautionary tale.

Subversion is still the default in most places, but Git and Mercurial are worth looking at. For testing, pick a framework and start writing tests today, not tomorrow. The tests you write now will save you hours of debugging later.

Mobile development

This is the wildcard. The iPhone is only a year old and it’s already changed how people think about software. The original iPhone app store launched in July last year and it’s grown into something nobody predicted.

You don’t need to bet everything on mobile yet. But ignoring it completely seems like a mistake. Objective-C and the iPhone SDK if you want to go native on Apple’s side. J2ME or Symbian if you’re looking at the broader mobile market. Or just learn how to make web applications that work well on small screens.

The mobile space is moving fast. Whatever platform dominates in two years, the developers who understand the constraints of small screens and limited bandwidth will be ahead of the curve.


None of this is revolutionary. Most of it is common sense. But common sense isn’t always common practice. Pick a few of these and start learning. You don’t need to master everything at once.