3

I have been made team lead on a project where the previous lead didn't have a clear idea of where he wanted the software to go--his philosophy was just meet the current requirement and let the future take care of itself.

Very shortly after he took over, the company hired two developers who were fresh out of school. My opinion at the time was that the code was not really what you should put new developers on, both because code like that is very difficult to work with and because I felt it had the potential to lead them into very bad habits. My role in the project at the time was fairly minimal, because I had other responsibilities.

The team lead at the time delegated large tasks to both of these young developers, tasks that I felt were senior developer type work. They were both able to more or less successfully able to at least meet the requirements of the time, but the way it was handled wasn't the best way to increase code quality.

The team lead left and one of the young developers left as well. So the main reason the above is relevant is that it speaks to the history of the other young developer. I'll call him Chris to make things easier. I think Chris is brilliant, but I think that he simply isn't experienced enough to take on the architectural tasks he was given and to a certain extent is still being given.

In part, he is being given those tasks because there's not enough of me to go around. In part, he's being given those tasks because I think he won't learn why certain approaches do and don't work unless he can try them out. And in part he is given those assignments because I don't have complete control over what assignments the people under me are given, and my manager assigns him things without asking me.

When he takes on architectural tasks, I usually wind up redoing large parts of what he did, both because there's no way to specify in detail how to build these things until you're in there with your hands dirty (so I can't give him detailed directions and tell him make it so) and because he doesn't see the long term picture I do and can't take a line that will meet where the project will be in a month. I don't think it's workable at this stage to ask him to go back and rework something he didn't do in line with what I know in my head I need, both because I can't dump what's in my head into his head and because I really don't want to discourage him.

I've told my manager I am leaving in a few months and I've asked him to hire a senior person for me to train. That hasn't happened, so I think that I need to do my best to put Chris in a position to succeed me when I go. My issues are that I don't know how to get that much growth no matter how brilliant Chris is and I also am spending a lot of time both cleaning up after the last lead and cleaning up after Chris so it's hard to share what I think he needs.

Recently, we hired "Mary," who is also fresh out of school. So far, she seems content to do more manual type tasks like preparing xml and json files, but over time I'd like to see her take a more active role. In particular, when I go she'll need to be able to pick up some of the coding tasks Chris is handling now, and he'll probably need to start thinking in terms of his own succession given how short tenures in software development tend to be. I'm actually very concerned that he might not stay very long after I leave regardless of what I do, but that's not something I'm in a position to do anything about.

So I guess I have several questions:

  • How can I let Chris spread his wings without creating so much extra work for myself?
  • How can I best grow Chris both in his coding skills and his leadership skills to prepare him to take over?
  • How can I ease Mary into more coding at a rate that she'll be comfortable with that gets her ready for more responsibility?

Edit

I apologize for not being clear on the time frame, but I thought the post was already wordy. "A few months" is more like a year plus or minus. It's not really feasible to ask Chris to do multiple rounds of edits to get to where the code needs to be, because we both have lots of things to do. It's also not feasible to leave the code as he wrote it, because we have extremely demanding clients who like to have random different variations of pretty much everything we do, so the code has to be squeaky clean and ultra extensible or it flat can't do what they're asking.

  • This sounds coding specific. – user42272 Sep 21 '15 at 22:38
  • And also like it contains several questions. – user42272 Sep 21 '15 at 22:39
  • Similar questions have been closed for lack of specificity. So the general question is "how do I help my team to grow" and the specifics of it are as above. – Amy Blankenship Sep 21 '15 at 23:53
  • 1
    Are you sure Chris isn't going behind your back and telling management that he can handle it? That could be one reason why they haven't hired a senior person. – user8365 Sep 22 '15 at 8:59
  • 1
    If I thought that, I'd already be out the door, since the main reason I'm staying is to get things stable so the company doesn't take a huge hit when I leave. But no I'm not sure. – Amy Blankenship Sep 22 '15 at 15:19
3

How does learning to fly actually work?

How can I let Chris spread his wings without creating so much extra work for myself?

Watch this video of a bald eagle taking its first flight.

Notice that it's a spectacular failure. The eagle, who we often think of as gracefully soaring, falls down to the ground pretty much like a rock. It then "flies" (using that word generously) into a window.

This is critical to understand. You cannot make Chris fly. You can give him all the training manuals in the world. He could even understand everything about flight mechanics. But when he needs to jump off the branch and fly - he alone can do that.

So... let him fail sometimes. A good mentor allows their mentees to fail and learn from them, but gently nudges them away from directions which are catastrophic.

The flip side of this is not feeling a personal responsibility for everything Chris does. If it's not perfect, that's OK - I have learned more from the imperfect things I have done and completed than all the perfect things I thought about but never did.

If you can't force someone to fly, what can you do?

How can I best grow Chris both in his coding skills and his leadership skills to prepare him to take over?

Mentor him. This means, you don't give him answers directly. You help his thinking process, not his "coding skills." You can't change those, at least not meaningfully in your time frame - but you can change how Chris approaches his coding problems.

Rather than correcting, ask questions. If something is not going to fit into a larger picture architecture instead of rewriting it, ask him, "how do you think this fits in the larger architecture?" Your goal should be for you to ask just enough questions for Chris to make the realizations on his own.

Depending on your timeframe, and how experienced Chris is, you might have to start with more specific questions. And over your departure timeframe reduce how specific your questions are.

Your goal should be enabling Chris to make decisions and better understand the factors you use to make decisions, not making him do as you do. You are leaving and as a result trying to make Chris "be like Amy" is only going to prevent him from feeling comfortable in using his own judgement - this is exactly what you are wanting him to develop!

How can I ease Mary into more coding at a rate that she'll be comfortable with that gets her ready for more responsibility?

Give people responsibility and expect them to act on it?

There's only so much you really can do. I would suggest using the same mentoring philosophy from above, but work with her boss and give her more meaningful work assignments. Don't let her boss just assign her easy-mode "no one else wants to do these" tasks. Somehow she's able to basically only work on easy tasks - this is a management problem somewhere along the lines.

People learn a lot more when they are challenged/stretched and are not able to do easy things all day long. The role of mentoring is to help people sit in the narrow band between "impossibly hard" and "too easy" - an area where you can learn, make mistakes, but still accomplish your tasks.

What if management wants to clip their wings?

This may all be impossible, too. The reality is you need to be ok with that outcome. You can influence, but not control, whether Chris flies or crashes and burns.

Your company has decided they don't want to pay for a senior person. That's not your responsibility.

If you have made it clear to your management that having two relatively inexperienced people on a project that's already a mess is a likely problem then... your management is giving Chris/Mary an unbelievable opportunity to either sink/swim.

Ultimately? There is nothing you can do to magically convert someone with 1-2 years experience into someone with 10+ years experience.

  • I like this answer, but the problem is that I do have responsibility for what Chris does. If he does something in feature X that was supposed to lay a foundation for feature Y and it doesn't, then there is no way that I (or anyone else) can proceed with feature Y until feature X is correct. – Amy Blankenship Sep 22 '15 at 22:54
  • @AmyBlankenship "Hey Chris, what about feature Y? Will this affect your ability to do feature Y that is planned? how do you think that will work?" – enderland Sep 22 '15 at 23:28
  • @AmyBlankenship I was thinking again this morning about your question here. I think a key thing you need to get Chris doing is feeling responsibility for the things he is doing. If you ultimately are taking that responsibility from him, and fixing his mistakes (either silently or overtly) he will never "learn to fly" - maybe you need him to go back and fix feature X. But you need to make sure you are enabling him to make those decisions and figure it out -- because you are going to be gone eventually. It will be painful for you (WHY WONT HE JUST DO X RIGHT!)... but ultimately good for Chris. – enderland Sep 23 '15 at 14:15
  • I get that, but we also have schedules to meet. The reason why I asked the question is for help in doing this in such a way that we can both meet the schedule and the goal of growing the team. If I have to make a choice, growing the team can't win, because I have no accountability for that but I do have accountability to meet the schedule. Let's face it, by the time it's clear if I succeeded growing the team, there will be no consequences for me. But the consequences for the company could be huge. – Amy Blankenship Sep 23 '15 at 16:45
  • 1
    @AmyBlankenship but those consequences are not your responsibility anymore. If your company won't give you and Chris time for a proper transition and you've made this known to them, but instead wants to get more output from you before you quit, that's their problem - not yours. You can't fix that (especially since you are leaving). This is by the way one reason why it's often a bad idea to stay for an "extra long for transition" -- many (most?) companies just use your time for new development/work rather than actual knowledge transfer.. – enderland Sep 23 '15 at 17:00
9

How can I let Chris spread his wings without creating so much extra work for myself?

You're leaving in a couple months? Stop cleaning up after him. It is his car now. He might not use the polish you like, and he might leave crumbs in the cracks of the seats, but the vision in your head is totally irrelevant now because you wont be there to bring it to life.

Chris probably wont either, but imagine what a terrible shock it will be when he goes back to upgrade his code and finds nothing that he left behind. Its much easier to fix your own code than to fix someone else's code.

How can I best grow Chris both in his coding skills and his leadership skills to prepare him to take over?

Stop cleaning up after him, and start discussing his code changes with him before migrating. Give your input and your wisdom, but give him the steering wheel. Let him make his own mistakes, but point them out to him as much as you can (without getting indignant and angry, or naggy).

How can I ease Mary into more coding at a rate that she'll be comfortable with that gets her ready for more responsibility?

Tell Chris to use Mary as a resource. Tell him to get ambitious and take on as much as he can, and to use her for support. You'll be gone soon. They need to be a functioning team by the time that happens.

During your final days, your aim should be to conduct the orchestra, not to try to play all the instruments. Let them get their feet wet and test the waters before you end up just throwing them off the deep end into your minds vision that they will never understand as you vanish.

  • 4
    "Your aim should be to conduct the orchestra, not to try to play all the instruments" - brilliant. Can I keep that as a quote? – sleske Sep 22 '15 at 12:33
  • By all means, please do. – user2989297 Sep 22 '15 at 15:35
  • I actually already tried this approach, and it didn't work. I think that's just because he simply lacks the experience to understand practically how to implement my suggestions and, as I said in my post I lack the time to give him step-by-step instructions on how to build what he needs to build. – Amy Blankenship Sep 22 '15 at 15:40
  • 1
    You sound like the Lead Developer from a team I worked with for 2 years. It was a small company, 15 people total. There were 3 'normal' developers, 1 Lead Developer, and me, the QA. The codebase was apocalyptically bad. It had started in '99, and by the time I was there in 2012, it had been through approximately 40 developers, most of them outsourced from India. The Executive team was completely insane. They went out of their way to sell what we COULD NOT provide. Never ending cycle of impossible demands and scraping by with a marginally functional deliverable. – user2989297 Sep 22 '15 at 23:49
  • 1
    Oh, and for the 4 additional months I stayed there, things got a LOT better once it wasnt the lead dev's way or the highway. Last I checked, they continue to do much better that they ever did with him in charge. Just remember, as important as you think you are, you really probably arent. Again, not trying to sling muck, trying to provide helpful wisdom. – user2989297 Sep 22 '15 at 23:55
1

♫ Let it go! Let it go! ♫

Seriously, you can't train experience. And you can't and shouldn't push people to do stuff they don't like - they will do it, but will suck at it. It takes passion to be great.

Even an architecture is not cast in stone, it's just painful to change. If he is brilliant, he will learn fast, but real understanding doesn't hit you until your first architecture lets you end up in a dead end situation in 2-3 years.

How can I let Chris spread his wings without creating so much extra work for myself? How can I best grow Chris both in his coding skills and his leadership skills to prepare him to take over?

Chris will never ever reach the level where you are content, because he fails in your eyes whenever his solution is not an exact copy of the solution you would have designed. But not even another senior developer will create the same solution to a problem.

Let's look at the facts:
Your manager assigns tasks to him and is satisfied with the result, he doesn't even bother to ask you if Chris is good enough to do them. Chris was able to meet all the requirements before with his previous team lead, even though those tasks were "too difficult" for him. Your manager sees no reason to get another senior developer.

How can I ease Mary into more coding at a rate that she'll be comfortable with that gets her ready for more responsibility?

Does Mary want more responsibility? Does Mary want to code more? What do we tell Mary if she asks here how to deal with a team lead who constantly tries to make her do work she hates? Did you ever actually talk with Mary about your idea to have her code more and what was her reaction?

  • 3
    This doesn't even come close to answering my question. I'm not sure why you bothered. – Amy Blankenship Sep 22 '15 at 15:43
  • @AmyBlankenship I'm sorry that my concise summary did not satisfy your expectations. I have added more text to answer your questions in a more elaborate way. Although there is a fair chance you still might hate my answer. – John Hammond Sep 22 '15 at 17:59
  • Hm, seems to be a very polarizing answer - 4 up- and 4 downvotes right now. Personally, I think it's spot on - let go, accept that others will do things differently, and give them the space they need. – sleske Sep 22 '15 at 20:39
  • Your edit is interesting. If I believed it was an accurate take on what is going on, I would leave now rather than in a few months and leave my manager to sink or swim on Chris's merits. But were I to do that, I believe that both Chris and Mary would follow me out the door, because the volume of work is just barely what we can cope with now. – Amy Blankenship Sep 22 '15 at 22:57
  • @AmyBlankenship This is a different problem though. If you communicated that there is too much and yet don't get any reasonable support, maybe leaving altogether is the right solution, instead of trying to improve two people to handle what three people barely can do. Anyway, you are entertaining theoretical situations. Maybe Chis leaves tomorrow because he is fed up with his designs being trashed all the time. The future is a fickle thing. – John Hammond Sep 23 '15 at 6:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.