views:

351

answers:

10

Quick Story: I started a new job where everyone funneled their questions to 'the geek'. Being an experienced developer, I can do most of my assignments without consultation with the geek - thinks such as how to select the top 10 rows in a table.

Question: Is there a preferred way of handling these cases without offending the existing geek while ensuring the best solution gets implemented? My issue is the the existing geek is very young and makes a lot of mistakes, but still sounds authoritative because the other coders are just out of school and don't know better.

+8  A: 

Just do your job. If your solutions are better then others will recognise this. If the existing geek objects then be prepared to back up your solutions with facts.

Glen
Unfortunately, this doesn't always work. If you are not good at managing the perception created for you, it can be a very difficult thing for you to correct later. I have seen many folks being ridiculed until they left, only to have the people who stayed run with their ideas.
+13  A: 

Invite him to the code review.

You don't want to offend him by going around him, but you should offer to get him involved in an appropriate manner. The code review is one such manner. I'm assuming his authority is informal and he's not actually the lead architect tasked with approving all designs.

Jeremy Stein
If the "geek" and the other developers are that young what are the odds that the company actually does code reviews?
Jeremy Bade
I wasn't assuming they do. Just start inviting people to review your code at the appropriate milestones and lead by example.
Jeremy Stein
Code review? What code review :)
Trouble is with code review you are picking holes in his code.... This is not a good start!
Rippo
I meant invite him to the code review for your own code. You're showing that you value his opinion, but you're treating him as a peer. You also value the opinions of the other invitees. You're implying that you expect to be invited to the review for his code.
Jeremy Stein
A: 

Let them grow up. Everybody was young once.

In some years, they might be "a real geek".

brainfck
+3  A: 

Challenge the geek to a Klingon Duel. use the remains to decorate your office.

DVK
I did this once with a Geek, problem was he knew more Klingon Geek than me... left me with a hole in my head! :P
Rippo
A: 

I agree with Jeremy, invite him to the code review.

luuke
If you agree, please upvote his answer rather than posting your own answer stating that fact. (SO is not like a forum).
Jon B
He doesn't have enough reputation to vote up.
Jeremy Stein
So he should be silent
the_drow
+5  A: 

You shouldn't be too afraid of offending the geek.

The way I understand your question, you feel a need to point out when he gives bad advice. I can see how you're uncomfortable with this, but in the long run, you'll be more uncomfortable if you don't speak up. Just make sure you have your facts ready, so nobody can accuse you of jealousy.

If you want to be a diplomat and avoid unnecessary gripe, try to identify areas where he is actually strong (most know something well), and make sure you ask him for advice now and then. In time, this should give you some room for criticism.

Tor Haugen
Thanks, this is awesome advise. Someone also told me to ask him obvious things - just to show that I value his opinion.
"point out when he gives bad advice" -- It might be less critical/condemning to just append further/better advice, instead of saying that the original advice is bad.
ChrisW
A: 

If you have ideas about how to improve things, email him and explain them. Be sure to copy the boss. This way he's in the loop and can participate, and you're also making it clear that you know what you're talking about.

Jon B
a) That can be a way to convince the boss as well that you're not a team player. b) Some people (especially non-programmers) prefer face-to-face instead of email (especially for discussions / dialogs / disagreements).
ChrisW
+1  A: 

Dude write a stored procedure that takes 4 hours to run. I wrote a sql statement that did the same things in a fraction of the time. His complaint: I am redoing work that has been tested and thus isn't a team player, is a loner, etc.

An answer then is to do what you're asked to do, and to change what you're asked to change.

I don't know the specifics of your business (priorities etc.), hower don't refactor things unecessarily.

If I'm team leader and I ask you to do something, I know there's a million things you could do, however I want/need you to do what I asked you to: so that that gets done, and there's less work left to do -- i.e. so that you're helping with the necessary/scheduled work. Similarly (depending on how much work it is to test/retest something) I might want you to avoid doing/changing anything extra: because your doing that would create more work (retesting), not less work.

ChrisW
Optimizing something that takes 4 hours into something that takes seconds or minutes isn't "refactoring." It's "taking a broken thing and making it work."
mquander
However, the geek isn't the team leader. Yes, he has the loudest voice and is a know-it-all, but the team leader sit still when he talks and thinks whatever comes from the geek is the best solution possible.
I think I unintentionally embarrassed him by showing that something could be done better. Didn't mean to, but now I am dealing with one very disgruntled guy.
mquander - We don't know that: maybe the stored procedure was run weekly; we don't know how much retesting was required, or what their business/project priorities were; and we don't know what the OP was supposed to be doing instead of what he did do. In any case, doing what you're told to do, i.e. being obedient and fitting in with the existing team, *is* a way to be a 'team player' and to 'avoid giving offense'.
ChrisW
I agree that some things are more important than others and that might not be the best use of his time; I just disagree that you could brush aside such an improvement with an admonishment like "it works, don't touch it."
mquander
ranja - One piece of advice is to be public when you praise someone (e.g. do it during a public meeting) and confidential when you criticise them; if you want to show him a flaw in his work, show him privately before/instead of doing it publicly. Also be sure to criticise the specific software, never criticise the person nor their work in general.
ChrisW
"now I am dealing with one very disgruntled guy" - maybe you need a face-to-face with you, the guy, and the team leader: to discuss that problem, maybe for you to apologise for whatever mistake you made, and to agree on a plan / partition of work / communication strategy so that it doesn't continue / happen again.
ChrisW
A: 

I would definitely try and get a weekly development meeting going. Invite all coders/designers/line managers etc. This way you can ALL vent your frustrations out. Keep a record of what needs doing. This way the team can move forward together as a unit. I found this to be very useful last time I was in employment.

Good luck

Rippo
+1  A: 

Being on the other side of the fence and existing geek in my company. I sit with trepidation whenever we are interviewing someone new and highly talented, afraid that I will get shown up by the awsome intellect. That hasn't happened yet. I try to contribute to open source projects and there are people with so much knowledge that I often feel humbled. I consider myself not a team player if I fail to involve someone in the room in solving a problem or expressing an opinion, it is not their fault for being a loner. How was your interview experience with this company - was the geek in attendance ?

whatnick