55

I'm a Software Developer with experience of more than 1.5 years. After being happy with my performance, the CTO of my company made me a team lead of 3 new employees (2 of them graduated recently).

There's an employee, the recent grad (Let's call him John). John knows only basic Java and nothing else. Now, I am mentoring them in a front-end project made up of Angular. But he doesn't even know the basics of HTML and CSS. I told him to study these subjects at home from Codeacademy in the weekend/holidays. But he didn't do it.

Now, whenever I assign them some work, the other two employees do the work with ease, but John struggles even in setting margins and paddings. His main problem is that he doesn't do the work in a logical way but always try some random permutations and combinations in order to make his flukes as a successful attempt to do the work. I have to spoon feed him for every little task. This led to the constant delay of the project which has been assigned to my team from the CTO. And due to this delay, my CTO has been scolding me from last few days mercilessly.

I didn't say anything to CTO but I talked to John once and told him that you need to study the basics of these simple subjects or you won't be able to work in Angular. I even told him to google about a concept which he doesn't know but he isn't good at even searching on google.

Now, due to increasing pressure and scolding from my CTO, I am thinking that the only solution I'm left with is to tell the CTO about him and his habits of doing work with guesstimates so that he can decide whether John is ready to work or not.

So, I want to ask if this would be a good solution to deal with this issue or is there something else which I can further do to cope up with this solution?

Edit : To all those great guys, who are blaming me in the comments and answers right there, I want to let them know that I had given each of those 3 subordinates a simple HTML, CSS, JavaScript and Angular task before starting the project, which each of them were able to complete successfully. It's not like I simply threw the project at them and told them to do this and that in a hurry. This is my first time experience of leading a team. Also, the power is not in my hands to simple allocate them the training task or actual project task. I do what my CTO told me to do and whenever I have taken a decision to provide training to them on my own, then the CTO tells me everytime, "learning HTML, CSS, JavaScript is not something for which they have to devote months. Teach them the basics in 4 hours and give them a day to do a simple task and then they will be all ready for the project. Rest they will learn while doing the project. We don't have so much time to devote on their training."

Now the irony here is that my company hires the employees just on the basis of their aptitude test and with an extremely easy programming test. They tell the freshers that you will be provided with 6 months training. But in actual, this training goes for no more than 1 week.

  • 2
    Comments are not for extended discussion; this conversation has been moved to chat. – Snow Feb 25 at 6:24
  • You haven't explained in the question what you consider to be "basic" Java, which is likely relevant to understanding the dynamics here. – chrylis Feb 25 at 6:30
  • 3
    Can you add a location tag? No one seems to have mentioned that requesting your employee do unpaid studying outside of work may have been illegal (even if it was your CTO giving the initial order) – Mars Feb 25 at 6:41
  • 2
    FWIW, if you only have 1 developer not performing up to your expectations then you should be surpassing all expectations on your project. Your job is to figure out WHAT each person is good at and optimize from there. Don't blame someone for continually failing to meet your expectations and then you keep going ahead and assigning the same kind of tasks to that person. At some point it should click that there's other tasks where the person could be more helpful and productive. – Dunk Feb 26 at 21:50
  • 1
    Based on your additional comment at the bottom, it seems like your CTO doesn't know his ass from a hole in the ground. I would start looking for a new company myself if I was you, one which has a CTO who actually knows jack about how software development works in the real world, and not just an idiot in a suit. – Ertai87 Feb 28 at 15:46

14 Answers 14

306

So here's the part that seems sketchy to me: You've asked your employee, John, to do unpaid overtime work on the weekend.

  • The reason it's "work" is because learning Angular is not something John would like to do in his free time, hence why he hasn't done it already (and continues to not do it), and it provides no value to John personally except inasmuch as it provides value to the company. Performing a task that is not for one's own benefit and is instead for the sole benefit of one's employer, is called "work".

  • As for "overtime", that much should be clear; John is not normally working on the weekends, therefore you have asked him to do work outside of regular hours. That's called "overtime".

  • As for "unpaid", presumably you have not offered John any sort of compensation for doing this work on the weekend, and presumably, you do not have the authority to do so. As a result, John is not going to be compensated for putting in these efforts on the weekend. That's called "unpaid".

Now that we've got this straight, as a team leader, and particularly as a new team leader, you should not have your first impression with your new team be "please spend your weekend doing unpaid overtime work". That's not going to work for you in the long run. Don't do that.

Coming at this from John's perspective, I could equally see a question (and have seen many on Workplace SE in the past!) that goes something like this:

I recently graduated from University, and I applied to and got a job at a company that was looking for a backend Java developer. Upon joining the company, I was immediately placed into a frontend development team using Angular. I have no experience with Angular, and the interviewer and hiring manager were both aware of this throughout the interview process. Furthermore, due to these circumstances, my boss has required me to work unpaid overtime on weekends to catch up on my lack of knowledge. What should I do?

To which, and because I have seen these sorts of questions in the past, the overwhelming majority response would be "Unpaid overtime is not cool, your company does not respect you, they blindsided you with a team that doesn't match your skillset, find another job". And that's what John is going to do.

If you want to help John rather than frustrate him and make him leave, here's what you can do:

  1. Do not ask John (or anyone else!) to work unpaid overtime. That's not cool.

  2. If John needs to learn Angular, allow him to do so during work hours. Prepare some ramp-up tasks for him (small tasks to get him used to the framework and used to frontend development) so he can get his feet wet slowly and ramp up his comfort level.

  3. Provide John with the mentorship he needs.

Failing the above, ask your chain of command to transfer John to a team which actually uses the skillset he was interviewed for and hired with, and don't blindside him by trying to change a capable backend developer into a horrible frontend developer.

  • 3
    That is a great answer. I would have put more emphasis on moving John to another team though but still, great answer. I would add the fact that when the CTO gives an objective, OP is the one that has to report if the timeline seems good or not. – Pierre P. Feb 25 at 16:50
  • 1
    @AzirisMorora Speaking as someone who has been administratively moved to another team before, the process is not friendly. Basically it feels like you've been "kicked off the team", even if your manager is really nice about it. It really should be a last resort, and I painted it as such. – Ertai87 Feb 25 at 16:51
  • 1
    Seems like John is better off being fired than to waste both party's time. If he doesn't even know something as basic as HTML and CSS after graduating university, he is incompetent. And he's not even willing to put in time to learn the basics to overcome this incompetency. Asking for overtime? I dont think he should've been hired in the first place. – Jack Feb 25 at 19:51
  • 5
    @Jack I am an alumnus of the #1 school in Canada for computer science (basically the Canadian equivalent of MIT), and I graduated With Honours. My school does not even offer any courses whatsoever on something "as basic as HTML or CSS". Would you consider me incompetent? – Ertai87 Feb 25 at 20:22
  • 1
    @Dunk We are not talking about Angular. We are talking about basic HTML and CSS which he struggles with. I would be more understanding if Angular was all he struggled with but he doesn't even know how to use margins and padding. – Jack Feb 27 at 1:07
62

If I was a CTO, and a manager came to me and said,

We aren't performing because one of my team members is bad at her job

My response would be,

Why are you telling me this? You're the team lead, do something about it. What's your plan?

In other words - going to your CTO and explain the delay by pointing out performance issues on your team isn't the solution - it's not going to suddenly change anything or solve the problem. You need to come up with an action plan, not just tell someone else that the person is underperforming. Yes, you may want to communicate the fact that she is a poor performer, but the communication is just part of the process, it's not the thing that will make this all go away.

It sounds like you've done a half-hearted job of this already by telling her she needs to learn about these subjects. You may want to reflect on some other options:

  • Expecting an employee to learn on their own time isn't always fruitful, as you've seen. Do you have an opportunity to incorporate the training into her working time? By having someone mentor or train her? Or allowing "development time" where she can focus on learning?
  • Expecting an employee to be able to do good work in a technology they're not familiar with isn't always fruitful either. Some developers can easily pick up new languages or platforms, others struggle and are better being treated as an "expert" in one specific environment. If that's the case with this woman, you need to decide if your company needs an expert in Java, or if you need someone who is flexible. It's not inherently a problem of her being a bad developer, it may just be that she's not the type you need.
  • Make sure you understand your employer's approach to performance management. If the employee isn't able to perform the job as it is outlined in the job description, you may need to start taking more formal steps. The key when this happens is following policy (ie does your HR department have a formal performance improvement process?) and documenting every little detail, so you have good backup if you get to the point of deciding to let her go because she's not a good fit.

One thing that's hard for some newly promoted leaders to grasp is that your job is not to be an expert at the tasks your team does. In many environments, your job is as much about managing the people as it is about managing the work. This is a people problem. Yes, it may be her poor skills that are causing the work to be delayed, but from the employer's perspective, that's as much your problem as it is hers.

  • 4
    Exactly, team lead means "It is All You." That being said, often you have to fire people and in that case, you just have to calmly tell the Boss that you need to fire someone. – Fattie Feb 22 at 15:21
  • 11
    Hate to be nitpicky, but the name "John" doesn't sound all that feminine of a name to me. – noClue Feb 22 at 17:05
  • 5
    What do you mean by spoon feeding? Have you tried an approach other than spoon feeding? When the "help" isn't "helping" then the first step should be to consider other ways of helping. Some people need to see examples. Some people need to zoom out and rethink their whole approach. Some people have the right mindset but just need to learn the quirks of that language or platform. – dwizum Feb 22 at 17:16
  • 6
    Don't help him (her?) with every task - and absolutely do not solve their problems for them - that's just training them to rely on your problem solving. You need to teach them how to solve their own problems. Focus on teaching them to learn and research on their own. Teach them an efficient way to experiment when they don't know an answer upfront and can't find it in research. You should be familiar with the proverb: The employee is saying "I'm hungry" and you're giving them a fish. Don't do that. Teach them to fish for themselves. Or, get rid of them and find someone skilled enough. – dwizum Feb 22 at 17:44
  • 4
    Probably because the question originally was pointing out the genders and comparing the ‘boys’ with the ‘girl’ all the time for whatever reason I can only imagine. The edit is probably a good one. – Sebastiaan van den Broek Feb 23 at 3:51
52

But he doesn't even know the basics of HTML and CSS. I told him to study these subjects at home from Codeacademy in the weekend/holidays.

Huge red flag.

You (or your company, but since you're the lead, it's your responsibility) put him on a job needing skills he does not have. You have to train him during work hours if training is needed. If he lied about his skills then fire him, but if he was clear that he knew only Java then you are wrong.

The solution is quite simple: allow him to study these subjects at work, and do nothing else work related during a well-thought time box (two or three days for a software engineer, maybe more for less graduated developers).

  • 13
    @DG4 You either need to figure out how to get him to stop that or you need to figure out how to do your job well even with the CTO doing that. Otherwise, you will fail to accomplish your job. You are in the same situation as John -- the combination of your skills and what you are being asked to do is not reasonable. – David Schwartz Feb 22 at 18:42
  • 40
    A CTO saying that "learning HTML and CSS is a childish task" sounds like someone "learnt HTML" fifteen years ago when it was. Now, the HTML spec is like ten or more times bigger than that, and CSS now is about twenty different specs. Yes, a good summary / tutorial document can gloss over that somewhat, but at the end of the day, understanding HTML and CSS well enough to "use them in anger" is certainly a tougher task even than the "2-3 days" you suggest (!). It really is an issue your CTO needs to be taken to task about. Which isn't your fault, of course... – Will Crawford Feb 22 at 18:48
  • 3
    @DG4 I've been in your position, so I sympathize. I recommend two things: 1) train "John" as the others have said, but learn to live with the idea that he is probably never going to be that good, and 2) you need to start pushing back against your CTO. The boss is not always right, and you will be doing your stress levels, your health, your team, and your company a favor if you learn how to push back in a firm but tactful way. – Jim Clay Feb 22 at 19:14
  • 14
    "I have no choice except to put my subordinates under pressure" - sorry, but that's a lame excuse. Your job as a team lead is to resist pressure from above in such a case - you rather need to push back against your CTO. And if your CTO tells you that learning HTML and CSS is a childish task, kindly tell him that he's severely mistaken. – Frank Schmitt Feb 23 at 16:35
  • 11
    I've heard before that there are two kinds of managers from the point of view of the teams: shit umbrellas and shit funnels. If you think the expectations from your boss are unrealistic, you can pass them on your team and they'll say your expectations are unrealistic. Or it's time to talk to your boss about it - stand up for your team. The project won't be completed faster either way. (this is irrespective of what you actually do regarding the slower graduate) – viraptor Feb 24 at 23:30
13

I won't reiterate dwizum's excellent answer, but I have a few things to add:

His main problem is that he doesn't do the work in a logical way but always try some random permutations and combinations in order to make his flukes as a successful attempt to do the work.

Have you tried showing him more effective problem solving strategies? (Yes, ideally a graduate would know how to "work logically", but problem solving strategies are usually not part of the formal curriculum, and sometimes not taught as well as they should).

I even told him to google about a concept which he doesn't know but he isn't good at even searching on google

Have you tried showing him how to google effectively?

Also note that it will be challenging for a Java developer to google angular problems, since the programming language, build tools, and runtime environment are totally different. Understanding a random blog post by a JavaScript developer is challenging if you don't know know web technologies.

Check your expectations

I have spent the last couple years coaching experienced Java teams in their first angular projects. In my experience, only about 20% of the developers were able to make this switch without help. And yes, even though everyone attended a professional course about angular, and had access to experienced help, progress on the first angular project was slowed enough to make management nervous.

Summary

Yes, really good developers can pick up a new language without any help, but most developers will need more help than "you need to learn the basics".

  • 8
    I dunno. My background is in embedded programming, not web development, so YMMV, but in my experience anyone who needs that much hand holding will never be capable of doing anything beyond the most trivial tasks. – Jim Clay Feb 22 at 19:09
  • 1
    @JimClay: Not sure what you mean with "much handholding"; the two points I mentioned don't seem very time-consuming to me? Would you really hire a fresh graduate without experience in any system programming language, and expect him to learn your technology stack without any kind of direction? – meriton Feb 22 at 19:26
  • 6
    @meriton I think it's because it sounds like the employee may know how to write Java code but they don't understand the fundamental concepts of programming. Like, I knew a guy who removed an element from an array by creating two new arrays of size-1, pushing the elements onto the new array and skipping the one he wanted to remove, and then popping them off and pushing them into his final array so that he had them in the right order. In Java. Which has a .remove method, I think it is. Some developers spray and pray without taking the time to understand why something works. – Wayne Werner Feb 23 at 3:31
  • 3
    I never said there are no bad programmers, or that every bad developer will bloom into a great one if given a little mentoring. But it can be hard to predict whether a developer sucks because he is unable to learn, or because he has not had the opportunity to. The only reliable way to tell is to try mentoring, and see if it helps. And yes, sometimes it does. Even for basic concepts, or matters of problem solving style. And sometimes it doesn't. Then you can still fire the guy - and nobody can fault you for it. – meriton Feb 23 at 13:06
  • 2
    I would say that someone not being able to Google is a lost case or very lazy. – Rui F Ribeiro Feb 25 at 10:11
11

You need to do your job.

On the team side, decide whether it is feasible to mentor the underperformer or not. If you think they're willing to learn and capable of being productive and the long-term performance of your team is more important than the short-term costs of a mentoring, then decide to mentor them and inform the team. Assign them tasks that are realistic given their skill level and re-evaluate periodically to see if mentoring is working.

On the CTO side, you need to realistically apprise your CTO of your team's capabilities. If he tries to tell you the task is easy or anyone can learn, respond as follows:

  1. You are managing the team appropriately given the resources available. If he has specific advice for ways you could manage the team appropriately, you'd be happy to listen.

  2. The team is performing the way it is. It's not getting work done faster than it is. There's no magic whip you can crack. Your employees have the productivity they have and you can't magically make them more productive.

  3. Explain your advice about the underperforming team member. Either explain that you've decided it makes the most sense to commit to mentoring them even though that has a short-term cost or advocate that they be fired. If you think replacing them would help, explain that.

Ultimately, you have to tell the CTO that you believe that you are leading the team appropriately but that the team's performance is not sufficient to accomplish the tasks requested in the time desired. Offer helpful options such as hiring more people, reducing the feature set, and so on. Explain to him that asking you to produce a better result will not change your assessment of what your team is realistically capable of achieving.

Whatever you do, do not agree to his claims that the team can produce more and then repeat the cycle of delivering less than the CTO expects followed by ritualistically making unrealistic promises to do better in the future.

  • 1
    +1 for apprising the CTO about it. As a new supervisor who didn't even make the decision to hire John, you don't need to hide the problem you're having with him from your own boss. Also +1 for stopping the cycle of ritualistic unrealistic promises. – krubo Feb 24 at 6:24
5

The other commentators are right - it is your responsibility to make sure that this developer is able to develop in Angular (because they were assigned this task knowing that their background is in Java).

Even I have to solve 90-95% of his tasks by myself and then he learns

DO NOT solve this person's assigned tasks for them - it is hindering their learning process. If they cannot handle the workload and you are ultimately completing tasks for them, BEFORE bringing it up with your CTO, I'd suggest you:

  1. give them a basic tutorial on Angular (maybe focus in on the things you'll be using)
  2. Reduce the amount of tasks assigned to them (whatever workload they currently have sounds like too much at this time)
  3. Do not solve their tasks for them, give them feedback so that they can go back and fix the mistakes/do the work (they will understand their code's flow better than you)
  4. introduce dual coding/shadowing/code review among your developers so they learn from each other (less interference on your part)

As some one who is in a similar position, these steps (especially 3 & 4) have been helpful in getting that employee to be stronger in an area they were not comfortable in at first. Instead of shifting the blame onto the "under performing" employee, you should ask why they were assigned to this project given their background, or, if at any point they were aware that their job required them to learn a completely new environment.

  • This is a pretty fantastic answer. The way we learn best is by struggling, failing, and then ultimately, succeeding. If we don't struggle then either we already knew what we were doing or we knew something like what we were doing, and could transfer that knowledge. – Wayne Werner Feb 23 at 3:34
  • 1
    He is the team lead, not the team professor.... – Rui F Ribeiro Feb 24 at 11:51
  • 1
    @RuiFRibeiro agreed. Perhaps he can just point the employee in the right direction (by mentioning specific tutorials or emphasize certain concepts). It might also be helpful to have some sort of QA page between all the team members for a later reference. This way, other team members will also become stronger since explaining a concept helps you better understand it. – koksamosa Feb 25 at 14:44
3

As a team lead a certain amount of managing the performance of the rest of the team is to be expected.

It sounds as though so far you've done a fairly minimal amount of that - mainly telling them to study at home or google it. And so far that hasn't been particularly successful, probably because they are pretty unhelpful approaches to helping a new entry level team member get started.

I am thinking that the only solution I'm left with is to tell the CTO about that girl and her habits of doing work with guesstimates so that he can decide whether she is ready to work or not.

Ultimately it might come to that - but if I were in your CTO's place I'd be looking for you to take a more proactive role in trying to resolve the issue before you brought it to me.

Take the struggling team member aside and have a conversation with them, see if you can a) get to the root of the problem and b) work towards improving it.

You don't need to go in all big and shouty and aggressive - a good team lead should be facilitating the work not ruling with an iron fist.

It seems like you're struggling with some of the elements of what we are working on at the moment so how can I help? Can you tell me why you are struggling? Is there anything in particular you feel you need help on?

Hopefully you can then work with the team member to improve things, but ultimately it might just not work out. Then you can consider talking to the CTO and saying something like:

[Team member] is really struggling to grasp some key elements of the work. I've spoken with them and we've done X, Y and Z to try and improve the situation but it's not really helped and I'm concerned that it's effecting out ability to deliver our team's work.

2

Here's your problem: Your team isn't capable of doing the jobs it is supposed to do in the time you are allowed. That one of your colleagues is underperforming is secondary. It is a problem for them, it may lead to them losing their job in the worst case, but your problem is the job isn't getting done.

There are two solutions to your problem: Improve the work of your team, or make clear to management that your team isn't capable to deliver, and that it's not your fault. You should work on both.

For the first, you talk to that colleague, you tell them that the team is in danger, and therefore they are in danger, and their work needs improving. Improving can only done by learning. Give them time at work to learn (it's more efficient for them to learn than to do substandard work that needs to be redone). Tell them to ask for help immediately if they don't know how to continue, because 5 minutes help can stop wasting two hours of work.

For the second, tell your manager that this colleague is not up to scratch. Tell them what measures you are taking to improve things. Tell them that with competent employees you would get your tasks done (if that is actually true), but you currently don't have this and it will take you time to get there. If someone thinks it takes just hours learning CSS, for example, you can tell them that you respectfully disagree, and no matter whether you agree or disagree, you have an employee who is not learning it in hours.

You can suggest replacing the person on the team, which is not really handling your problem.

1

1) Your HR / Hiring folks are dropping the ball if they hiring folks that don't even meet the minimum skill req's for the job. IE: if he needs to know HTML, Angular, etc.. then their job description should have said such. If he got hired w/o those skills, it means their job desc was either bad (which is on the technical person in your dept that was telling them what skills were needed), or on them (hiring someone without being strict about the skills needed... some non-tech HR folsk think "oh, this guy is a programmer he can program anything".. and they hire a person that knows SQL to do Java work... the non-tech person just has no clue.). Anyways, talk with HR and ask them to get their act together.

2) New grads are hit-n-miss. Most are looking to learn on-the-job at their first gig, and then jump ship after a year of "experience" to go get a better job (b/c when they first graduate college, it's all about how quickly they can get more money.. b/c the student loans won't pay for themselves, and living hand-to-mouth in college has made them money-motivated).

You really have to assess the grad's long-term potential to see if it's worthwhile training them on-the-job (and it WILL be on-the-job training, as others have pointed out.. really motivated programmers will do stuff on their own time to learn and stay on top of trends.. but ultimately we're talking about a job here, and folks want compensation for their skills they learn and work they do.)

Again, the HR folks should have assessed the person's long-term viability with BS questions like "where do you see yourself in 5 years?"

But, you should just have a heart-to-heart with the candidate. If they seem humble and really motivated to want to do a good job and please you.. then you need to train them and get them up-to-speed.. b/c chances are good they will stay long-term and become a valuable asset.

If they act cocky or aloof or don't seem to really care that they're falling behind.. they're going to jump ship quickly. You're just a steppign stone for them to use as they head to another place.

So, just sit down with them for a half hour or hour chat in your office, and ask them "where do you see this job going?" "where do you see yourself in 5 years" etc, etc, etc... see what they're thinking. They already know what you're thinking (you're thinking you need someone that can produce right now).

But, programmers are high-end knowledge workers. It's not like ditch-digging work, where a good ditch-digger is like 1.05% better then the avg one. A good programmer can be many times more productive then an avg programmer. If this new grad has the raw materials to be a good programmer (quick to learn, motivated to work, good problem solving skills... doesn't matter what languages they know if they don't have a root-cause drive to do programming-type work).. then they are a diamond in the rough waiting to get polished.

The biggest concern is you're stuck with a programmer that came from CS or IS because they went into the degree programs for the money, not for the passion. I'm in an MIS program in college right now with 90% Indian students... about 2/3 of them DO NOT want to be there, but they're there b/c their family pushed them into it. They don't care about programming, data management, info systems, analytics.. it's just a job to them and they do the bare minimum to get by in class (sometimes cheating from others) and just want to get out into the working world and get on with life and earn money. It's just going to be a job to them. I chat with some, and they're qiuck to say how they'd rather be in art or literature or social science, but their family pushed them into a high-eraning career (STEM money makers... medical, tech, etc... not social science).

So, you need to assess if your guy is doing a job he's passionate about, or if it's just a way for him to earn money.

He's probably interacted with the other team members. Get their assessment... their social assessment.. they already know he's lacking skills. BUt, if they feel he's a team player, problem solver, etc.. then he has potential.

EG: sometimes it's ok to have a "slacker programmer" in teh group if they're a great problem solver that makes others think differnet. The other folks will bounce ideas off them, and the "slacker" can give them good ideas that they run with and produce exxcellent work. But, without that "slacker" the other programmers are just coding machins without really good ideas to code. Anyone can crank out code. Doesn't mean it's good. Doesn't mean it's solving a problem in an eelegant or innovative way. The slacker person may have aamazing ideas, just lacking the coding skills and speed to enact it. A "slacker" person may also be a morale boost for the rest of the team if they nice and work well with others. Not every programmer can be a rockstar kicking out code like boxes at a factory.

So, I would give the guy a social assessment to see if he's even worth wasting company time on to train. If he's not motivated, not a team player, and doesn't care.. skip him and hire someone else. No sense in training someone just to watch them take everything you gave them to a different job 6 months - 1 year later.

1

As others have already pointed out, your problems boil down to the fact that you are not allowed to give proper training to your employees. You should come up with a way to show your superiors that the lack of training has cost more hours than it would've taken to train them. In other words that neglecting to train them properly hurts the company.

Don't do your subordinates' work for them. If something does not get done, assign the task to someone else. This way it should become evident how many tasks people accomplish in given time period. Now you can approximate the working hours lost due to skill differences.

In addition to basic technical introduction you could suggest using pair programming to help with skill differences. This would also double as quality control measure, in case you need additional arguments to sell this idea to your CTO.

Side notes: I had to learn new technologies in my earlier workplace, including two completely different programming languages. Although the bosses were jerks when it came to spending money, they still dedicated resources to learning these languages, including ebooks and giving us time to implement large tutorial applications -- at work.

Stupid analogy: you wouldn't hire truck drivers and ask them to learn to drive trains in their free time.

1

I don't agree with some of the answers listed above, specifically with the expectation that John learn Angular/CSS/HTML on company time.

Specifically, the field of Technology is a vast field, and it's a field that is constantly changing. Angular came about in 2010 - I've been a Web Engineer since 2003. When I started Angular wasn't a thing. Why am I still relevant in my field? Because I made it my own priority to keep up with industry news, and to maintain current skills in relevant areas.

I don't think that should always be 100% necessary to learn any new skill for work on the company time, and I don't think the company is obligated to give you that time to learn. If you want to stay up to date, if you want to stay current, if you want to stay relevant, and sometimes if you want to keep your job you need to check yourself and your skill set and the job you have and make sure they are a match.

I got my start piddling around with designing Podunk mom and pop websites, and now I'm working on an Artificial Intelligence Team where I've contributed heavily to the direction and development of their technology stack, managing an AWS environment that didn't exist when I started.

I didn't get that job by telling my company they needed to give me time to learn those skills while I was at work.

Good developers, and more importantly, good Engineers are passionate about mastering their craft, and they understand that means that more then the 40 hours a week they are working they need to be more immersed in the technology they are required to use day to day.

That's the conversation I would have with John - and if he did not express interest or attempt to improve, I wouldn't offer him a transfer I would cut him loose. Developers without a passion to grow on their own are never going to be anything more then what they are when you hired them in.

0

My answer will not be popular...Give opportunities to John, propose even paid training if need be, but let him fail when the time comes.

There seem to be here several very wrong things:

  • You are enabling someone to keep on your team, that is not qualified to be there
  • That person is robbing the place of someone else who could be a productive member;
  • You are hurting your own job taking time to do the job of John
  • You are bringing low morale to the team - if John does not need to perform, why should they
  • You are building a trail of proven done work to be more difficult to fire John in the present and future.

You are not looking for your own interests in the short term doing the job of John, and much less to your team goals in the long term.

If I were a subordinate of yours, I would not expect you to do our job, but would expect you to deal with the bosses and get rid of a member of the team that cannot contribute to it.

In the short term, since you have got that person, you can assign John partially to help on documentation, and other part of the day/week to study during work hours.

I would also define time frames and objectives. A trainee/university hire has to make an honest effort in the first months and show interest and some wits, to be minimally competent after six months, and minimally productive to the team around 9-12 months frame. Usually also people will be only moderately competent on a new environment/job, depending on complexity, after 1 year to 1 year and half, at most two years. Your CTO should know that, or most probably knows but just want you to make the most of the team he has in his hands. Cost factors might play a hand on that.

PS. I saw in the past people in the place of John, that after 2 years of being "helped" were complaining it was high time they got a promotion...one of the cases was in his middle twenties and was complaining about not having a raise in the times it was not sleeping on the job e.g. when awake. Coming back to the specific John case, I would try to make sure to understand if the effort is genuine, or if he still thinks he can get away feigning work as if he would still be in University. It could happen John is not mature enough to understand he is out in the real world now, and that could well explain the spotty performance you talk about.

0

What you're trying to do shows you don't understand the difference in the skillset of your staff and what is needed.

A Java developer, if he has had no background in web development, has no understanding of the client-side and server-side of things.

The paradigm is different than a Java standalone. Even if he has worked on java applets, that's still programming inside a self-contained VM, not one where a client talks to a server.

For example, any type of error-checking on the client-side are superficial and is simply used to reduce server hits. It's NOT suppose to be relied on, because bypassing client-side validation is absolutely trivial. Something like a "username", the basic client-side checks will be not blank and that's about it, maybe add some combination of alpha-numeric requirement, but even might not work due to the need to support different languages.

On the server-side, I will check for not blank, and also any data type that I cannot handle (outside of UTF-8 for example), then also check for SQL injection attacks (prepare statements will solve that, but I want to detect it and possibly black-list the IP), and probably record repeat attempts of large volume traffic to prevent malicious access (hacking, mass username creation, username squatting, etc). All those options are server-side only.

Then you also want to think about how the client communicates with the server, and whether it'll be appropriate to go into AJAX for a better user experience. All this knowledge is non-trivial and a CTO is pretty dumb to expect a staff can learn all this in couple months.

0

I think you're missing the key parts of what it means to be a team lead. Mentoring your team members so they become better is part of your job. Giving them the support to succeed is part of your job.

For example, give your junior team member a training exercise for him to learn. Give him what you think is the right amount of time, or better yet, ask him/her how much time they need. If the CTO has a problem with it, defend it. The team is counting on you to protect them and mentor them.

Also, the power is not in my hands to simple allocate them the training task or actual project task. I do what my CTO told me to do and whenever I have taken a decision to provide training to them on my own, then the CTO tells me everytime, "learning HTML, CSS, JavaScript is not something for which they have to devote months. Teach them the basics in 4 hours and give them a day to do a simple task and then they will be all ready for the project. Rest they will learn while doing the project. We don't have so much time to devote on their training."

I don't buy this. If you are their leader, you absolutely have the power to help them succeed. If your CTO tells you to do differently, then that is a problem between you and your CTO. Leave your team member out of it. Your job is to help him. Educate your CTO. You need to stand up to him. That's why you're paid the big bucks now.

Sometimes managers are wrong. Sometimes managers have unrealistic expectations. Especially CTO's. CTO's want everything, they want it now, they want it perfect, and they want it to cost nothing. They rely on you to explain to them how it actually works.

You need to show your CTO the tradeoff between giving this employee the time needed to learn, which is:

  1. Less time available for building features now, but more capacity later.
  2. More time available now, but it won't get done on time, or correct quality.

It comes down to predictability and velocity. Not just for the individual, but at the team level. If every team member has to keep helping this individual out because they don't know how to do their job, then the productivity hit is everyone's.

Showing the facts to your CTO this way will 1) persuade him/her 2) demonstrate your competence, so they will likely back off and let you do things your way.

In my opinion, the time to get your CTO involved in a personnel decision about this employee's performance is if you have exhausted your efforts and believe this individual is never going to succeed on your team. It should be a last resort. You don't want your other team members constantly worrying that you will throw them under the bus when something goes wrong. You need to protect your team. Firing, or escalating to your boss, which is probably about the same thing, should be the absolute last resort.

protected by Snow Feb 25 at 6:24

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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