Matt Briggs has recently wrote one of the best overviews of what it means to be a senior developer that I have read. In the post he contrasts the role of the senior developer with that of junior and intermediate developers noting what all three usually focus on.
Matt’s post helped crystallise my views on this but for me the difference between senior and other developers is like the difference between how and why. Decent developers of any career level are able to find out how technically to do things whereas seniors developers are more focused on the why… or perhaps why not… to use a certain technology or methodology. Remember just because something can be used or done, doesn’t mean it should, everything involves a trade off and there is no universal ‘right way’ just an estimated ‘most appropriate’ way given the current project particulars.
In agreement with Matt, I found senior developers to be much more pragmatic than their less senior counterparts who tend to want to produce more pure and ‘beautiful’ code. Senior developers are always looking for the most simplest not the most complex or most pure way of implementing solutions. Senior developers know the concept of ‘good enough’. They are able to reign themselves in when others might be trying to make their code look like art. They know that even though the big books might recommend the repository pattern (for example) in case an ORM needs to be ‘switched out’ in the future, implementing such an abstraction could result in an over engineered system. All other things being equal, the senior developer will choose the simplest solution that meets the requirements regardless of dogma.
Always considering the why rather than just the how and being pragmatic rather than purist are the main differences for me between seniors and others, but check out Matt’s excellent post for more. There is good discussion going on over there in the comments section including some readers asking about how they can become senior developers. Well before I finish I’d like to offer my views on that. Four or five years ago I was the intermediate developer Matt talks about in his post, I’d read a book about this or that that some Microsoft MVP had wrote and almost religiously think that was the way software should be written. The end result was that I needlessly made much software I wrote more complex than it needed to be. What has helped me progress is working for the last five years or so in consulting whereby I might be working on one project for 10 months, another for six months, then yet another for nine and so on. Given that all these projects are for different companies the sheer range of experiences, problems/solutions, domains, developers not to mention over engineered complex software you come into contact with and learn from is staggering. I don’t think you can become a senior developer without getting lots of varied experience under your belt. In that regard I’d recommend consultancy work if you can get it.