68

I'm a junior developer. My tech lead is a very smart person.

When I go to him to seek for help on a problem, he usually finds a solution very quickly (he designed the whole system). The problem is that after he finds the solution, he tends to quickly start coding on my computer as he talks about the solution. And often leaves only little for me to finish.

But I really can learn well only if I do it myself.

Ideally, he can just explain the solution verbally and leave the implementation to me. I think it's a good way to check my understanding of the problem and solution. And, hey, how do I learn if I just read a good solution instead of making mistakes myself?

So the question is how do I communicate this politely, without making him feel like his help is not appreciated?

UPDATE: it turned out that I'm not the only one. A senior team member talked to the tech lead about the same problem just before I talked to him. The tech lead is much better now. But people are hard to change. He still tends to jump on the driver's seat most of the time, but at least he tries to explain what he's doing now.

Allen Zhang
  • 2,567
  • 1
  • 17
  • 19
  • I'm curious. What's the situation there? How many devs vs non-devs working together? Who was he usually solving problems for before you showed up? I'm wondering because if he's used to flying solo that could give some insight on the disconnect you're having. – Erik Reppen Mar 10 '14 at 01:56

7 Answers7

79

"I hear and I forget. I see and I remember. I do and I understand." -- Confucius. (Yes, really. It's the one legitimate K'ung Fu-tzu quote I know.)

It's true for everyone.

The problem tends to be that experienced developers think of the solution as code. It can actually be additional effort for them to step back and give you a pseudocode/algorithmic/conceptual version of the answer.

So if that's what you need, you really do have to be explicit about it. "Please just get me pointed in the right direction rather than giving me the full solution; I need the practice." Or only ask him about the one corner you're stuck on, so he only gives you those few lines and you can go on with the rest.

By the way: THANK YOU and congratulations for being a self-starter and wanting to learn. We spend too much time on Stack Exchange swatting down folks who expect us to do their assignment for them; it's delightful to see someone who understands that practice makes better.

keshlam
  • 66,609
  • 15
  • 121
  • 227
  • 1
    "give you a pseudocode/algorithmic/conceptual version of the answer" this is exactly what I want. I guess I'll take your advise and make it explicit. Great quote by the way. – Allen Zhang Mar 06 '14 at 21:35
  • Sometimes even when you do something doesn't mean that you understand it. For example, you change + to - in some code and it works fine, but that doesn't mean you understand what is happening. – user13107 Mar 07 '14 at 03:10
  • 2
    ""I hear and I forget. I see and I remember" is even confirmed by a study, see In one ear and out the other – jfs Mar 08 '14 at 08:33
  • Are you sure that quote comes from Confucius? A lot of quotes get misattributed to him for the Sinitic gravitas and he's the only Chinese philosopher most people know. From what I've found it comes from the NCM. There's a somewhat similar quote by Xunzi, a Confucian philosopher. – congusbongus Mar 10 '14 at 00:40
  • I know, @congusbongus. I've checked this one repeatedly and what evidence I've found suggests that it is legitimately attributed. Of course many others have said similar things, over the millennia (heck, I just said it myself, didn't I?) so that's certainly not an exclusive attribution, and translation may have caused one quote to appear as several or vice versa. So, yes, I'm sure. I may be WRONG, but I'm sure. :-P – keshlam Mar 10 '14 at 01:10
  • This quote is actually from Xunzi, not Confucius (荀子 8.儒效 23)-- it's one of my favourites :-) – Chris Down Mar 10 '14 at 02:52
  • I only realized who 'Confucius' is after doing a Google translate...... We call him 'kong zi' in China. (Why should him have an English name???) – Allen Zhang Mar 10 '14 at 03:52
  • Usually altered names for "foreign" places/people are a historical accident -- the result of someone mishearing, or not quite being able to wrap their tongues around the proper pronunciation and approximating it, or trying to rewrite it in a character set not well suited for the sounds of the original, or having read it without ever hearing it.... Once established, these placeholder names are difficult to replace with the correct ones, since old references to them continue to exist. You could also ask why Anglos pronounce the s in "Paris", or say "Spain" rather than España... same problem. – keshlam Mar 10 '14 at 13:35
  • This is a must. Even if I can spit out applications by the dozen with properly setup IoC, if I don't truly understand IoC from actually building it out without a template, the first time I try to tweak it is going to be a horrible experience. – Eric J Fisher Jul 16 '14 at 20:05
  • 4
    "It's true for everyone." This is not really correct. Different people learn in different ways. Though hands on is the most common effective method in the general population. http://www.haygroup.com/leadershipandtalentondemand/ourproducts/item_details.aspx?itemid=122&type=5&t=2&gclid=CPWZ4O-J_78CFRMLMgodwUcAOQ – IDrinkandIKnowThings Aug 06 '14 at 16:39
52

The best cure for getting answers you don't like is to ask a better question.

My code won't compile, I don't understand what's happening

Gets you "oh yeah, I see it, no worries I just change this, this and this, and then I - oh ha ha, that's a common misconception, just make that a reference - and yup, there you go, all set.

In contrast,

Can you clarify to me when we use pointers and when we use references? I get compiler errors on my first try quite a lot, and I think I need that explained to me again.

Should get you at least the start of an explanation, and you might be able to say "could I type it, so it sticks in my brain better?" when the typing starts.

On a larger scale, you could ask

Now I think I need to send a message over the named pipe, but I haven't done that before...

And get a similar "hm, yeah, let me just [type type type type] there you go

Or

At this point it's just a matter of sending a message over the named pipe, isn't it? Is there some code in the system already that does that, something I can read to make sure I am doing it our way?

Which should get you an acknowledgement that you are following along, and possibly an answer to "where is some code I can learn from" instead of "I need code here" which could lead to typing.

It's also really important to follow along when your colleague starts typing. There's nothing wrong with saying "hang on, let me read that for a sec ... ah, I see, you're using streams, right?" so that you can learn from the experience and your colleague can see that you want to learn from it. If it's clear that you are "getting it" you are more likely to hear "you can take it from here, right?" which is what I believe you want.

Kate Gregory
  • 150,088
  • 64
  • 339
  • 452
  • 2
    now that is the advice from an experienced developer. good answer – Kristian Mar 06 '14 at 17:59
  • Great answer, upvoted. Not chosen because it's a bit too general and a lot of it doesn't apply to my situation. But this answer is quite helpful in general. – Allen Zhang Mar 06 '14 at 21:44
  • I agree with this except When you talk about following along while typing I would suggest it is better to have the learner doing the typing while the mentor is saying what to write. That way it is easy for the learner to pause whenever they want. – Chris Mar 07 '14 at 15:31
  • 4
    @Chris no argument, but the senior may not agree to pair like that. So if the senior is just tippity typing away full speed and kind of zoned into the code, the junior can at least talk out loud to indicate "I'm with you" and if necessary ask for pauses to be able to read what has been typed before switching to another file to type some more of it. – Kate Gregory Mar 07 '14 at 15:33
10

If this is an occasional problem, simply bring a notepad with you when you ask this person for assistance and jot down what he says while he is saying it. That he sees that you are interested in seeing the problem for yourself and that he doesn't have to interrupt what he is doing to assist you. Repeat what he tells you back to him after you write it down to ensure that you understood his directions.

If this is more than an occasional problem, my advice would be for you to beginning work harder on your core skills. Having to provide occasional help is part of work process; consistently having to provide it is a sign of a lower skill employee who needs more training or who is unsuited for their current role. If you are asking for assistance daily, multiple times during the week or with relatively minor issues, then you should increase the amount of that you spend studying and test coding while off of work.

In the latter instance, you will be one who needs to improve and not your team lead.

Mistah Mix
  • 1,480
  • 8
  • 12
  • 9
    I disagree. The OP needs a mentor - he currently has a fix-and-run colleague. – Thorbjørn Ravn Andersen Mar 06 '14 at 16:34
  • How do you know that he doesn't already have one? Without evidence of his not having a mentor, I didn't feel any to address that supposition. – Mistah Mix Mar 06 '14 at 16:38
  • 1
    It is very clear that there is no mentor but the tech lead, or this situation would never have happened. – Thorbjørn Ravn Andersen Mar 06 '14 at 16:42
  • It doesn't seem to be very "clear" and it assumes facts not in evidence. If the questioner stated that, then answering the question with that information would, of course might be different. Assuming that adds no value to the answer and in fact changes the question from "How I can get help easier in certain situations?" to " Why am I not doing better at my job?" Thanks for your opinion. – Mistah Mix Mar 06 '14 at 16:46
  • guys... let the op speak for himself? – Fractal Mar 06 '14 at 16:50
  • 1
    Thanks for answering my question. I thought the question is entirely about how I can improve myself. I need a mentor who can set down with me and explain things instead of doing a whole lot for me. I do agree that I should do more testing. – Allen Zhang Mar 06 '14 at 21:31
4

In addition to Mistah Mix's advice about writing down in a notepad I suggest to ask in a place where your team lead will physically not be able to write down the solution himself.

If there is a whiteboard (I'm pretty sure there is one), ask him to draw a diagram or scheme of the solution there. Avoid inviting the team lead to your desk whenever possible.

Before asking questions, try to do some research. If your team lead feels necessary to take his time and write down the solution himself (which should normally take more time than explaining it to someone else), I suspect he isn't sure you'll be able to write it (more or less) correctly by yourself. So when asking questions, try to make them as specific as possible. Avoid asking general questions, which will make you seem clueless about how to solve the problem.

superM
  • 2,934
  • 3
  • 24
  • 28
1

@keshlam 's Confucian quote is great. Can you print that out and put it up in your workspace? Then you can just point to it and smile when he comes to your desk.

Basically, you need to tell him that you want to do it yourself. There are lots of polite ways to do that. Keep it light and humorous; this isn't a threat or insult to you. He's just a little over-enthusiastic about helping.

But it will be beneficial for both of you if you can set the boundary more clearly about where the line is on "helping".

If nothing else, tell him that for your professional development, you would like his help getting unstuck, but want to tackle these problems yourself.

sea-rob
  • 363
  • 1
  • 6
  • 1
    Furthermore, your computer and keyboard should definitely be your side of the boundary. Don't let him grab your keyboard and start typing; even if there is a situation where he's telling you what to type, you'll learn better if you type it. – Alnitak May 13 '14 at 10:06
0

Depending on who you're dealing with, it might not be so easy to communicate this directly. You may try the guy's patience or appear stubborn, etc. But here's something I have done many a time, when in similar situations where I was unable to ask for an explanation:

Copy the code he wrote into a separate file, delete it in place and put back your code, and then rewrite your code again in place, line by line, as you read and digest what he did that was different than what you wanted to do. i.e. Compare and contrast: Analyze where you went wrong and what he did that was different than what you wanted to do that didn't work, and correct your code based on his. Keep it yours, incorporating what he did.

Vector
  • 3,531
  • 15
  • 24
  • And this is a bad suggestion for what reason? It works very well. – Vector Mar 10 '14 at 16:12
  • My guess will be your answer ignored the 'communication' aspect of my question. Just a guess. But I also think some comment from the downvoter would help. – Allen Zhang Mar 11 '14 at 01:25
  • @AllenZhang - could be. I edited the answer a bit. At any rate, I suggest trying it if you can. Just make sure he doesn't come back and rip you for changing the code he wrote. – Vector Mar 11 '14 at 02:06
  • it's a good idea. I'm trying to improve the communication ATM. If this doesn't work, I'll take your advise. Thanks. – Allen Zhang Mar 11 '14 at 07:01
-7

"when I go to seek help" ... so you are initiating the situation which you don't like.

Instead of trying to control your lead's behaviour, try and control your own. Next time you want to go for help think to yourself: have you really exhausted all your avenues of investigation to the point where you genuinely need help or are there attacking options available still to work through?

Once you have tried everything then you should go and ask, but I bet that if you follow this advice you will probably not need to ask for help again.

Peter Mortensen
  • 1,003
  • 1
  • 8
  • 8
  • 1
    this merely repeats advice given in an answer posted 6 hours ago and looks rather poorly presented in comparison – gnat Mar 06 '14 at 18:20
  • 3
    "you will probably not need to ask for help again" I'm afraid our system is so complex and I WILL ask for help again. And please don't assume I don't try to solve problems myself before asking. – Allen Zhang Mar 06 '14 at 21:39
  • @Allen just experiment for a week or 2 and don't go ask for any help just try and push through whatever you can. With business pressure it can be tempting to go ask for help to expedite a situation but in the long term its better to figure things out yourself so that you become the authority. You'll be surprised at what the "experts" don't know. Just rely on yourself. – user3139334 Mar 07 '14 at 09:22
  • @user3139334. I agree with your point. Maybe I should try even harder before I go seek for help. BUT this will definitely sacrifice performance. I'll try your suggestion and then judge the trade off. I can tell you are trying to help. Thank you. – Allen Zhang Mar 07 '14 at 23:09
  • 1
    This is terrible advice. Instead of the OP giving feedback to the tech lead about how to help the OP do their job more efficiently, you're telling the OP to do their job less efficiently just to avoid a situation that they can easily influence? – ptomato Mar 09 '14 at 20:09
  • @ptomato sometimes you have to take a hit in the short term to come out stronger in the long term. OP should get into a situation where he is going to the lead and saying "heads up, I am taking this approach " and let lead respond rather than "please tell me what to do". Load on both tech lead and OP will be reduced and its not the only hard system OP is going to come across, or any of us for that matter. Better to imagine your back is to the wall and have a go first than go and get reinforcements. – user3139334 Mar 10 '14 at 10:36
  • @Allen just experiment with suggested approach - it might or might not work out but hopefully it will reveal something. Plus, it sounds like system wasn't put together in a way to make it easy for people to come onboard either and has a high barrier to entry. Often clever people write systems like this but that's just the mountain face the rest of us have to climb. – user3139334 Mar 10 '14 at 10:40
  • @user3139334, now here is someone with experience speaking! Thank you for understanding and sharing how it feels. It's extra difficult when the learner has no previous commercial experience...... I wish we have at least some documentation I can read...... – Allen Zhang Mar 10 '14 at 21:34
  • yes documentation always helps. If its a project that others will be joining and you are making notes as you go then it might be worth setting up a little wiki with the how tos etc., it depends on the project but they can be useful little stores of info. – user3139334 Mar 14 '14 at 11:47
  • hi just wondering how it went ? did any of the activity patterns change as a result of going solo for a while ? – user3139334 Apr 24 '14 at 15:14
  • @user3139334, our tech lead got much better after I talk to him. It turned out that I was not the only one who feels like this. One other senior member in the team pretty much talked to him about the same thing. He's a lot better now. – Allen Zhang Jul 15 '14 at 21:32