I see a lot of jobs out there looking for senior engineers/developers, with a fundamental lack of what the ‘senior’ part of that title means. If you only have senior in the title because of pay structure and scaling then you’ve already lost. Pay and progression though your organization shouldn’t rely on titles, there’s nothing wrong with an Engineer making more then a Senior Engineer. The difference in the titles is not pay or skills, but knowledge, experience and responsibility.
If you’ve never seen the Brad Pitt war movie Fury (and your into war movies) I highly recommend it. In the movie Brad Pitt plays tank commander “Don Collier” who has to take on a fresh solider “Norman Ellison” played by Logan Lerman. Norman is young, never seen combat and is now working with a tank company filled with grizzled war veterans.
A good Senior Engineer/Developer is Brad Pitt, well the character he plays in Fury (I can dream dammit). They lead, teach and help their company and co-workers avoid painful and costly pitfalls through experience and knowledge.
Take this scene below, Norman is being thought (gruffly by Michael Peña’s character Trini Garcia) about what he’s going to do if the tank get’s hit. Brad Pitt also gives Norman a teachable moment by giving him an instruction, but also telling him why helping him avoid a costly mistake.
In the industry we often hear about 10x developers. These the the absolute rock stars that can pump out code like no-ones business. I’ve had the pleasure of working with 2 developers in my time that I consider 10x or close to 10x developers. But there is another class of developer or engineer that is just as valuable, they are the senior or lead ones.
A good senior developer is just as important as a 10x developers. A good senior developer ‘has been there and done that’ and has the patience and ability to teach others. They save time and money buy steering development down paths that avoid pitfalls they’ve encountered before. All while mentoring and teaching other developers as they go along making the team better as a whole.
Teaching and mentoring is an important aspect of the position. This goes beyond “hey I found this new technology and let me show it off”, anyone can do that and most of the time it’s a waste of time anyways. No proper teaching and mentoring involves being there to answer basic questions, conduct code reviews or paired programming sessions giving hints, tips and tricks along the way.
It also involves not taking the direct approach, the “this is how you do this, and now always do it this why”. A senior engineer should teach the ‘why’ of something, not just the how. Once a person is armed with the why they can figure out their own “how’s”, instead of just one.
So what is the difference between a Senior/Lead Engineer and a normal Engineer if not pay? It’s knowledge, experience and responsibility. Some developers just don’t want to teach people and that’s perfectly fine, some have excellent skills but very limited experience. Why should those people hit a pay celling and moving into a position they aren’t ready for or comfortable with? This is the Peter Principle at it’s finest.
Design positions in your organization that have distinct roles and responsibilities that take into account the strengths needed for that role and it’s responsibilities. Next don’t lock pay at any of those positions, a 10x developer in a Software Engineer should be able to earn more then a Senior Software Engineer. Your just punishing your company by forcing developers into a false career path that dooms them to fail. Don’t promote people into positions just because they’ve been there forever. Length of service doesn’t indicate that someone can lead or teach others.
Finally realize that a senior level position isn’t a function of age. Someone young could have more experience working with OSS and personal projects then his resume reflects, professionalism is not being paid to do a job, it’s a state of mind and holding yourself to a standard.
If you’re a First Responder or know one check out Resgrid which is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations.