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.
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.
ah, memories... I once worked with a fellow who started every pontification 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...
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.
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.
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.
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.
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;
}
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.
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.
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.
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.
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.
EDIT:
+1 for Tobias' answer. Prove that you're not a whining loser 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. There is not much to be said in this situation, be strong or leave.
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 but 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!]
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.
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.
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.
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.
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.
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.
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:
Your company's interviewing & selection processes are not up to scratch.
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.
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.
发布评论
评论(27)
对于这些情况,我的建议始终是“如果你不喜欢现在的情况,请等待 6 个月”,事情通常变化得那么快。 我在一家公司工作了不到5年,有5位不同的经理。 没有人喜欢在工作中表现不佳,如果他表现不佳,他可能会后悔自己的决定,改变自己或继续前进。
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.
MusiGenesis 和 Jason Stevenson 的观点是正确的。
让我在他们所说的基础上补充一点:
让你的老板取得成功。
你的老板可能在技术上无能(我们不知道,他不是在这里为自己辩护),但他可能有能够与公司其他成员顺利相处的技能,或者他可能拥有大多数开发人员所不具备的营销技能,或者与关键利益相关者建立牢固的关系,让你的生活变得更轻松[不是你一定会知道它,因为这些东西对于大多数开发人员来说基本上是不可见的]。 关键是要明白他的责任与你的不同,而且他的负担更大。 他需要援助之手和盟友。
试一试。 尊重他,记住即使人们在事情上犯了错误,他们也可以值得尊重。 这一切都归结为人性和有限性。
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.
啊,回忆……我曾经和一个同事一起工作,他每一次夸夸其谈都以“嗯,以我十年的经验……”开始,
他并没有真正拥有十年积累的经验,他一年经验十倍!
如果领导不称职,请尊重制服(如果不是那个人),并完全按照他的决定去做——并记录他告诉你要做的一切、时间和原因,以及你巧妙地提出的反对意见,以便当他跌倒时他不会跌倒在你身上。 这应该平衡你对公司的责任和自我保护的责任。
与此同时,寻找更好的工作! 很可能,如果提拔这个人的人没有意识到他/她的无能,事情很长一段时间都不会改变......
ah, memories... I once worked with a fellow who started every pontification 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...
你可以退出吗?
you could just quit?
假设你有称职的管理层(考虑到他们选择的领导者,这可能是不可能的),事实总是会明显地表明他们的选择是一个糟糕的选择。 正如之前所说,他最终会自掘坟墓,但请确保不要让项目因此而受到影响。
如果管理层开始担心这些问题,请主动介入并帮助解决问题。 这不仅会证明你有能力完成他的工作,而且会做得更好。
作为开发人员,您还有责任客观地告诉管理层哪里存在技术问题(无论是与开发人员有关还是其他问题)。 如果你觉得他让你从事的项目面临风险,你必须介入并表达你的观点。
此外,最常见的错误之一就是在这种情况下进行激烈的争论。 不要让你的情绪控制你。 请记住,无论他是多么糟糕的开发人员,他仍然有可能在某些事情上是正确的。
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.
上次我们有一个人非常了解所有最新的 oo 术语,并且想尝试所有最新流行的设计模式。
他做到了——而且该应用程序花费的时间大约是应有时间的两倍。 该公司只需要一款一次性应用程序,并且需要快速完成。 所以,尽管代码很漂亮、很优雅,但项目还是失败了。
无知确实很糟糕,尤其是在领先的情况下。 但是,在根据某人对最新流行技术术语的了解来判断他们之前,我会小心谨慎。 有时完成工作的简单能力或其他人为因素也很重要。
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.
如果情况不能很快改变,请考虑离开或调到其他部门。 如果公司或老板提拔这样的人担任团队领导,那么想要取得成功是很难的。
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.
我会让他自我毁灭。 让别人知道你的想法,但如果没有必要,不要无理地推行它们。 这个想法是让他不听从你的建议而上吊自杀,而事实证明这是正确的。 如果你表现得得体、有礼貌并且不违抗命令,他的老板应该会注意到。 如果这不起作用,您随时可以找到另一份工作。
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.
我也遇到了同样的事情......
这家伙有超过10年的“经验”。 几个月后,我的眼帘就被揭开了:他的“经历”或多或少类似于:
我的解决方案? 我忍住了,然后第一次就继续前进!
编辑:
毕竟,他更像是一个“收割者”而不是“领导者”
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:
My solution? I endured, then moved on on first occasion!
Edit:
After all, he can be described more as a "reaper" than a "leader"
我的团队负责人(在一个 2 人团队中,由他和我组成)声称拥有 7 年 .NET/C# 经验(与我相同),并且在此之前还拥有其他语言经验(我没有)。
我不知道这个家伙睡在什么石头下,但是当你看到这样的代码时:
然后他仍然浪费时间在这个琐碎的东西上编写单元测试(我们已经有一个不可能的最后期限迫在眉睫)任何 1-2 年经验的人应该知道。
除了不知道如何正确使用 FileStream(BinaryReader 怎么了?;p)之外,他没有意识到有
File.ReadAllBytes
。无论如何,当我看到他“贡献”的这段代码时,我告诉他上面提到的功能。 我什至通过电子邮件向他发送了 MSDN 链接,但由于 Outlook 被关闭,他没有收到该链接。 然后我到外面抽烟了十多分钟,才把下巴从地板上抬起来。 当我回来时,他仍然找不到方法。 他尝试类似“new File().Rea...”之类的方法,说该方法不存在。
我可能应该闭嘴并等待他签入他的代码,但这可能是几周后的事......
我还向经理解决了有关他的各种问题,并且我们进行了小组讨论以解决其他问题。
不管怎样,我仍然尽我所能地努力工作。 知道你是 2 人团队中唯一贡献任何代码的人(我不认为我见过他手工编写超过 200 行代码),每周投入 60 多个小时,这确实令人沮丧。
我目前的情况。 :|
注意:该代码与我记得看到的不完全一样,它更长,并且可能更多地检查现有文件和/或关闭流。
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:
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.
如果你的团队领导不称职,它不应该让你/你的工作受挫,除非它直接影响到你。 就这么简单。
你知道你比他更好。 所以,做好你的工作,并取得优异的成绩。 展现您在项目成功方面的才华。 为什么要花时间担心团队领导呢? 如果他/她有 10 年的经验,但不知道他应该知道的事情,这对他而不是你不利。
是的,如果他做出了某些错误的技术决策,例如在提出设计或其他建议时,您可以随时提出您的建议,并优雅地说服每个人您的建议更好。 但要以一种好的方式去做。 以粗鲁的方式谈论 10 年的经验。 一个人不会对你有任何帮助,因为自我因素进来了。
让他意识到你在你的行业中很擅长(以一种好的方式),并且这会给你带来奇迹,他可能会确保你在别人面前得到很好的展现。顶上老板。
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.
通过 管理你的经理,尤其是微观经理。
Manage your manager by managing your manager, especially the micro managers.
布莱恩,
这是你的团队领导。 别再胡闹了,回去工作吧!
Brian,
This is your team leader. Stop screwing around and get back to work!
展现出你自己的能力,永远不要因为团队中的分歧而让项目受到影响。
向你的老板表明你或其他人可能是该职位的更好选择。 坚持住,尽量不要失去热情。 恪守职业道德,做好本职工作。 但如果视线完全没有变化,您可能需要寻找其他东西。
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.
如果我管理你们俩,你们的一些抱怨会让我认为问题并不 100% 是他的错。
他是否真的“不花时间思考”就提供了解决方案,或者他向您提供了根据他的经验得出的解决方案,但您认为这些解决方案是一个坏主意?
你应该更喜欢组合而不是继承吗? 我个人同意,但在一百万年内我永远不会指责那些支持继承的人“技术上无能”。
他是否没有“掌握”设计模式,或者他只是没有使用相同的术语?
指责同事技术无能是一项相当严重的指控。 您需要提出一个不依赖于软件中合法辩论的案例。
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.
只要和你的老板谈谈就可以了。 保持客观,用具体例子展示技术主管错误/不称职的情况。 你能做的更糟糕的事情就是与技术主管进行斗争。 只是升级问题。 如果你的老板是一个通情达理的人,他会找到一种方法来帮助你,否则你就不走运了:)
如果技术主管的决定影响了你的工作,你不应该保持沉默。 否则出现问题将由您负责。
我与领导和下属之间存在这样的问题。 尝试与人本人谈判很少能得到预期的结果。 让它成为你的老板/员工经理的问题。 成功的关键是客观且有说服力。
编辑:
托比亚斯的回答+1。 证明你不是一个抱怨的失败者,也许你会成为新的团队领导者。 无论你的技术主管多么愚蠢,你都应该始终做好你的工作。相信我,经理欣赏负责任的员工。 不要破坏项目,采取积极的应对措施(不要忘记检查当地的工作清单)。
当然,在极少数情况下,你的老板是你的技术主管的密友,或者很多经理都会支持他。 这种情况没什么好说的,要么坚强,要么离开。
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.
EDIT:
+1 for Tobias' answer. Prove that you're not a whining loser 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. There is not much to be said in this situation, be strong or leave.
坐下来,让他上吊自杀。 你没有理由做任何事。
Sit back and let him hang himself. There is no reason for you to do anything.
他无能吗? 或者你只是因为青春的傲慢而脸红?
他可能无能,但也许他只是技术上没有你强。 在考虑谁担任团队领导时,技术能力只是一个因素。
也许他质疑你的技术能力和专业判断力? 也许你应该与他接触并与他讨论你的不同方法。 你实际上可能从他那里学到了一些新东西,或者你可以向他展示你的优势,他会逐渐依赖你的建议和意见——甚至可能在更高层为你说几句好话。
我遇到过一些糟糕的团队领导者和一些伟大的团队领导者。 在每种情况下,我都认为我在专业和技术上都优于他们。 有时我是,但很多时候我只是不欣赏他们的优势——这大概就是为什么他们在排名上领先于我。
最终,如果这个家伙是一只真正的火鸡,你必须笑着忍受,否则就离开。 把他晾在一边不太可能给你带来任何好处——优秀的团队领导者必须表现出良好的政治、个人和行为能力。 商业技能,并且必须能够与各种可能尴尬的人一起工作。
[郑重声明,我的一位直线经理太糟糕了,以至于我离开了; 知道自己什么时候被打败也是一项有价值的技能!]
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 but 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!]
团队领导者领导的是团队,而不是项目。
作为一名专业人士,您应该了解技术知识,团队领导会信任您。
也许一名开发人员应该领导该项目并领导技术方面的工作。
A team leader leads the team, not the project.
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.
根据我的经验,那些通过参与开发项目的各个领域来展示自己的价值、经常帮助他人完成具有挑战性的任务、更重要的是愿意采取主动并做完成项目所需的事情的成员会获得成功。他们的努力得到了回报。
无论奖励是以头衔的形式出现,还是在好评后升职,这都会发生。 如果你就是那个人,你的团队领导已经知道这一点,并且可能会被吓到; 他/她的老板很可能也知道。
如果你在评审时获得好评并获得奖励,那么时不时地让你的团队领导看起来不错只会对你的职业生涯有所帮助。
您会发现,通过帮助项目取得成功,并利用战略机会向团队领导展示做事的“正确方式”,您将培养一个盟友,而不是一个对手。
如果他/她真的不知道如何领导或激励,这就是你想做的。 然后就去做吧。 领导你的队友,但要让他们尊重你的知识广度。 其他经理会看到这一点,你可能会感到惊喜。
如果您想成为领导者,您应该联系您的团队领导,询问您是否可以在下一个项目中发表意见。 他/她可能会很乐意让您减轻他们的一些负担。
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.
你别无选择,只能继续尽你所能,为团队提供最好的想法。 为什么?
团队未能成功也会被管理层视为你的失败(除非他们非常精明)。 这是一种糟糕的情况,但几乎每个人都曾经遇到过这种情况。
如果团队领导在明显错误的情况下不断无视您的建议,请撰写一份深入的解释,说明为什么您认为应该以不同的方式处理任务,并将其提交给所有团队成员。 尝试让团队达成共识,远离团队领导的专制。 只有在多次失败之后,您才应该考虑升级问题。
我不建议升级问题,除非:
丑陋的。 即被解雇或重新分配的人,包括你。 据我们所知,您的团队领导是对的,也是错的;)
完成此操作后,继续清晰简洁地提出您对团队领导的技术决策的反对意见,并附上理由和示例,说明为什么您写下这些内容以及他们是错误的,然后开始将它们抄送给您的老板和团队领导的老板。
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:
ugly. I.e. people to get fired or reassigned, including you. For all we know you're team lead is right and your wrong ;)
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.
Gishu - 你是我的团队吗? jk。
我认为对于团队领导来说,“缺乏主要领导技能”比“技术上无能”更严重。 如果团队领导依靠团队成员提供一些技术指导,那么他可能会非常有效。 但是,如果团队领导不倾听/学习,不促进沟通,并试图将结构强行灌输给每个人(而不理解他们),那么就会出现问题。
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.
尽自己最大的努力做好自己的工作。
不要向那些给出不好建议的人寻求建议。
阅读“如何赢得朋友并影响人们”并尝试帮助他“得到它”。
Do your own work to the best of your ability.
Don't ask advice from people who give bad advice.
Read "How to Win Friends and Influence People" and try to help him "get it".
在软件开发中,首要的资格是承受压力的能力。 头痛总是会以这样或那样的方式出现。 只为你寻找美好的事物。 目前,午餐时间散步二十分钟是我最喜欢的工作部分。
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.
我是通过艰难的方式才学会这一点的——本质上是作为他的促进者,因为我认识他很长时间了。 再也不!
你有三个选择(嗯,确实是无限的,但对我来说这三个似乎可能是积极的途径):
记录他做错的所有事情、他表现出无能的事件以及他如何成为团队的支柱。 向他提供这些信息并向他解释,他可以优雅地要求重新分配,或者你去找他的老板。 你不会因为他而获得任何积分,但你在乎吗? 如果他的老板替他击球,准备好走。 我喜欢这个,因为这可以让他挽回面子。 如今我们不倾向于做很多这样的事情。
要求调到组织内的另一个小组。 您可以完全诚实地说明原因。 准备好步行。 如果你确实是公司的资产,你可以利用它来获得一个不受这个莳萝控制的新职位。
步行。 当我明确我的产品经理不会采取任何措施来解决问题后,我最终就这么做了。 他本质上和我的直接主管一样无能。 最后,我很高兴他们无能,因为他们强迫了我,结果我找到了一份很棒的工作。
在我看来,你有三个选择:摆脱这个人,离开他的团队,离开公司。 一个有才华的开发人员没有理由不能找到比他/她现在更好的工作。有太多的人急需有才华的程序员。
一切顺利!
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!
我去过那里,伙计。 首先尽力做到最好并留在原地,那家伙可能会失败并很快离开。 但是,如果您觉得自己的理智受到威胁,请换一个职位。
干杯,
阿里
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
有时,你需要超越他无能的直接问题,首先看看导致他被雇用的过程。
如果您公司的招聘实践允许“有经验”但不称职的团队领导,您应该考虑以下事项
您需要问问自己是否可以采取任何措施来改善公司的招聘实践。 如果您认为可以,请尝试一下。 然而,如果你公司的文化表明这显然是不可能的,那么我建议你掸掉你的简历。
我正好遇到了你的问题。 就我而言,从第一天起就很明显这个人无法应对挑战(而且我 99.999% 确定他没有阅读 StackOverflow!)。 我向我们的首席执行官解释了情况,他最初给了我一些希望,希望事情会有所改变。 然而我发现他只是口头上回应我的抱怨,结果什么也没发生。 两年后,我们的组长终于被“降职”,被迫辞职。 基本上他被解雇了,但我们的首席执行官花了两年时间才解决了一个不应该恶化那么久的问题。
祝你好运!
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:
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!