One of your team members has been appointed "technical lead" or "team lead" yet he is technically incompetent and lacks major leadership skills.

By technically incompetent, I mean that the person doesn't know the difference between an abstract class and an interface, doesn't understand why coupling should be avoided, doesn't understand the concept of cohesion, provides solutions without taking some time to think, doesn't understand why we should favor composition over inheritance and doesn't get design patterns (except the singleton pattern).

Plus that person has over 10 years of "experience" (yes, I did put that word in quotes because he's given a whole different dimension of what experience really is).

I'm dealing with such a person at work. It's taking away the passion I have for this profession.

How do you react? What do you do?

+19  A: 

Just talk to your boss. Be objective, show on concrete examples when tech lead was wrong\incompetent. Worse thing you can do is to fight with tech lead. Just escalate problem. If your boss is a reasonable person he will find a way to help you, otherwise you're out of luck :)

If tech lead's decisions affect your work you should not be silent. Otherwise you will be responsible for problems.

I had such problem with leads and subordinates. Trying to negotiate with person himself rarely gives desired result. Make it a problem of your boss/staff manager. Key to success is to be objective and persuasive :)


+1 for Tobias answer. Prove that you're not a whining looser and maybe you will become the new team leader :) You should always do your job well, no matter how stupid your tech lead is. Believe me, managers appreciate responsible employees. Don't sabotage project, take active counter measures (and don't forget to check local jobs list :) )

Of course there might be a rare situation when your boss is a close friend of your tech lead or a lot of managers will support him. It's not much to be said in this situation, be strong or leave :)

Before you do this, line up some job interviews. Even if there's a chance of a pay cut off some of those interviews, it limits your loss.
Marcin, it is always a good idea to have plan B :)
+4  A: 

Sit back and let him hang himself. There is no reason for you to do anything.

Geoffrey Chetwood
Why has this been down-voted? This is actually a really sound solution if you have the patience.
leek, if tech lead affects your work you will be hanged on the same tree :)
For the good of the company, you should speak up - otherwise more damage can be done
Speaking up may sound good, but for those of us in the real world, it will only lead to more problems and tension around the office.
Geoffrey Chetwood
considering that the team lead might have ... oh say 10 years with the company, who is going to believe the 4 month employee that the team lead is leading the project to death ... *shrugs*
MagicKat, if team leader have been worked for 10 years, than probably he successfully finished a lot of projects. Otherwise it's a doomed company.
i must agree, if he's incompetent, don't cover up for him, do exactly what he says
Steven A. Lowe
@Steven Lowe: but get the important parts in written form.
David Schmitt
+33  A: 


This is your team leader. Stop screwing around and get back to work!

Fearless Leader
Yes, fun. But I don't know if this is worth a +8
Fearless Leader is a fearless leader I guess. :)
Nothin like a good ~250 rep!
Given that neither Brian nor Fearless Leader have been seen since this question, I wonder if it _was_ his boss!

I would allow him to self destruct. Let your ideas be know but don't unreasonably push them if you don't have to. The idea is to let him hang himself by not following your advice that turns out to be true. If you are tactful, respectful, and not insubordinate his boss should notice. If that doesn't work you can always find another job.

Do this. But start looking for another job anyway.
+1  A: 

you could just quit?

if someone is incompetent why should you quit?
Chandan .
+28  A: 

Show competence yourself and don't ever let the project suffer because of a disagreement in your team. Show your boss that you or someone else might be a better choice for that role. Hang in there and try not to lose your passion. Stick to your ethics and do your work well. But if there's absolutely no change in sight, you might want to look for something else.

+4  A: 


In my experience, the members who demonstrate their worth by being engaged in all areas of a development project, and whom often help others with challenging tasks, and more importantly are willing to take initiative and do what needs to be done to complete a project get rewarded for their efforts.

Whether the reward comes in the form of a title, or a promotion after a good review it will happen. If you are that person your team leader already knows it, and may be intimidated by that; most likely his/her boss also knows.

If you are getting favorable reviews and being rewarded at review time, then making your team leader look good now and then will only help your career.

You will find that by helping projects to succeed, and taking strategic opportunities to demonstrate "the right way" to do things to your team leader you will foster an ally, rather than an adversary.

And if he/she truly doesn't know how to lead or inspire, and that is what you want to be doing. Then do it. Lead your teammates, but do it in such a way that they respect you for your breadth of knowledge. Other managers will see this, you may be pleasantly surprised.

If you want to be a leader, you should approach your Team lead, and ask if you can take point on the next project. He/She may be all to happy to allow you to relieve them of some of the burden.

Good Luck!

Jason Stevenson
+3  A: 

You have no choice but to continue doing the best job that you can and supplying the team with the best ideas that you can. Why?

A failure of the team to succeed will be viewed by management-types as your failure too (unless they are extremely savvy). It is a crapy situation, but one that almost everyone has been in before.

If the team lead continually disregards your advice when he/she is clearly wrong, compose a nice in-depth explanation of why you feel the task should be handled differently and submit that to all your team members. Try to move the team towards concensus building and away from the tyranny of the team lead. Only after that fails repeatedly should you consider escalating the issue.

I wouldn't recommend escalating the issue unless:

  • You are prepared for things to get ugly. I.e. people to get fired or reassigned, including you. For all we know you're team lead is right and your wrong ;)
  • You know the majority of the other well respected team-members agrees with you.
  • You have told the team-lead that you are willing to escalate the issue. Everyone deserves a chance to take corrective action, even your boss. If you haven't said as much to the team lead directly, then you shouldn't escalate the issue.

Having done that, continue composing your objections to the team-lead's technical decisions clearly and concisely accompanied by justifications and examples of why you are write and they are wrong and start CC'ing them to your boss and the team-lead's boss.

+3  A: 

I've learned this one the hard way - by essentially being a facilitator for him because I knew him for a long time. Never again!

You've got three choices (well, really infinite ones but three that seem like possible positive routes to me):

Document all the stuff he does wrong, incidents where he's shown his incompetence and how he's been an anchor to the team. Confront him with this information and explain to him that he can either gracefully ask to be reassigned or you are going to his boss. You won't earn any points with him, but do you care? If his boss goes to bat for him, be prepared to walk. I like this one because it allows him to save face. We don't tend to do a lot of this these days.

Ask to be transferred to another group within the organization. You can be completely honest as to why. Be prepared to walk. If you are truly an asset to the company, you can leverage this for a new position outside this dillweed's control.

Walk. This is what I ultimately ended up doing once it was clear that my PM wasn't going to do anything whatsoever to fix the problem. He was essentially as incompetent as my immediate supervisor. In the end, I'm glad they were incompetent because they forced my hand and I have found GREAT job as a result.

As I see it, you've got three choices: get rid of the guy, get out of his group, get out of the company. There's no reason a talented dev can't get a better job than s/he's in. There are too many of them out there just crying out for talented programers.

All the best!

An antagonistic response is very seldom productive. That's why I'm not voting this down, but strongly disagree with your approach.
Tim Post
+1  A: 

I've been there mate. First try to do your best and stay put, the guy may fail and leave soon. BUT, if you feel like your sanity is in danger, go for another position.

Cheers, Ali

Ali Shafai
+2  A: 

Sometimes you need to look beyond the immediate problem of his incompetence and look at the process that lead to him being hired in the first place.

If the hiring practices at your company allow an "experienced", yet incompetent, team leader you should consider the following:

  1. Your company's interviewing & selection processes are not up to scratch.
  2. Maybe, just maybe, you do have a good selection process, but you've just gone with the cheapest. I consider this unlikely, since any company that takes its selection process seriously is probably not going to let a good hire go just for a few bucks more.
  3. You are just unlucky and somehow he managed to slip through the cracks. This can happen if he was an internal hire and did not go through the same selection process as external hires do.

You need to ask yourself if there is anything you can do to improve your company's hiring practices. If you think you can then give it a go. However, if your company's culture is such that this is clearly impossible, then I suggest you dust off your resume.

I have encountered exactly your problem. In my case it was obvious from day one that this guy was not up to the challenge (and I'm 99.999% sure he doesn't read StackOverflow!). I explained the situation to our CEO and he initially gave me some hope that things would change. However, I discovered that he was just paying lip service to my complaints and consequently nothing happened. Two years later our team leader was finally "demoted" which forced his resignation. Basically he was fired, but it took two years for our CEO to act on a problem that should never have festered for that long.

Good luck!

Mike Thompson
+3  A: 
  1. Do your own work to the best of your ability.

  2. Don't ask advice from people who give bad advice.

  3. Read "How to Win Friends and Influence People" and try to help him "get it".

+16  A: 

If I were managing both of you, some of your complaints would make me think the problem wasn't 100% his fault.

Does he really provide solutions "without taking some time to think", or is he presenting you with solutions derived from his experience, but you think the solutions are a bad idea?

Should you favor composition over inheritance? I personally agree, but I would never in a million years accuse someone who favors inheritance of being "technically incompetent".

Does he not "get" design patterns, or does he merely not use the same terminology?

Accusing a co-worker of technical imcompetence is a pretty serious charge. You need to make a case that doesn't rely upon legitimate debates in software.

+2  A: 

My advice on these situations is always "If you don't like the situation you are in, wait it out for 6 months", things usually change that fast. I worked for a company for less than 5 years and had 5 different managers. Noone likes to suck at their job, if he sucks he will probably regret his decision, change himself or move on.

Brian G

Assuming you have competent management (which may not be a possibility considering their choice of lead), the fact will invariably become apparent that their choice was a bad one. As has been stated before, he'll eventually dig his own grave, but make sure not to let the project suffer because of it.

If management starts becoming concerned by the issues, offer to step in and help fix the problems. This will demonstrate not only that you're capable of doing his job, but doing it better.

Its also your responsibility as a developer to objectively tell your management where technical issues (be them with developers or otherwise) exist. If you feel that he is putting the projects you work on at risk, you have to step in and voice that opinion.

Also, one of the most common mistakes is to get into impassioned arguments in a situation like this. Don't let your emotions get the best of you. Remember, no matter how poor a developer he might be, there's still a possibility that he's right about something.

Russell Myers
+1  A: 

In software development, the primary qualification is ability to withstand stress. Headaches will always be coming one way or another. Just look for the good things for you. A twenty minute walk during lunchtime is currently my favorite part of work.

+1  A: 

ah, memories... I once worked with a fellow who started every potification with the phrase "Well, in my ten years of experience..."

he didn't really have ten years of accumulated experience, he had one year of experience ten times!

if the lead is incompetent, respect the uniform if not the man, and do exactly as he decides - and document everything that he tells you to do, when, and why, as well as the objections that you tactfully raised, so that when he falls he doesn't fall on you. This should balance your duty to the company with your duty to self-preservation.

in the meantime, look for a better job! Chances are that if whoever promoted this person did not realize that he/she is incompetent, things won't change for a long time...

Steven A. Lowe
+8  A: 

Is he incompetent? Or are you just flushed with the arrogance of youth?

He may be incompetent, but perhaps he's just not technically as strong as you. Technical ability is one one factor when considering who to make a team leader.

Perhaps he questions your technical ability and professional judgement? Perhaps you should engage with him and discuss your different approaches with him. You may actually learn something new from him, or perhaps you can demonstrate to him your strengths, and he can grow to depend on your advice and opinions - maybe even putting in a good word for you to the higher echelons.

I've had some awful team leaders and some great ones. And in each case, I thought I was superior to them, professionally and technically. Sometimes I was, but often I simply didn't appreciate their strengths - which was presumably why they were ahead of me in the pecking order.

Ultimately, if the guy is a real turkey, you must grin and bear it or leave. Hanging him out to dry is unlikely to do you any favours - Good team leaders have to demonstrate sound political, personal & business skills and have to be able to work with a wide range of potentially awkward people.

[For the record, one of my line managers was that bad that I left; knowing when you are beaten is a worthy skill too!]


Happened the same to me...

The guy had over 10 years of "experience". After a couple of months the veil came off of my eyes: his "experience" was, more or less, akin to:

  • recruit a lot of interns
  • assign difficult (or impossible) tasks, knowing nothing about them
  • check in some months which was progressing
  • report to management the successfull ones, taking credit and boasting "great tech leader qualities"
  • repeat

My solution? I endured, then moved on on first occasion!


After all, he can be described more as a "reaper" than a "leader"


I have team leader (in a 2 man team, of him and me) that claims 7 years of .NET/C# experience (same as me), and another number of years before that with other languages (which I do not have).

I dont know under what rock this guy been sleeping, but when you see code like:

public byte[] ReadBytes(string filename)
  FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
  BinaryReader br = new BinaryReader(fs);
  FileInfo fi = new FileInfo(filename);
  byte[] buffer = new byte[fi.Length];

  for (int i = 0; i < buffer.Length; i++)
    // optimize this
    buffer[i] = br.ReadByte();

  return buffer;

And then he still wastes time on writing unit tests on this trivial stuff (we have a an impossible deadline looming already) that any 1-2 year experienced person should know.

Besides not knowing how to properly use a FileStream (whats up with the BinaryReader? ;p ), he didn't realize there was File.ReadAllBytes.

Anyways, when I saw this code he 'contributed', I told him to you the above mentioned function. I even sent him the MSDN link via email, which he did not get due to Outlook being closed. I then went outside for smoke for 10 odd minutes to pick up my jaw from the floor. When I came back, he still could not find the method. He trying something like 'new File().Rea...' saying the method does not exist.

I should have probably kept my mouth shut and waited for him to checkin his code, but that could be weeks from now...

I have also addressed various issues about him to the manager, and we have had group discussions to resolve other issues.

I still work as hard as I can, regardless. It does get frustrating knowing you are the only person in 2 man team, contributing any code (I dont think I have seen him write more than 200 odd lines of code by hand), putting in 60+ hours a week.

My current situation. :|

Note: The code isn't exactly as I remember seeing it, it was longer, and perhaps had more checking for an existing file and/or closing the streams.

+2  A: 

MusiGenesis and Jason Stevenson are right on.

Let me add one step past what they said:

Make your boss a success.

It may be that your boss is technically incompetent (we don't know, he's not here defending himself), but he might have the skills that smooth things out with the rest of the company, or he may have some skill like marketing that most developers don't, or a solid relationship with a key stakeholder that makes your life easier [not that you necessarily would know it, because those things are largely invisible to most developers]. The key is to understand he has responsibilities that are different from yours, and his burdens are bigger. He could use a helping hand, and an ally.

Give it a try. Treat him him with respect, and remember people can be worthy of respect even if they are wrong on things. It all comes down to being human and finite.


If your team lead is incompetent it should not frustrate you/your work unless it affects you directly. As simple as that.

You know you are better than him. So do your work and excel. Show your brilliance in making your project a success. Why spend time worrying about the team lead. If he/she has 10 years of experience and doesn't know things he is supposed to know it's bad for him and not you.

And yes, if he is making certain wrong technical decisions for example in proposing a design or something you can always put in your suggestions and gracefully convince everybody that your suggestion is better. But do it in a nice way. Speaking in a rude way to a 10 year exp. one doesn't do you any favor because ego factor comes in.

Make him realize you a good in your trade (in a nice way) and things it will work wonders for you, he might make sure that you are projected well in front of top boss.

Chandan .

Manage your manager by managing your manager, especially the micro managers.

Jas Panesar

We had a guy on our last time who was very up on all the latest oo jargon, and wanted to try out all the latest trendy design patterns.

He did -- and the app took about twice as long as it should have. This company just needed a one-off app, and needed it done quickly. So, although the code was beautiful and elegant, the project failed.

Ignorance does suck, especially in a lead. But, I'd be careful before judging someone on their knowledge of the latest trendy technical jargon. Sometimes simple ability to get the job done, or other human factors, can be important too.

Same situation here, but im doing all the coding and learning all these technologies he chosen :(
yeah, I had to work on this after he left too! It was good for my resume, but it was waaaay over-complicated. Good luck!

Gishu - are you on my team? jk.

I think "lacks major leadership skills" is a far worse crime for a team lead than "technically incompetent". A team lead can be quite effective if (s)he relies on the members of the team to provide some technical guidance. But if the team lead does not listen/learn, does not foster communication, and tries to ram constructs down everyone's throats (without understanding them), then there's a problem.

+3  A: 

A team leader leads the team, not the project.

  • It protects the team against interruptions.
  • It takes care of the problems of the team.

You, as a professional, you should know about the technical stuff and the team leader will trust on you.

Perhaps one of the developers should lead the project and lead about the technical stuff.

+1 for the difference between project leaders and team leaders.

Consider leaving or moving to a different department, if things don't change soon. It will be hard to succeed at a company or under a boss that promotes people like that to the team lead.