Live data from Hacker News

Avoiding “Smart Guy” Syndrome on Team Projects

programmers.stackexchange.com

11–20 of 28 posts

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#11
post #3
post #2

It's hard to distinguish between feeling clever and being clever. As with health issues ("feeling better" vs "being better"), science comes to the rescue.

I don't actually have any argument against what you said, in fact I agree wholeheartedly that the answer is the OP should empirically prove what they claim. Nevertheless, I hope you won't take offense if I use that as the starting pistol of a short rant. I find that kind of commentary irritating because I have a co-worker that thinks he is the more talented programmer. What's worse is that he is rude about it. I thin…

Have you considered that your "objective" analysis of what is "better" may still be very subjective, or just plain worse in some cases?

A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function, rather than just reading through one function from the top to the bottom.

Likewise, "less interdependency between classes" often translates to more complexity in other places. To get usable software, the classes will still need to be connected together somehow. Sometimes this is done via automatic dependency injection, which usually brings in a whole new set of problems.

Reuse is another "best practice" that often turns out to be bad in practice. It only works in those cases where the functionality being reused is truly general. Forced reuse of other, less-general code will often be problematic. The reused code soon starts needing to take into account slight variations in order to be used in several different places, and over time this builds up. This can ruin the code, resulting in a situation worse than had a bit of duplication been accepted.

Crashing code isn't necessarily a problem, either. Taking a fail-fast approach is often a good way to detect unforeseen problems while developing code, before it gets into production use. Even once in production, it's better to have software crash in an obvious and reproducible way, so it can be more easily and rapidly fixed. It's often best for it to stop working completely, than it is to continue on and perhaps cause many more problems (such as data corruption, or a huge amount of network traffic, and so forth). It can be much worse to deal with code that "doesn't crash", but only because the original programmers caught and silently discarded any exceptions that were thrown, or error conditions that were raised.

What you see as "good code" may, in a given context, actually be quite problematic. Perhaps your co-worker realizes this, and this is the cause for some of the friction you're experiencing.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#12
post #3

Earlier quoted context omitted.

I don't actually have any argument against what you said, in fact I agree wholeheartedly that the answer is the OP should empirically prove what they claim. Nevertheless, I hope you won't take offense if I use that as the starting pistol of a short rant. I find that kind of commentary irritating because I have a co-worker that thinks he is the more talented programmer. What's worse is that he is rude about it. I thin…

Have you considered that your "objective" analysis of what is "better" may still be very subjective, or just plain worse in some cases? A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function…

> A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function, rather than just reading through one function from the top to the bottom.

I wonder if there's an IDE that can do this -- substitute function calls with the actual function on demand. That might make both camps happy. It's readable in 1 sitting, but also DRY'd out.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#13
"Since I didn't pick and choose my battles, my boss now assumes anything out of my mouth is an over complicated response"

Assuming that the OP is actually correct in his suggestions (I think everybody else has covered the other option ;-) - this is a sign of another problem. Not being able to communicate. Not being able to lead.

Communication and leadership - especially to people outside of your area of expertise - are skill. It needs practice to get good at it. Being right doesn't matter if you can't demonstrate to others the value of what you're saying.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#14
post #12

Earlier quoted context omitted.

Have you considered that your "objective" analysis of what is "better" may still be very subjective, or just plain worse in some cases? A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function…

> A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function, rather than just reading through one function from the top to the bottom. I wonder if there's an IDE that can do this -- substitute…

There's a plugin available for Visual Studio that does something like that: http://visualstudiogallery.msdn.microsoft.com/4a979842-b9aa-...

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#15
At every job when I started no one knew me yet and I didn't push for change. I focus on simply doing the best I can do and after you deliver high quality software (or whatever you are doing) and push out small ideas the actually improve things you get usually get a reputation as someone who is worth listening to. Then you can push a little harder. Until then you can't do much. Evidence of being smart is always better than claiming it.

I once had a 5 week contract at a University where I saw everything the group was doing was a horrible security nightmare but the manager had no interest in anything I might say and made it clear; by the end after delivering way more on my part than anyone thought possible suddenly the manager wanted to know everything I had to say and then made sure it got fixed.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#16
post #3

Earlier quoted context omitted.

I don't actually have any argument against what you said, in fact I agree wholeheartedly that the answer is the OP should empirically prove what they claim. Nevertheless, I hope you won't take offense if I use that as the starting pistol of a short rant. I find that kind of commentary irritating because I have a co-worker that thinks he is the more talented programmer. What's worse is that he is rude about it. I thin…

Have you considered that your "objective" analysis of what is "better" may still be very subjective, or just plain worse in some cases? A large number of shorter functions, for example, can often be much harder to work with than one larger function that performs the equivalent processing. To properly understand such code (especially when it was written by somebody else), one must jump around from function to function…

This is exactly what I thought would be irksome, and it was :)

I am aware that it is hard to avoid a subjective analysis when it involves oneself, yes. So I'll just say, as far as your points on long functions, interdependency, and reuse, I agree, to a point. I'm not exactly writing, say, single line functions, though.

As far as crashing goes, I throw exceptions over corrupting data, please give me some credit. I mean crashing as in some internal state goes awry (e.g., failing to lock properly in multithreaded code) so he doesn't know why it is crashing.

I will take your comments under consideration. I'm afraid there's nothing I can do here that will prove I know what I am talking about, so I guess you will have to draw your conclusion on our dialog alone.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#17
There is another side to this. At times you really need people to work on a project without questioning too much, just doing their job. However, most of the times you will need programmers that know what they are doing. That think about the bigger pictures themselves and are no mindless robots. An atmosphere in which things are naturally discussed and questioned is essential to create great products. If someone is at the same time a great critic and a prolific programmer, I think there's nothing better. In practice however, those traits don't always come in the same package. :-)

PS: I think the best you can do is to encourage people to criticize yourself. Make it natural for them to point at possible faults in your code, your projects, or management style. The more they can ventilate, the more you can point out. If it's one-way, it is an attack, not a discussion.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#18

From one know-it-all to another, let me start with this quote "Those people who think they know everything are a great annoyance to those of us who do." --- Isaac Asimov 1. The key is to pick your battles. There is no possible way that a person can be right 100% of the time. So pick a number out of ten times that you think you could be wrong. Start with 1 out of ten if you're really convinced you're smart, you'll fin…

"Lower your voice and strengthen your argument." --- Lebanese proverb Tattooed on my eyelids so I don't forget. Great one

So the thing is that your eyelids are probably the only thing on your body that you cant look at, even with a mirror. I know that's supposed to be the point of your comment, but I cant relate how.

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#19
post #18

Earlier quoted context omitted.

"Lower your voice and strengthen your argument." --- Lebanese proverb Tattooed on my eyelids so I don't forget. Great one

So the thing is that your eyelids are probably the only thing on your body that you cant look at, even with a mirror. I know that's supposed to be the point of your comment, but I cant relate how.

Not if it's tattooed in reverse and you close your eyes in the light. Just sayin ;)

Re: Avoiding “Smart Guy” Syndrome on Team Projects

#20
post #10

When I was a kid and went to a new school, I was the best in class at math. Mathematical ability is pretty clear cut, so there is no room for "yeah you thought you were awesome, but in reality you were just a know-it-all." I really was that good. :) In that class, there was a girl who used to be best at math before I came. She didn't like that I blew her out of the water when it came to calculating. Though she wasn't…

Likewise with management. I worked at a place managed by a confederacy of dunces that promoted people I'd never have promoted, but who I realized were people who did not threaten the leaders' authority by being too smart.
Post reply on HN