A careful reading of Making it Big in Software will surface two curious observations. First, I studied the popularity of different programming languages and platforms. Not surprisingly I found the Java is the most popular programming language in the world. Nice, but not exactly world news. It stands to reason that if Java is the most widely used, it’s where the job are, right? So if you wan to be marketable, you may draw the conclusion that you need to stay fresh on your Java skills. Then I interviewed Mark Russinovich, Microsoft Technical Fellow, and Windows architect. I asked Mark for his thoughts on what people should keep in mind in order to have successful careers in software. Here’s part of the advice he offered:
“Try to differentiate yourself. For example, when Java exploded in the mid-1990s, everybody became a Java programmer, and the market became flooded with cookie-cutter Java programmers. It’s really hard for people to stand out as something that isn’t easily replaceable in that world. My whole career I have tried to stay away from that. Operating system internals, while not considered particularly sexy or part of the mainstream, have allowed me to stand out because of the relatively few people who go into that and the perception “Wow, that’s really hard.” Stay away from the mainstream and the crowds, and find something that is gonna be stable—not just flash-in-the-pan technology.”
Mark isn’t saying you shouldn’t be a good Java programmer, and neither am I. Knowing Java is definitely good! But if that’s you primary skill and claim to fame it’s going to be hard to distinguish yourself. Be distinguishable. Most of the time programming skills are to software as hammer, lathe and drill are to a carpenter. Tools of the trade, yes, bu not where the deeper talent lies. Being an expert in tools doesn’t make you a great carpenter, because the essence is knowing how to make the table, the cabinet, or the armoire. In most cases software is the same way, and programming simply provides the tool to apply your real talent. What really distinguished you is your deeper knowledge of the domain you’re applying those skills to, such as databases, social networking, communications, multimedia design, financial analytics, scientific domains and so on. In Mark’s case it’s operating systems. Ya… I’m sure Mark knows how to code, but that’s not what made him a Microsoft Technical Fellow.