Are Cocky Developers Worth It?
itmanagement.earthweb.com
itmanagement.earthweb.com
Cocky Youngster
Wrote a memory manager in C++ for Windows
No beard
Don't think I've ever used the phrase "mad skillz" to describe myself
Never played with Ruby
---
Well, you got one point right anyway. :-)
He said he was describing an archetype, and made no claim as to whether you fit it or not.
Maybe menloparkbum was just writing an ironical-kinda-funny comment, but I've known people very similar to the character in the article, I've occasionally been the character in the article, and I'd be surprised if at least a few of the regulars around here weren't similar to the character in the article.
I, myself, am a cocky developer. Additionally, my technical brain is better connected to my mouth and works far faster than my social brain. Often, my comments are misconstrued as attacks and it has significantly weakened my ability to impact decision makers.
I am however, well aware that I have problems. I aggressively seek out feedback and encourage those who provide it to "give it to my straight". Via this process, I have significantly improved my communication skills and developed some political tact.
This brings my to my next point: cocky people like to be right, but are well aware when they are wrong. If they are making statements which appear to be ad hominem attacks, they probably aren't doing it intentionally, or they don't mean any harm. So just mirror their behavior, be honest, be direct, tell them that their personality is hurting team moral, and suggest they try to improve themselves. Then, agree upon personal commitments of GROWTH AND IMPROVEMENT not instantaneous performance, which dictate their performance rewards.
Hell, I had one manager who requested to review all emails I sent to customers. My communication skills are many fold better for it.
Follow that plan, and I guarantee you can turn most any cocky coder into a productive team member. If you're lucky, that team member will even significantly educate the rest of the team and encourage them to do the same.
This is what people managers are supposed to do...
Be less vocal. You might be right in your opinion on some matter, but, you don't always need to express it. Some things are okay to be ... less than ideal. Let people make their own mistakes (just try to contain them to less important system areas). Teach rather than debate.
When you do have a strong opinion, try to phrase your comments as less oppressive suggestions. If over time people ignore your suggestions and it's a critical system component, only then become more assertive and vocal. People hate being told what to do. But if you plant a seed, they are much more open to modifying their view in the long run, after they have digested your reasoning.
Everyone likes to do things their own way. As long a business goals are being efficiently achieved, don't mess with things. It seems better to guide people than direct them.
It's bad enough in small teams, but in large teams people like this can be really destructive.
The whole thing was rather demoralizing and I left in the first month, after quickly learning not to contribute if I was intent on keeping my job for even that long. The other skilled developers left shortly thereafter. He now works mostly with designers-turned-developers and purposely hires less-competent developers so that he doesn't have to field criticism.
It's a little disappointing still, because there's a whole group of people who believe that myself and a group of talented ex-colleagues are incompetent because of this person's [intentional and petty] mischaracterizations and immaturity, but I'm trying to be over it.
I guess that's only tangentially apropos, but cocky developers are no fun, especially when they're in powerful positions.
If you're absolutely certain you're correct, it's natural to want to limit the amount of discussion, feedback, and argument you have to deal with. You've already made up your mind, and that's that, and it's unlikely that a convincing enough argument exists that would cause you to change your mind.
The catch is, you have to be really, really good at what you do in order to adopt this stance, otherwise it's just sheer overbearing arrogance.
That's where the conflict comes in. Most people, frankly, aren't that stellar at what they do. A lot of folks kinda muddle along, and often change their opinions about accepted practices whenever they read something that takes precedence over their experience. If you doubt this, I think you need only to read some of the security-related threads here on News.YC, or just about any thread on OpenBSD-misc that incurs the wrath of one of the developers.
Furthermore, if he was the team lead, and he established a particular syntactic convention -- for whatever reason -- and you didn't follow it, then -- and I say this as gently as I can -- you weren't doing your job. That doesn't mean you were incompetent, and I'm not looking to insult you. But, basically, you weren't following his rules, and he was within his authority to establish those rules. It sucks that his rules weren't written out, but on the other hand, it's really not all that hard to look at some code and then format yours similarly. (Especially with CSS.)
Then apparently the lead developer started hiring what you call monkeys. I call them trainable.
See, my grandfather had a similar problem. He was one of the best RF and cable TV distributions systems guys in the Bay Area up until he died a few years back. He was an idiotic businessman, but when he was dealing with the technology, he simply was one of the best. (I could bore you to tears with stories.)
He absolutely refused ever to hire anybody else with cable TV experience. He hated dealing with them, because they'd been taught all of these bad habits that he would first have to un-teach before he could even begin to get them to do things his way -- the right way. Instead, he hired people with no experience at all, and they naturally just followed his lead, along with a little coaching.
It isn't quite possible to do just that in software development, because I think software development requires an entirely different kind of thought process from just about anything else. But, I can see the appeal to hiring inexperienced developers, and making them do it your way right from the beginning.
In one instance, my colleague noticed a potential security hole in a PHP application and notified the lead ... who ignored it because "the application is running fine and I don't change production code lightly". Which is laughable because this dude actually edited code directly, live on the servers; there were no test servers, and we weren't allowed to set them up, so we just had to test what we could locally and cross our fingers when it was sent up to the real environment.
And so on. I mean, I could go on with things like this for a long time. But, the point is, it wasn't that he disagreed, it was that he was entirely unreasonable and wouldn't ever even listen. If you have a group of people that do things fundamentally different than you and aren't interested in adjusting, then it makes sense to jettison them for those who are somewhat more compatible. The thing is that we were interested in adjusting and adhering to style guidelines, corporate conventions, and similar, and I personally haven't had any substantive problems following varied style guidelines in the past, but they had no conventions or guidelines here, and developers were just left to catch on as best as they could and hope that it wouldn't set off the existing members of the "company family" ... which wasn't easy here.
And it's more than just the style guidelines. The act of physically typing code is not that exciting for most developers. This guy was not open to any input at all, and would shoot us down swiftly whenever we brought something that wasn't praise. It wasn't a matter of just disagreeing and then not being able to accept the boss's decision. The problem was what I typed, that he expected robots that would deliver without questioning or working to find the best solution. The whole point of an IT team is to work together and contribute and everyone listens to everyone and comes up with the best combinations of concepts, methods, etc. That's how a team of engineers works, and that's what makes IT enjoyable. That's not how it worked there. There, it's "Defy guy and be ridiculed and fired".
This is enough for now. You get the drift, I hope. They've been through three different sets of qualified people now (all the while oblivious that this man is the reason why all his subordinates left, despite being notified of such), so I think that's the main reason they've settled on on-the-job development training for designers instead of real programmers.
It is sheer overbearing arrogance no matter how good you are at what you do.
Arrogance is not a characteristic reserved only for the less competent, and it is never a positive trait in even the most competent.
The only difference between a competent jerk and an incompetent jerk is that it may be worth your while to make an effort to look past the less-than-desirable qualities of the competent jerk in order to take advantage of the good advice he or she may have. This does not mean that competence excuses a jerk from the responsibility to learn how to not be a jerk.
I think what you may be trying to say is that it's reasonable to tolerate an arrogant jerk if their skills truly tip the scales in their favor. That's fine, but I'm saying that everyone, including the most skilled jerk, has something to gain from purging arrogance from their personality.
Interpersonal skills are always a great thing to have.
It's just that, among those that are really, really good at what they do, they tend to adopt this attitude of arrogance, and like you say, the only time it should maybe be tolerated is if they're really that good.
Everyone is allowed a gaffe or two. Everyone needs to get slightly thicker skins. Life is a contact sport.
That said, if you're a jerk on my team and you are unwilling or unable to change your jerkish ways after my best attempts at coaching, I will eject you from the team.
Simple.
In reality very few developers exhibit these borderline autistic traits that seem to result in complete lack of social skills and they are NEVER worth working with.
When the team suffers the product suffers.
...but it seemed to me that all the manager really did was actually tell the cocky coder to not be a d-bag and he listened...aren't people supposed to listen to their boss? / Why didn't he just do this in the first place when he first noticed the attitude?
You're kidding, right? Being a manager of really smart people that can easily move jobs is not easy.
So, do you compromise the technical strength of the team by firing Tyler or do you compromise team unity by keeping him?
My thought is that this is not a simple one way or the other answer. The post took the middle ground of talking with Tyler, which I don't think would really work out the way he wrote most of the time. Is there something else he could have said?
If you've had several conversations and this behavior is just the way it's going to be then what are the boundary conditions around when it's best to keep Tyler around vs firing him?
1) My company really likes people to get along. It was very difficult to promote and pay my star developer more. 2) It did have a huge impact on the team. More than one person actually quit in a direct response to the less-than-subtle criticisms. 3) Having a group of mediocre to good programmers means that you simply cannot do certain things. The memory management issue was a good example in the article. It is a slippery slope and one I'm simply not interested in following to the bottom.
I kept (and am now trying to recruit for my startup!) this star simply because truly great programmers are hard to find and once I found one, I would do almost anything to keep them.
To answer the actual question, though, yes I talked with this person often, sent them to classes, read books and sought advice on how to teach them better people skills.
(But: people skills are learnable, sometimes).