I shared the office with a friend who was a "real" programmer. He was a C++ coder. What's more he wrote Windows applications directly against the Win32 API - to those with less wrinkles than me that means writing 80 lines of code to get a simple captioned window to appear. He was at the pinnacle of his craft and I remember him once saying he had reached the point that there was nothing new for him to learn in terms of Windows development - he had it covered. I was in awe.
After wrapping up ATokeley Computing I began contracting; alternating between Wellington and The Netherlands. I did this for a few years, learnt a lot more about VB, ASP and even got a smattering of BizTalk exposure. I started at Intergen in 2002 as a Senior Developer.
Today, anyone with the same set of skills and experience as me or my friend, would likely start as an Intermediate Developer.
Being a Microsoft Developer has got a whole lot harder. In fact, I now expect, at a minimum, someone to have several years’ experience in most of the following: C#, XML/XSD, XSLT, ASP.NET, Microsoft CRM, MOSS, SQL Server, SQL Reporting Services, Web Services.
I also expect a senior developer to be an experienced architect and consultant and prepared to undertake presales work.
Being a Senior Microsoft Developer has got a whole lot harder.
So what does all this mean to someone wanting to move their career forward as a developer? Well, IMHO, you have two choices.
Widen your net (excuse the pun)
Given the ever increasing breadth of technologies in the Microsoft space you are going to increase your marketability with the broadest set of skills. You don't need to be a guru in all areas - don't even try, it's not possible anyway, but you need to understand the context of as many technologies as possible and know how, and more importantly when, they should be applied. It goes without saying you need to be at the top of your game in terms of raw coding - knowing best practice, understanding common patterns, being able to smell out the best approach... but that's not enough these days.
Back when I started out one of Microsoft's primary marketing tools was the developer community. Give us the best development tools, make us happy with cool gadgets and our enthusiasm would permeate through into our employer's IT decisions. Make sure we loved the experience of coding and the rest will just fall in to place. And so it did and to a lesser extent it still does.
But things are changing. Microsoft is now investing large amounts of effort to market packaged solutions. As a result, or perhaps because of this, businesses are demanding solutions that don't need to be built from scratch but that leverage these solutions. Products like MOSS and MCRM are filling this need and the development community is being asked to support this.
And this requires you to know more than what a lambda expressions is or how many curly brackets it takes to put a light-bulb in. You need to know about Integration. At Intergen our development team is known as Development and Integration - and for a good reason. The Integration part of this name is becoming increasingly important. Whether you're integrating with another vendor's web services or extracting information from a SharePoint document repository you need to know about the tools and techniques for doing so.
A lot of developers baulk at the thought of touching these products. They are seen as somewhat beneath a coder's realm. Developers fear they will be relegated to drag and drop drones and never see another line of code. Nothing could be further from the truth. You're still being asked to write code but against a far wider range of products and technologies. Developers are simply being asked to look up from their IDEs and explore the landscape they are developing against. Look where the market is moving and make sure your development skills are honed to cater for the demands that exists.
Become a specialist
The alternative to this approach is, in fact, the exact opposite. Rather than being the person who has spread themselves across a wide range of technologies and perhaps has mastered none of them, you are going to choose one area and nail it.
The secret, of course, is in the selection. Let me start by saying you can not choose to become a C# guru - this is expected of all senior developers. Examples of where I've seen people adopt a specialty with success include MOSS and MCRM. As I've said before these products are being heavily marketed by Microsoft and there is a high demand for solutions based on these products. If you become known as the developer who knows how to extend and integrate with one of these bad boys you'll be rewarded with a high degree of recognition and praise.
Of course, the downside to specialisation is the risk of being left on the sidelines if your area of expertise becomes unfashionable or outdated. Just ask your COBOL friends about this.
And this goes for everyone...
Regardless of which path you take there are some qualities that all senior developers need.
- Be a great coder - enough said.
- Be a great communicator - whether it's with a client or your team you need to be able to get your ideas across.
- Be confident - no-one will believe in you if you don't believe in yourself. Even if you don't feel confident it is paramount that you come across knowing what you are talking about. Never cross the line to arrogance - no-one wants to work with an a$!*#!e.
- Be a leader - you need to lead from the front, know how to work with others and get the best from them.
- Be a team player - no mavericks need apply.
Posted by: Andrew Tokeley | 31 March 2008
Rate this post: