58

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.

KhiladiBhaiyya
  • 2,262
  • 4
  • 14
  • 26
  • 2
    Comments are not for extended discussion; this conversation has been moved to chat. –  Feb 25 '19 at 06: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 -cautiouslyoptimistic- Feb 25 '19 at 06:30
  • 8
    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 '19 at 06:41
  • "More than 1.5 years" is "less than 2 years"? – Thorbjørn Ravn Andersen Feb 25 '19 at 14: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 '19 at 21:50
  • 4
    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 '19 at 15:46
  • I don't see any irony in the last para. The fact that you are team lead with only 1.5 years of experience shows this is some kind of student-workforce-oriented company with very little experience on the benches. So their hiring policies are on par with that. Does the CTO have 3 years work experience, by the way? – the gods from engineering Feb 24 '23 at 23:41

15 Answers15

332

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.

sampathsris
  • 147
  • 5
Ertai87
  • 45,600
  • 9
  • 73
  • 144
  • Comments are not for extended discussion; this conversation has been moved to chat. –  Feb 25 '19 at 06:40
  • 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 '19 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 '19 at 16:51
  • @Ertai87 Right, makes sense indeed although I guess it is possible to offer the choice whithout pressuring John ? – Pierre P. Feb 25 '19 at 16:53
  • @AzirisMorora If your boss comes to you and says "Wouldn't you like a job on a team that's not mine?" wouldn't that sound both like you're being kicked off the team and also extremely passive-aggressive? – Ertai87 Feb 25 '19 at 16:55
  • @Ertai87 It would, if I did not notice there was an issue with the team I'm in. Anyway, I still believe you are right when saying it should be last resort. – Pierre P. Feb 25 '19 at 16:58
  • 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 '19 at 19:51
  • 17
    @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 '19 at 20:22
  • 1
    @Jack Some people like web development and learn HTML/CSS. Others prefer other aspects of programming with no desire to work with HTML/CSS. While it doesn't take a tremendous amount of knowledge to learn either and be able to do a fair amount of things, it does take considerably more effort to do those same things at a professional quality level. Multiply the amount of effort several times for typical new grads since they don't have the experience of previous projects to fall back on. Incompetent??? Possibly, but not enough info to make that claim. Lack of initiative...that's fair. – Dunk Feb 26 '19 at 21:40
  • 2
    ...As for "he shouldn't have been hired in the first place"... Think about it for a second. The company is paying 4 software developers, the lead is the seasoned veteran developer with all of 1.5 years experience. Do you actually think the company has a clue on who to hire or not? – Dunk Feb 26 '19 at 21:42
  • @Dunk Well John has two choices. He applied for a job he was unqualified for. He's actually lucky they even hired him despite his repeated incompetence at fulfilling basic tasks. His first choice is to study up on HTML and CSS to remain employed at a job he's not qualified for and possibly lied to get hired. His second choice is to quit a job he's not qualified for and expecting overtime for a job he potentially lied to get. The company is giving him a chance here. You can talk all about how he should be compensated for studying on his own, etc. and how the ideal work world should be... – Jack Feb 26 '19 at 22:49
  • ...but John soured that relationship the moment he lied about his competency to gain employment. And if he didn't lie and he's just 5 times slower than his colleagues at learning technologies, that's not the employer's fault either. His colleagues don't need to ask for overtime to learn some basic technology because they're competent enough to learn during work time. The fact that John is trying "random permutations to get things to work" speaks to his incompetency and it's not the employer's fault that he's slower than normal. Is it that unreasonable for a company to give him a 2nd chance? – Jack Feb 26 '19 at 22:54
  • 6
    @Jack - You are assuming that John knew he was being hired to be an Angular developer and sold himself to be one. I don't believe that evidence has been established. – Dunk Feb 27 '19 at 00:01
  • 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 '19 at 01:07
  • 2
    @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 did not teach me anything about margins or padding. If I was to try to do it, I would basically be trying random permutations to get things to work. Would you consider me incompetent? – Ertai87 Feb 27 '19 at 15:46
  • 3
    @Jack Also, as Dunk said, there is no indication that John knew he was being hired to be a front-end developer at all, be it Angular or React or anything else, or even "basic HTML and CSS". – Ertai87 Feb 27 '19 at 15:47
  • @Ertai87 I'm not sure why you keep referencing your #1 school (bragging?) but I can tell you that University is not anywhere close to preparing you for the workforce. They don't teach you anything practical, I had to learn many things on my own - not pet of curriculum. If I relied on what I learned at school exclusively to get a job I'd be unemployed or fired by now. John is lucky to get hired for doing the bare minimum to graduate, completing shallow assignments with no real practical usage. – Jack Feb 28 '19 at 03:16
  • There's a difference between testing things and learning. If after 3 months you still don't know how to set margins, you are obviously incompetent or not suited for the job. If that is the case you should quit. I don't believe it's ethical to continue receiving payment for a job you are woefully unqualified to do (and shouldn't have been hired in the first place), and to blow off suggestions to try and better yourself to remain employed. At this point, John is nothing more than a leech that found a sucker company that you are trying to vilify. – Jack Feb 28 '19 at 03:20
65

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.

dwizum
  • 43,585
  • 17
  • 100
  • 155
  • 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 '19 at 15:21
  • +1 I think some newly promoted leads have trouble separating their previous duties from their current ones. A leader and manager is supposed to lead, delegate and manage the team; if something doesn't get delivered you are personally accountable for your team's actions. – my_mistakes Feb 22 '19 at 15:52
  • 2
    Yes - those are the points I was trying to emphasize in the last paragraph. Unfortunately, lots of people are promoted to "leader of X" because they're good at X. Being good at leading people who do X is very different from being good at doing X. If these people aren't given guidance as to what it means to lead, the employer ends up with situations like this - where they're depending on a leader who frankly has no idea how to lead. – dwizum Feb 22 '19 at 16:02
  • It is generally believed a good leader not only can identify a problem but also come up with a solution, to that problem. – Donald Feb 22 '19 at 16:27
  • 14
    Hate to be nitpicky, but the name "John" doesn't sound all that feminine of a name to me. –  Feb 22 '19 at 17:05
  • 1
    I have observed that 99% of people are saying that I am the one responsible for this situation. Actually it's not that I haven't helped him. In fact, out of my 8-9 hours in office, 4 hours everyday are spent in helping him in whatever issues he is facing. But I am just fed up of spoon-feeding since that he isn't able to think logically when asked to complete a task on his own. – KhiladiBhaiyya Feb 22 '19 at 17:09
  • 6
    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 '19 at 17:16
  • @dwizum by spoon feeding, I mean that I have to help him at every simple task which is assigned to him. He isn't able to do even a single task at his own. Even I have to solve 90-95% of his tasks by myself and then he learns. But this cannot be continued forever and that's why, I asked what other solutions I can try to deal with this issue? – KhiladiBhaiyya Feb 22 '19 at 17:31
  • 7
    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 '19 at 17:44
  • 1
    Excellent answer! I'd add that it is okay to go your supervisor and say something like "I'm having difficulty helping one of my team members improve their skills. Could you help me figure out some strategies?" The author is having the exact same problem as their team member, just with a different skill set. – Colin Young Feb 22 '19 at 19:04
  • 1
    Strangely, one solution has not been mentioned: if John has clearly been assigned to an inappropriate role and there's no time to teach him (as this project is top priority), the CTO may see it as a better solution to give you someone else who does have appropriate skills (from a team whose project is less critical). John will then need to be either reassigned to a position he was auditioned for, or offered education is he's willing, or fired if he's not since you cannot offer an appropriate job for him (he is likely to have legal protections in this case like a mandatory severance package). – ivan_pozdeev Feb 22 '19 at 21:24
  • @noClue Not sure why but it's the OP that changed the subject's gender via a question edit (and even added a suggested name, "John" - very strange) – Lightness Races in Orbit Feb 23 '19 at 01:28
  • 2
    Oh no. If I am given a specialist in Middle-Ages literature and told to make him develop front-ends in Angular, it would not be up to me to "do something about that". This is a casting mistake of which I am the unfortunate victim and it is not me who has made the decision to hire him. I would just say "I got him by mistake, take him back and give me a front-end developer". preferably in Angular, but someone experienced in Vue would be fine too - that I can deal with. – WoJ Feb 23 '19 at 16:48
  • "if your company needs an expert in Java, or if you need someone who is flexible" there is in reality vanishingly little need for employees who cannot function across diverse technologies in at least a rudimentary fashion. No one gets to be a good programmer in any technology without basic problem solving skills - and the most obvious thing to do when presented with a need in an unfamiliar context is to find a similar thing (preferably in the code base or if not outside of it) and crib from that. If the person can't do that, they are either unmotivated, or not that great in any language. – Chris Stratton Feb 23 '19 at 20:20
  • 1
    @DG4 spoon feeding != training. I would say it is the opposite of training, and completely counter-productive to your goals. YOU are holding him back. – user87779 Feb 24 '19 at 02:10
58

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).

Peter Mortensen
  • 1,003
  • 1
  • 8
  • 8
LP154
  • 4,448
  • 21
  • 34
  • 1
    I have no problem in allowing him to study these subjects at work for 2-3 days. But it's my CTO who thinks that learning HTML and CSS is a childish task and would take everyone not more than 2 hours to learn. He has put me under so much pressure to deliver the project and I have no choice except to put my subordinates under pressure and finish their work quickly. – KhiladiBhaiyya Feb 22 '19 at 17:15
  • 15
    @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 '19 at 18:42
  • 43
    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 '19 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 '19 at 19:14
  • 21
    "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 '19 at 16:35
  • 2
    @FrankSchmitt +1. A major responsibility of the team leader is to shield the team from unreasonable imposition from above, where feasible. – Tom W Feb 25 '19 at 11:29
  • 1
    I totally agree. But, with all of the other red flags about this company, I imagine that the OP had no training in leadership. – Mawg says reinstate Monica Feb 25 '19 at 14:44
  • 2
    If "John" isn't producing much now anyway, why do you think allowing "him" to actually learn things would make "him" less productive? You're the team lead. Start leading. – Jenny D Feb 25 '19 at 15:47
  • @DG4 If you're the manager of this person; then it's up to you to defend them and what they need. It is up to you to stand up to the CTO and tell them they're wrong and that if they want to take back end devs and make them do front end work then the retraining will take time. Managing people isn't just about telling them what to do, but getting what they need; and managing expectations of everyone around as required. The problem is that you're inexperienced and haven't seen others do this. Ask for a day of shadowing another manager would be my suggestion; for YOUR training. – UKMonkey Feb 25 '19 at 16:41
14

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".

meriton
  • 5,155
  • 18
  • 24
  • 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 '19 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 '19 at 19:26
  • Sorry, the hand-holding I was referring to was what OP had already done, not what you are suggesting. Honestly, I think your answer is a good idea for him (?) to do, but I don't think it will do a lot of good because John most likely doesn't have much talent. – Jim Clay Feb 22 '19 at 19:48
  • 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 '19 at 03: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 '19 at 13:06
  • 1
    Someone actually employed as a developer should be beyond the point where they need mentoring to pick up the essentials of a new language to the point of being able to accomplish basic things by example of what is already there. If they are not able to do that, then either they are unmotivated to, or they are not ready to work as a developer in any capacity. Someone who needs that kind of assistance should be in an explicitly trainee role, where if they will develop thought patterns suitable to the work is still an explicitly open question and useful results are not yet expected. – Chris Stratton Feb 24 '19 at 18:55
  • 2
    I would say that someone not being able to Google is a lost case or very lazy. – Rui F Ribeiro Feb 25 '19 at 10:11
13

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.

David Schwartz
  • 6,161
  • 2
  • 24
  • 28
  • 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 '19 at 06:24
6

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.

koksamosa
  • 61
  • 4
  • 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 '19 at 03:34
  • 1
    He is the team lead, not the team professor.... – Rui F Ribeiro Feb 24 '19 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 '19 at 14:44
  • @RuiFRibeiro: I see alas you never had that job. (You describe yourself as a sysadmin and security consultant). Team lead often involves passing down your own experience to junior devs. More or less formally, over lunch or sometimes on the whiteboard etc. Simply diving up the work and merging the code from underlings is hardly the full job description. – the gods from engineering Feb 24 '23 at 23:24
  • @Fizz I had it actually, however I don't own you any account of it and even if I hadn't, it is not a priesthood, others can have their own opinions. Btw sysadmins can also have subordinates, do dabble into politics, train juniors and have trainees, they are people, not robots. It is not really that sensitive trying to second guess others trajectory and censor them. On to of it, actually none of your business. – Rui F Ribeiro Feb 26 '23 at 02:31
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.

motosubatsu
  • 107,822
  • 51
  • 290
  • 367
3

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.

Marc.S
  • 41
  • 3
1

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.

gnasher729
  • 169,032
  • 78
  • 316
  • 508
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.

Mark
  • 460
  • 2
  • 7
  • 2
    Not wanting to spend 120 hours a week devoted to 1 field borders more on common sense than a lack of passion. This mentality doesn't help employees. If you are so devoted and incredible at your job, you should get payed more. If you aren't but you fulfill the requirements of the job, that is completely normal and understandable imo. I really dislike this mentality. It creates a culture where the only way to be accepted is to live and breathe your work every day. It sucks, and it isn't worth it. Life offers many other things, and exploring it shouldnt be seen as unpassionate. – Ihater Feb 10 '21 at 22:07
0

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.

blahblah
  • 9
  • 1
0

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 my 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.

Rui F Ribeiro
  • 4,967
  • 22
  • 30
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.

Nelson
  • 13,688
  • 6
  • 34
  • 52
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.

Brandon
  • 869
  • 6
  • 10
0

Put him on a Personal Improvement Plan.

Simply put, he's not working on the level expected of his position, and is making things actively worse for the other team members, since they have to spend time helping him and correcting his mistakes.

As such, the best course of action is to talk to HR about putting him on a Personal Improvement Plan, which lists the minimum performance requirements for his position, and requires that he meet them by a particular date to retain his position with the company.

Either he meets the requirements by the date, in which case the problem has been solved, or he doesn't and you fire him, in which case the problem has been solved.

nick012000
  • 10,747
  • 2
  • 29
  • 46