Found this on Quora and it certainly justified my job title! 🙂
Ouch, I’ll bet that stung. As someone who has managed many software engineers, I do have a sense of what that might mean. Here’s what comes to mind for me:
- A Senior Software Engineer doesn’t need perfect specifications. You may be given a problem that is ill formed, or abstractly stated, and instead of complaining about the requirements, you go out and try to understand deeply what the problem really is, and if you need to negotiate and clarify the requirements, you do so. You look at solving the real problem, not just what was stated.
- A Senior Software Engineer doesn’t pretend to know everything or always have the best judgment. At this level, you are expected to be able to take on any problem, but also capable of and willing to collaborate with other folks who may know more, or have different perspectives than you.
- A Senior Software Engineer doesn’t deliver buggy code. You take pride in what you do, and feel both deeply appreciative and embarrassed if someone else finds a problem in it. When someone finds a problem, you thank them.
- A Senior Software Engineer thinks about the future. You write code that is well structured and clear. You comment portions of the code that are not obvious, and your comments help provide perspective on ‘why’ a piece of code exists and is written the way it is. You want others to see your work and you actively encourage feedback from your peers.
- A Senior Software Engineer is available to others in the company (Support, Sales, Services) to help them better understand and use the product you are developing.
- A Senior Software Engineer doesn’t shy away from working with Customers and does so with a professionalism that represents the company well.
- A Senior Software Engineer cares about the customer, and is constantly thinking about the effect of his or her work on the product and ultimately on the customers. For example, if a requirement suggests you display a warning popup when a user does something, don’t just do it. Think about whether a heads down user who is intending to do that thing might get annoyed after the 100th time the warning appears. Figure out ways to accommodate both first time users who might need the warning and those who would curse at the product.
- A Senior Software Engineer understands that his or her environment is fundamentally a collaborative one, and maintains positive and constructive relationships with others. This means seeing, understanding and appreciating the contributions of all those around you. Your goal is to improve things, and that includes the spirit of the workplace.I’m sure there are more, but do these things, and people will really value you. And that’s really the bottom line. If you are an asset to the organization, your boss and your peers, they will consider you senior and rather indispensable. On the other hand, if you require constant hand holding, or worse, go completely rogue and don’t work with others and produce things without the benefit of the collective wisdom of your organisation, you’ll be considered dispensable.Ask yourself, does my boss trust me to take on more responsibility? If not, figure out why not and try to do something about it.Finally, of course, you need to consider that your boss may simply not know (yet) the many ways you contribute. If so, be patient with him or her. If you make their job easier over time you will become so valuable they’ll move heaven and earth to make sure you stay.