views:

640

answers:

9

I'm facing something of a crisis of faith.

As I find myself being diverted onto more and more administrative tasks or functions other than direct hands-on development, it's become more and more glaringly obvious that my technical ability is diverging from that of the team.

Do you believe it is possible to maintain credibility and respect as a team lead if your technical skills no longer match your team's top players?

Also, given that team leads typically are such in name only (i.e. HR departments are often quite reluctant to recognise the position of team lead as it would potentially create a strong argument for higher remuneration / benefits), how concerned should I be that I'm getting less active coding time with very little formal recognition of my other responsibilities?

+8  A: 

I think tech leads should be generally technically competent. I don't think they have to be more knowledgeable on every aspect of the project though.

I remember leading a project where I knew very little about any individual area - but just enough to see the bigger picture, guide resources away from less important bits that just needed polishing towards more crucial aspects etc.

Don't forget that leadership takes time - time which won't be spent coding. From this perspective it makes sense not to have your absolute best coders leading...

Jon Skeet
That's actually quite a refreshing way to turn the question around. Quite a fair point that your best people (development skill-wise) should be applied to the core task.
Phil.Wheeler
Congratulations on reaching a ludicrous level of reputation, BTW. Well-earned, I'm sure.
Phil.Wheeler
@Phil.Wheeler, it's quite an ironical situation. leaders usually being chosen from best devs, but best devs should do what they are good at - development :)
aku
@aku - let's not get too far ahead of ourselves here. I would never presume to suggest I was chosen from the best devs. I was just stupid enough to stick my head above the parapet, as it were. :-)
Phil.Wheeler
+1  A: 

I guess it is a problem that all team leaders emerged from programmers are facing including myself. Giving that you will be doing PM\TL activities most of the time it is inevitable that the distance between you and top-coders will be increasing. Personally I think it is not a problem as long as you can trust your programmers. Of course you should stay tech-savvy to understand what is going on and not looking too stupid during some technical discussions but having in-depth knowledge is not required at this stage of a career. I'm senior PM right now and at the first time I felt quite uncomfortably that I don't write some important code myself or don't know all nuts and bolts of some new technology but as long as I have right people for such tasks it is not a problem anymore.

aku
It is comforting to know that other people in the same situation may be asking the same questions. I suspect finding another TL within the company to bounce ideas of and compare notes with may be of use.
Phil.Wheeler
+16  A: 

I have no experience of firms where tech leads "are such in name only" -- I'm sure many dysfunctional firms exist, I just was lucky enough to never work for, or consult for, one sufficiently effed-up to decree that.

In my luck-biased experience, the tech lead is the guy in the team with the best blend of tech skills, OVERALL skills as opposed to specialized-tech ones, and human skills related to dealing with others in the teams AND outside-team stakeholders, esp. ones w/a business perspective. In many teams there will be somebody who grasps one niche of the tech involved better than the lead -- maybe it's the DB, or the JS framework, or HTML/CSS , or networking, or... many projects range too far and wide for the lead to be on top of EVERYthing.

BUT, the lead will be the guy (5-10 years experience typical) who's tech knowledgeable enough to see the tradeoffs between optimizing the DB parts, the JS parts, the HTML/CSS parts... AND at the same time able to communicate w/the business-side stakeholders.

I've been lucky enough to manage tech leads who were indeed up to this incredible challenge, even ones with <5 years experience -- though that's more the exception than the rule;-)... one tip: DON'T overload the tech lead with people management responsibilities == he's got WAY PLENTY on his plate already, if you're the manager, just shoulder that part of your job (with plenty of input from the tech leads you're managing once it comes to performance reviews and the like, of course;-).

Alex Martelli
I think our tech leads are also somewhat abnormal in terms of only having to deal with competent devlopers :)
Jon Skeet
@Jon -- true, and I should have mentioned it: in the average firm where the average employee's going to be an average (i.e., likely incompetent) developer, a tech lead's job is MUCH harder.
Alex Martelli
+4  A: 

Let's all be honest, and yield to the fact that we cannot outperform every developer at every skill. Note the word skill.

In an extremely well-developed team, this means the technical lead will not be the "best technical resource" for most, if not all, tasks.

So the short answer is don't be concerned that your skill set may be weaker than others. It's natural and quite common.

Technical ability or aptitude, on the other hand, is what differentiates a tech lead. The abilities in a tech lead should be analogous to the abilities of a (good) military general: You should be able to make strategic (and tactical) decisions that maximize effect with minimal force.

Here are some things I try to do:

Strategy:

  • identify how to organize code,
  • identify critical paths,
  • identify separation of concerns
  • implement best test/deployment strategy

Tactics:

  • find/implement productive practices, including using/building tools
  • utilize judgement in code reviews
  • communicate well with business and those awesome developers we work with

Summary:

If you are the guy who can maximize the effect of the collective team's effort, then you don't have to worry about respect, job security, or being left in the dust (I find that the developers I work with will happily drag me along and teach me a thing or two).

Jeff Meatball Yang
The military general comparison is a bit on the audacious side, isn't it? Fair points otherwise.
Phil.Wheeler
Reading it again, yes, a bit audacious. It was past my bedtime.
Jeff Meatball Yang
+3  A: 

Hi Phil,

excellent question! I find myself in the same situation as you as I am the technical lead for a team of 4 (including myself). Sometimes I feel like I get behind on the technical skills as I find myself doing more and more project planning, interact with management and handling productivity killers (such as urgent testing requests, presenting our work progress, etc.)

I aim to protect my top 2 developers by shielding them from those activities. I don't want them to switch contexts constantly because of outside requests. I'd rather they work uninterrupted on their current tasks.

Because they are engineers like me, I let them handle most of the technical decisions so that they can feel like their work matter. I just give them general directions and requirements, sometimes functional specs (not as much as I would like to). I am lucky that they have broad shoulders and I can trust their choices.

I try to pitch in when I see that the progress is slow but most of the time I do not get involved in technical details.

As for recognition, report the team progress but do not take all the credit. Make sure to mention your developers' names when they have done a good job. They will respect you for that and so will upper management. They will see that the progress was made by a talented individual under your leadership.

My paycheck is the same as other developers on my team. I do not see that as an issue as we all do important work but taking different aspect. The responsibility may be slightly higher for me as I'm the one to get hit when things go bad. In the end it doesn't really matter, we are all part of the same ship.

The lack of technical experience will be compensated by you leadership experience. This is always a plus on a resume. Leadership experience is harder to come by. Technical expertise, you can acquire on the side (working on an open source project for example).

Damien
This is helpful because I like the recognition that the TL should be advocating for - or protecting - the individual team members. Hopefully this is reciprocated by respect as a leader rather than purely as a developer.
Phil.Wheeler
A: 

Having been in a similar position, I think there are really two jobs here - a project manager role and a technical lead role, both of which, in my experience, generate enough work for a single person, but are often combined in the job of a single person.

Working with a team of seven developers and a number of ongoing projects, I found that the time possible to dedicate to both of these roles was suffering and stress levels were rising. Try and get some recognition for what you're doing...

Paddy
+1  A: 

The Tech Lead is the one with The Vision

Each team member might a particular area where his or her skills exceed the tech lead, but the tech lead is the person who knows what need to be done and how to do it.

Of course, if the Tech Lead isn't the most technically versed on the team, he or she isn't going to be able to garner credibility with or the respect of the team and its clients. There will be an informal channel to the guy who is the real-but-unacknowledged tech lead.

Mark Harrison
That's an interesting point about informal channels and leadership-by-proxy.
Phil.Wheeler
+3  A: 

I am reminded of a story my father told about a test for an officer in the Army. Someone going for the position of Captain was given a task to raise a flagpole. He had a Sergeant and six Privates and wood and rope of varying lengths. The solution? Say to the Sergeant: "Sergeant, get a flagpole up".

The point is, it wasn't the Captain's task to know how the flagpole was going to get raised any more than it was the task of the superior officer who gave him the order. If the flagpole didn't get raised, then it became his problem but until then it was up to someone else to solve the problem. Should the Captain develop better flagpole raising skills? No, that's not his job.

Your developers have the responsibility to do things right. Your responsibility is to make sure they are doing the right things, which is more important.

The skills you are building - how to manage a project, how to manage people, how to bridge the gap between the business and technology - are timeless skills that will transfer to any project. The skills you seem to think you are missing out on - deep knowledge of certain technologies - will be out of date in a few years anyway when the technology shifts.

As team lead you need to know what is possible, not necessarily how it is done.

Chris Latta
+1  A: 

The key skills for a team lead are being able to handle people and know the big picture. Big picture as in overall architecture, coding standards, etc. Things that individual developers shouldn't unilaterally decide. It isn't your job to code FizzBuzz in the latest Visual Studio in under 30 seconds, but it is your job to know what structure of things are you wanting to introduce and how is that going.

I'd think that code reviews and dealing with other people's code are where your coding skills will be used. I would suggest keeping a list of where in the project are you contributing so that you can put on a resume that you did blah blah blah.

JB King