Dispassionate Programmer: Chapter 04 - Stepping into TechLead Role

Previous - Chapter 03 - Find Joy in Learning New things

Sumit: So, finally you found a job that you enjoy.

Vikram: Yeah, in that new company I was really having a good time. Team members are friendly, work is interesting.

But as the saying goes, This too shall pass. Nothing remains the same forever.

For being a good developer, I got promoted to a TechLead role. And, the fun started again :-)

Sumit: What happened?

Vikram: I believe some people have natural talent for managing people. As you know, I wasn’t one of those gifted people.

As a member of Premium Grade-A Introverts Club, I had to learn many things in the hard way.

Sumit: Member of Premium Grade-A Introverts Club… 😆 😆 😆. You changed a lot, but your witty humour still remains the same.

Vikram: Before I came to Hyderabad for a job, I lived in a tiny world consisting of my own family members, a very small group of relatives, and a maximum of five or six friends. That’s all. That’s my world.

Going to new places or talking to new people makes me nervous. I used to avoid the difficult conversations at all costs.

When we do anything wrong, out of love or not willing to tell us on the face, our family members and friends won’t say it directly to us. Usually, we will be the last one to know if we did anything wrong. Simply put, there was no “feedback” from my close family members or friends.

When I started working, I realized that coworkers or people on the internet in general are very eager to say you are wrong. And, sometimes they won’t say it in a constructive or polite way. Dealing with this was my first struggle.

I had to learn many leadership qualities in the hard way.

Sumit: It’s just not you, many people don’t have leadership qualities by birth. Unfortunately, many organizations don’t put efforts in grooming the people to cultivate leadership qualities in their team members.

I know you were a bit short-tempered back then. Did you face difficulties because of that?

Vikram: Not really. As a TechLead, I was having many other challenges.

When people think about “TechLead”, most of the people focus on their technical skills. While having strong technical skills is mandatory, to be a good TechLead, one should have many other qualities:

  • Be able to see things from other’s perspective
  • Understand different working styles of different team members
  • Be good at having difficult conversations
  • Understand the trade-offs, pick a choice and take it to the finish line

Understand different working styles of different team members

If you remember, I wasn’t very good at handling surprises. To compensate for that, I used to plan everything and strictly follow that.

I am the kind of person who reaches railway station at least 1 hour before my departure time. I will be there in the airport minimum 2 or 3 hours before, just to avoid the unexpected traffic jams, etc. If I put an alarm for 4:00am, then most likely I wake up at 3:30am and kept looking at the clock till 4:00am. I am usually very cautious about the things that are not in my control.

Unknowingly, I expected the same qualities from my team members. But people have different lifestyles, different ways of dealing with situations, etc. Expecting them to behave exactly the way you behave is wrong.

Usually, I hardly ever miss submitting a timesheet, sending an email to a client, etc. But some team members are very lenient in those things and often miss doing those things. That used to bother me a lot. Though I didn’t express those feelings at my team members, I used to get pissed off at these things very often.

At one time, we are supposed to give a demo to a client. We deployed the application in QA environment, setup the test data properly and also informed everyone not to mess up the test data. One of the team members usually gives such presentation because she knows most about the system and is really good at presenting.

There is always someone who fuck up things just before the demo. One of the team members wanted to see how to customize some setting, changed some setting that results in failing all the write operations.

I was panicked and not sure how to fix that issue within such a short span of time.

The client and all the project team members assembled in a conference room. She started presenting the features we built so far, and demonstrating all the features that involve read-only operations. When it comes to demonstrating features that involve write operation, she entered all the data in the form and said “this is how you can create this new entity” without actually clicking on the Submit button. She presented it so beautifully that none of the client team realized that she never clicked on the Submit button during the entire presentation. The demo went really well, and the client team liked the demonstration very much.

I was in awe of her seeing how she handled the situation like a boss 😎.

That was the first time I realized; different people excel in different areas in different ways. Some people are good at planning and following the plan in normal times, which usually goes ok. But when things go wrong, some people handle the chaotic situations really well.

Expecting all your team members to be just like you is very wrong.

A few years later, in a different company, I was in a session that talks about Myers-Briggs Personality Types. That’s when I learned that I need to understand each team member’s working style to bring best out of them.

Sumit: I always wonder why many companies invest so much money in things like Scrum Certifications etc, but don’t invest time and money in training their team members to improve their leadership qualities.

As you said, some people have natural talent for dealing with people. But it’s not something that we can’t learn. If the proper guidance and training is provided, many people can become good leaders.

Vikram: Exactly.

While I was going through this learning phase as a TechLead, I also enjoyed a lot working with some junior developers.

We, experienced developers, might have implemented a feature following certain approach in the past. When a similar requirement came up again, we simply follow the same approach again. But some junior developers, who don’t know about the previously followed approach, may think and come up with novel ideas.

Back in 2009, one of the junior developers in my team asked me why don’t we bundle javascript, css, etc as a Jar and use it, long before WebJars became a thing.

In 2013, one of my team members told me his idea of generating all the web pages ahead of time as it’s all static content. It was long before Static Site Generators were as popular as today.

Sumit: Well said, some of the junior developers come up with novel ideas and energy into the team.

While the experienced developers are struggling to balance work and personal life, they bring some energy into the team.

A while ago, we had a junior developer in our team. He is not that good when it comes to technical skills. But every day as he enters into office, he wishes everyone in the team, crack some jokes making everyone smile, plan team lunches or outings, etc. He made the workplace a lively place.

Recently, he left the company, and now I see everyone minding their own work, interacting with each other only about the work. There is no personal bonding among the team members.

Some people may not bring great technical skills to the table, but they bring the energy and bonding that keeps the team together.

Team Bonding

Now the rest of the team members are mostly 8+ years experienced, married and have children.

Now part of my job became dealing with their mood swings!! 😛

Vikram: hahahaha 😂 😆 😂

In one of my previous companies, I was in a team and all of us very close. Each of us knows about the other’s personal life to some extent, we were that close.

One of the team members(Susmitha) is really good in terms of technical skills, how she communicates with the client, etc. But occasionally she acts weird and gets angry for small things.

Then another team member(Varun) used to look at all the team members and pretend to be announcing 🎤 :

It looks like Susmitha’s in-laws came for a visit. For the next 3 days, please bear her, Thanks for your cooperation.

And everyone, including Susmitha, burst into laughter 😆

Team Laughing

On a serious note, I learned that being empathetic is the most important skill to be a good leader.

When you are married and have kids, you need to take care of a lot of things at home and office. And usually, something or the other goes wrong, and we need to cope with all that while trying to meet the official work deadlines.

While some “enlightened personality development gurus” tell you to wear a husband/father hat at home and wear the employee hat at office, it is not that easy in practice. We are not robots to switch on and off feelings and emotions.

In the beginning, I couldn’t understand why some team members who usually behave very rationally, behave aggressively at times. After going through various struggles myself, now I understand.

Sometimes we have no idea how many struggles the other people are going through in their personal lives. Being empathetic and kind to them is the least thing we can do for them.

When I see someone going through hard times, I usually leave them for a few days without assigning any critical work. They usually swing back in a couple of days with renewed energy.

Sumit: Hmmm… It seems like stepping into TechLead role makes you learn more about people than technology.

Vikram: Yes.

Do you remember, we used to feel that the managers are getting paid more while the developers are doing all the work?

Sumit: Oh yeah, that was our favourite topic to bitch about managers 😜

Vikram: Once I stepped into TechLead role, now I truly understand why they are getting paid more.

Being responsible for your own work is relatively easy. Even if you underestimate some task, you can work a few more hours and get it done.

But, as a manager, you have to get it done by your team members. You can’t do all of their work. You have to trust the team and try your best to get it done.

Some team members keep saying 80% of the task is done until the last moment, and at the end of the Sprint they ask some question that they should have asked day 1.

Some people feel sick on Mondays or Fridays, and you know that’s just a lie they are telling you to have a long weekend.

As a TechLead or manager, you have to consider all these factors while giving any project estimates to the client.

Being responsible for something that you are not doing entirely yourself will always bring some stress of unpredictability.

Sumit: Now, the managers look like super-humans to you. Isn’t it?

Vikram: hahaha

The biggest struggle while going from Senior Developer into TechLead role is dealing with the feeling that you are not contributing to the project that much.

As a tech lead, you need to talk to the clients, BAs, prepare backlog items, provide the estimates to managers, help other team members if they got stuck, etc. You hardly get time to implement any features by yourself.

At the end of the week or month, if you have to list down what you have done, you hardly remember anything. You may have done a hundred small things, but nothing comes to your mind that looks like a significant contribution.

Luckily, an architect noticed that I was struggling with this, and one day he took me to lunch and said:

Mentoring

You might have worked on many applications by now, and you know we hardly get to do anything completely new. Given time, you will implement that similar feature again one more time, maybe a little bit faster than others. But can you become 3x faster? 6x faster? or 10x faster? No, you can’t just multiply your productivity by writing code faster. The only way to multiply your productivity is by coaching, mentoring and teaching others.

I have seen you struggling with trying to implement at least some features in every sprint by yourself. The management is not going to ask you what features you implemented yourself, nope. They will ask you whether you are able to deliver the work as per the committed timelines. So, stop beating yourself up.

The success of a TechLead is measured in terms of team productivity, not by how many stories you have implemented by yourself.

His words have a strong impact on myself, and slowly I tried to follow his suggestion.

Along the way, I learned many things over the years.

In the beginning, while giving any demos if things didn’t go as planned, I used to feel embarrassed. But now I reached to a point where I can crack “Demo gods are not in our favour today” joke and shrug it off.

While all these challenges are on one side, there is another side that was even more challenging to me. Having difficult conversations.

As a TechLead, at some point of time, you need to have difficult conversations with others. It could be about a tech stack selection, performance reviews, feedback sessions, or resolving a conflict between team members on their opinions. Especially, when you are working at a place where the people are highly skilled and also have strong opinions, it will be challenging for TechLeads and Architects to deal with conflict of opinions.

Sumit: I saw in some meetings recently. It looks like you got better at having difficult conversations a little bit.

Vikram: I guess so. And as usually, I ended up learning that in the hard way.

Next: Chapter 05 - Having Difficult Conversations (coming soon)

comments powered by Disqus