In my previous blog, I mentioned that I think there are four main components to a great senior software engineer. I thought I would use this post to dive into those points a little more:

🌱 Help Cultivate the Growth of Others

Great senior software engineers are not only focused on their own growth but also on empowering their teams. From what I have observed, the best mentors are those that allow juniors to make mistakes and try to find the solution with themselves rather than leading them directly to the answer. Promoting this sense of finding the answers within ones-self is actually a very good skill for lots of aspects of life and in my view, leads to the most successful outcomes. Conversely, there is a fine line between promoting self-originating answers and leaving someone to hit their head against a wall when they are stuck, so keep vigilant!

When you are required to give feedback, it is important to provide actionable points with realistic outcomes. By that I mean sweeping statements such as "This needs to be better" is not at all helpful. Framing feedback in a way that can be "What you have done over here is really good, however, this here could be improved by doing X leading to the result of Y" and check to see if that feedback is followed next time.

 📖 Keep Up Your Studies and Learning New Things in a Fast-Moving Industry

Software engineering is ever-evolving, and staying relevant means being a lifelong learner. I find that keeping up to date with experts in the field creating content is a very good way to get concise news and industry information. I will list a few of my favourite resources below:

👉🏻 Nick Chapsas for .NET
👉🏻 Cassidy Williams and her newsletter which has general tech industry news and funny jokes :-)
👉🏻 Fireship youtube channel for quick snippets of industry news

Making time in your schedule just to get up to date on the news in your industry leads to more innovation and the desire to experiment (more on that later).

🗣️ Learn to Be an Effective Communicator

Communication is at the heart of a senior engineer’s role, whether you're conveying technical concepts to non-technical stakeholders or collaborating with peers. I personally talk in a lot of metaphors or analogies to those that don't share the same vocabulary as me which I find to be a useful tool for communicating ideas. The other method of communication that I find very powerful, is being able to draw clear diagrams, especially when you are talking about architecture or components. Diagrams are a very quick and clear way to get everyone on the same page with your line of thinking.

If you onboard with a new company or a new project, you can also check to see what the documentation looks like. If you follow some documentation and observe gaps or something that is out of date, not being afraid of updating that documentation with your experience is hugely beneficial to any company as well.

🤔 Be Interested in Experimentation

The best solutions often come from trying something new and not fearing failure. If you try something and it doesn't work, you always have the option to try something else. However, if you try something new and it does work, that can lead to really informative learning outcomes and innovation within your workplace. Certainly if it's something no one has ever done before. You can use your experimentation to share your experience with your colleagues whether successful or not which is valuable knowledge at the end of the day.