Well, it’s not simply length of time programming. Someone who’s spent five years re-programming basically the same thing again and again hasn’t learned anything new. I saw this working at an agency, where different clients request very similar solutions and it’s a plug and play type of thing.
So what do I look for in a senior programmer? I want a senior to bring breadth of experience, depth of knowledge in their core area, experience with adjacent fields, and the ability to look around the corner.
Someone who has worked on varied projects with different requirements brings a breadth of experience which gives them an edge reacting to new situations. They have a wealth of options to call on; they’ll say, “I think I’ve seen something like this before and we solved it by….” Having a wide field of past experience reduces the unknown unknowns, the “I don’t know what I don’t know”: If you’ve never heard of cheese slicers, you’d just keep using a knife, right?
Also important: depth of experience in their primary programming language. This doesn’t mean never having to google the syntax of a function not often used; this means understanding the ins and outs of the language, what it can do well and where it’s not great. A senior programmer will build well-constructed, well-performing code as second nature.
What makes a senior programmer stand out for me are two further points not directly related to programming.
At the point in their career where they can be called senior, I expect a programmer to have experienced adjacent fields and picked up knowledge about them, probably even taken on some tasks when the team was shorthanded. They’ll know something about project management, QA, UX/UD. While I don’t expect senior programmers to do those things on a daily basis, the knowledge is invaluable. They can point out when these adjacent areas in their project are falling short, or on the other hand are able to recognize excellent work.
The single most valuable asset a programmer can bring with them, though, is the ability to look around the corner. I’ve known junior or midlevel programmers with this quality, but without it, for me, a programmer in my area of work won’t be a successful senior.
When a programmer can do this, they have built a mental mind map of their project, related projects, and their client’s needs and wishes. They’ll say, when planning a feature, “Don’t forget that this feature needs to work differently in the Netherlands, because there is so much bike traffic there.” They’ll say, “We could do it that way, but if we do it this way, we’ll make it easier for Finance to do their jobs.” They’ll say, “I don’t think this will work because of the dependency on X.” They’ll say, “We need to consider the performance under peak traffic conditions, not just the current load levels.”
This programmer makes everyone’s lives so much easier in the long run by anticipating and exposing possible problems long before they happen.