How to be a great tech lead and mentor?
Engineers, programmers work best when they can immerse in tasks, solving a particular problem for several hours without interruption is when they can perform the best. But as a tech lead or mentor, you have to step up, your task is not to be the best engineer but to be a force multiplier engineer who facilitates the work of others, who can make others perform better.
The more senior you are, the more considerate you must be about your behavior. Junior and professional colleagues will seek your advice, copy your actions, try to learn the skills you know, and listen closely what you have to say. But with great power comes great responsibility.
This responsibility is exponentially higher for people in leading roles and managers
It is your responsibility to periodically evaluate your actions, behavior and communication towards others, and ask yourself: would I look up to this person or would I rather think he is an arrogant asshole who doesn’t deserve his title?
The below list is a cheat sheet that will make you a better lead objectively and as well as in the eyes of others.
So how to be an impactful tech lead instead of an arrogant senior?
Be polite to others
Hold your temper. If someone makes a mistake don’t scold him. Being arrogant or cynical is the fastest way to get people to hate you. Instead, count to 10 and try to be politically correct, but firm. Don’t confuse being empathic and polite with loosing power, it has quite the opposite effect.
Help people when they ask. If you are always unreachable people will stop looking for your advice. When you don’t have time, just tell them to understand that and schedule a conversation later. People will appreciate you made time for their problems.
Share your knowledge proactively
This is called mentoring. Find the most critical problem areas and schedule workshops and education sessions to multiple people. Particularly junior colleagues will like the chance to learn. It’s also a good way to show off your know-how ;) Besides, you should encourage others to create workshops and presentations to share their knowledge.
Make time to educate people one-on-one
Personal know-how sharing is special, it makes both the mentor and mentored feel better in many ways, and helps them bond stronger work relationships. (I know it sounds sentimental) You give special attention, and gain an advocate for yourself.
Show good work morale
Be professional about your work schedule. Do the things you ought to do in a timely manner and don’t slack much with lots of personal conversations during working hours. The time for slack is at lunch, team events of when you are heading home anyways. This shows just how disciplined you are, and you actually will become disciplined.
Always be one step ahead of others
Make time to learn about the technologies you are using, and new or alternative approaches. This way when a problem arises it gives you a head start with your educated arguments. As a side-effect, you also will be smarter ;)
There is a pitfall though: don’t confuse being literate with hands-on experience. Books and blog posts often provide idealistic examples, whereas a real software project is a lot more complicated.
Always give good reasoning
In software engineering there are numerous ways to do one thing, choosing the right approach to a problem is often difficult because every solution has tradeoffs. When there is a debate, always give professional reasoning so other people understand your viewpoint well. Phrasing your reasons also help you understand your own intuitions. Never say “because I said so”, even if you cannot persuade people, there are more polite ways to ask going your way.
Promote conversations instead of making one-sided decisions
Asking people about their opinion makes them feel empowered and cultivates a safe and innovative team atmosphere (I hate to say “work culture”). Moreover, hearing out other opinions gives you a better chance to make educated decisions. If you never give room for others, people will eventually become passive and stop innovating. Even let suboptimal solutions happen (to a degree), so people can learn from their mistakes. People will feel more involved in brainstorming, and if they already look up to you, they will be grateful about hearing their opinions. It’s a win-win.
You don’t need to win all the time
In connection with the previous point, winning all the arguments does not make you a better senior in any way, nor makes you more liked. Quite the opposite, you will make people feel suppressed. Loosing an argument and admiting your mistake is respectful. Showing your human/emotional side will foster sympathy in others.
Software engineering is difficult, but instead of saying why a request cannot be completed the way requested, give alternative solutions: this is called the can do attitude. People will conclude, you give the solutions instead of bringing problems.
People are afraid making risky decisions. Be the one who makes them! Once a decision is made (even if not coming from you), defend it and be a strong and positive voice in advocating it. The point is that every decision, especially mid and long term strategic decisions are risky and with full of doubts. A team needs a strong voice to follow to drive away doubts, and to chase a positive outcome. This is an essential leadership skill.
Never promote negative sentiment especially if you are in leading role. The higher you are on the career ladder the more you have to keep in mind the company’s interest. Acknowledge problems, promote positive sentiment towards your team and escalate problem areas towards management, then pursue solution.
A lot of these points are so generic, anyone can benefit to become a better co-worker, acquaintance or friend. Some may sound like manipulation, but if you read closely, none of the points do any harm to others :)