47

The company has hired four new people in the office. Each of them stated that they like IT and that they would've become software developers but none of them had any experience in IT industry.

So I'm their supervisor and, as the company decided to invest in people with no experience, I have to train and help them.

The company has bought a course from an external teacher, paid lot of money, so we've taken the first two days of that course (JS basics) and even I followed that course.

After 16 hours (2 days) of that course I made a simple exercise about what they've learned as they stated that everything about the course was clear and nobody had any questions for the teacher.

So I give them 3 hours for that exercise (I completed it in 10 minutes, my colleague with programming experience but without experience in JS completed it in 20 minutes).

After those 3 hours only 3 of them completed the exercise, but none of them followed the requests of the exercise, making casual stuff instead.

After following all of them I noticed stuff like some of them don't even know the basics of programming and one of them doesn't even understand English (he translated some code or docs from English to native language, so you can imagine what an IF statement became).

How should I deal with them?

I'm only 21 and it's my first time managing people.

Should I still lose my time by trying to teach them and still invest company money in courses for them or should I just pass to new candidates?

About the course: The course was not only 16 hours, the full course has a duration of 480 hours. The 16 hours was about the fundamentals. After each argument I asked and even the teacher asked all of them if there were any questions and if all was clear; all of them replied always that all was okay.

My exercise: My exercise asked them to show what they've learned about that, simple non-real-world exercise like "Create two classes "Student" and "Person" and add them to an array, then show it in HTML". We've made the same in the course but with classes called differently.

Trainees: Two of them are from an IT university, the other two claimed that they have programming fundamental. At the end when I said "open PowerShell", some of them ended up searching for it on Google. So at this point I can claim that they lied in the interview: English I think is a basic requirement for software development as all docs are written in it, so one of the trainees even lied about his English level, nowadays he translates all docs or code blocks from English to Italian.

2
  • 3
    Comments are not for extended discussion; this conversation has been moved to chat.
    – Kilisi
    Oct 26 at 2:32
  • 4
    Alternate question: how do you deal a (presumably quite expensive) 480 hour course that has failed to teach your juniors the basic skills you expected it to?
    – Gh0stFish
    Oct 28 at 14:53

21 Answers 21

190
+50

Just a bit of context here: I have been educator for apprentices in Germany. Apprenticeship is exactly what you describe: we hire people that are interested in software development as a job, but have no previous education in that field. Obviously, if they have programmed as a hobby before that's great. If they know English, that's great. If they were good at school, that's great. But none of it is really required.

It takes 3 continuous years to educate someone to be a junior software developer. 3 years of formal school, hands on training in the company, practice, practice, practice and working in the company.

The educators are all fluent in the apprentice's language as well as English, have multiple years of experience in the job they educate in and have themselves been educated in teaching methods and apprenticeship rules and laws.

Educating 4 people at the same time is a full time job. If you want to be the trainer, that's it. You cannot do another job on the side. You will not be a "manager" or "programmer" or whatever else there might be. You will be "trainer". Your productive output for the company will be "trained developers", not code or tickets done. Your job is not only hands on training, but also to have a plan spanning multiple years, what to teach them how and when.

So, assuming we ain't doing it completely wrong here, you are missing the key ingredients:

  • Education takes time. Lots.
  • Education takes practice. Lots.
  • Education takes a trainer. "Lots".

The first two days of programming, I will cover things like what button to press in the IDE to make something run or maybe a few console applications that print lines. If I feel the apprentices have a really good day and are in for a challenge I might cover simple loops.

I'm not sure what prompted you to proceed as you did, but I can tell you that whoever decided this course of action, intentionally or through inexperience, set you and your trainees up to fail.

There is no way you grab a few people, give them a JS course (no matter how good) and voila, software developers. There are reasons it takes 3 years. And yes, if people are really good and have programmed before and are really quick learners, it can be shorter. But we are still measuring in years.

We have standards and tests, so that our apprentices all have a certification when they are done. Otherwise who would employ them. Just imagine that in other branches... would you hire a plumber who says "well, I had that course", or would you go visit a doctor who's like "I sat in with the other Doctor for 2 weeks now, I think I should be able to do easy diagnosing myself now".

You need a plan. Then you need to check what you need for that plan to succeed. At a minimum, it's a lot more time than you think and a way better trainer then you think. Don't take that personally, you might be a great trainer, but at 21, you are barely "experienced" at the job itself and teaching it takes something on top that you just don't have yet. Your trainees cannot be successful if their teacher is still learning the ropes.

Maybe that is a good moment to ask your boss for courses on training. Or management. Or both. Just keep in mind, training and management are two fundamentally different jobs and with 4 trainees, there is no time left for you to be in management.

Sorry, this was longer than I thought it would be. I don't have immediate tips, other then give them time and train them. Yourself if neccessary.

And get training yourself.

And above all else, come up with a plan. Plan out their education. When you write down what you need to train them, you will automatically end up with a multi-year plan. If not, something is wrong with the plan.

3
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – DarkCygnus
    Oct 28 at 0:30
  • 6
    To emphasize the points above, I occasionally train on lightweight topics for about an hour. It takes me about a day to: do the lesson plan, decide on the skills to be gained, develop the tests to assure the skills are gained, write the outline of the lab, write the outline of the presentation, draft the slides for the presentation, and then script out the speech of the presentation. That's on a topic I don't have to learn anything "extra" about. This is why most US companies just give up on training, and only hire pre-trained (or those who lie about their skills) That's for 1 hour.
    – Edwin Buck
    Oct 28 at 7:10
  • 1
    I do this for 5 people at the same time in a company in the UK, where all of them have started at different times over the last three years. My own training was in Germany as well. This is incredibly accurate and exactly my experience. The more skilled your trainees get, the less supervision do they need. But I do not have the time or mental capacity to do more than tiny bug fixes myself. I can write tickets, but that's it.
    – simbabque
    Nov 1 at 15:32
110

You are setting your expectations much too high.

You're comparing yourself and your colleague, who have been educated in computer science for multiple years (I assume at least 4 years post-secondary minimum, if not high school), against 16 hours of classes. If they are able to do anything close to what either of you can do, then that would've meant you got ripped off.

Be realistic and think hard about what the expectations are. Think programming 101. Think possibly high school level.

1
  • 3
    Comments are not for extended discussion; this conversation has been moved to chat.
    – Kilisi
    Oct 26 at 2:33
69

So i'm their supervisor and as the company decided to invest in people with no-experience i have to train them and help them.

Ok, there is nothing wrong with this so far. For many companies investing in employees is a good idea.

The company has bought a course from an external teacher, paid lot of money, so we've made the first two days of that course (JS basics) and even i followed that course.

Big mistake here in my opinion. You're starting people off with a language-specific course when they have no programming fundamentals. This is akin to trying to teach surgery to a would-be surgeon who doesn't know anatomy. There is no context.

After 16 hours (2 days) of that course i've made a simple excercies about what they've learned as they stated that everything about the course was clear and noone made any question to the teacher.

This is a case of you don't know what you don't know. 16 hours is class time is not very much and waiting until the end to ask if there were any questions is crazy. The teacher should have been evaluating the students all along and checking their learning with exercises along the way. But really how much can a non-programmer learn in 16 hours of class time? The answer is not much!

After following all of them i noticed stuff like some of them even don't know the basics of programmation and one of them doesn't even understand english (he translate some code or docs from english to native language.. so you can imagine what an IF statment become)

How should i deal with them?

I'm only 21 and it's my first time i manage some people..

Should i still lose my time by trying teach them and still invest company money in courses for them or should i just pass to new candidates?

Ok, another huge red flag here. The class was in English and you have a student who doesn't even know English? How much could they possibly get out of the class? Didn't you evaluate these new employees language skills before hiring them?

I suppose you have two options:

  1. You can reevaluate your training options and start these employees off at a level appropriate to their current knowledge and then design a training plan to get them from where they currently are to where you need them to be.

  2. Start over with a better set of employees who are in a position to understand what your expensive class is teaching them. So this would be programmers with some experience.

Either way, however, it's going to be some time, months to years, before you have experienced and productive programmers using this method.

Here is an update based on your additional information:

About the course: The course was not of 16 hours, the full course has a duration of 480 hours. the 16 hours was about the fundamentals, after each argument i asked and even the teached asked all of them if there were any question and if all was clear all of them replier ever that all was okay.

This is a poor technique. Some people will ask questions if they don't understand but others, in fact I believe most, will not. This is either a cultural or a personal problem but I've seen far too many people simply say "no" when asked if they have any questions. A much better approach is to ask questions that require them to tell you something that indicates their understanding of the material. For example with a JS class:

"Mr. So-and-so, can you please explain the difference between using let, var, and const?"

This will allow you to verify if they actually heard and learned something as well as help reinforce the materials. You and/or the teacher should be asking pointed questions after each section to test learning.

Simply asking: "Do you have any questions?" is almost always ineffective in my experience.

Two of them are out an IT university, the other two claimed that they have programming fondamentals, at the end when i said "open PowerShell"

Many universities use Linux or MacOS rather than Windows. So they may have no experience or exposure to PS. If that was a prerequisite for your training class you should have asked them to familiarize themselves with it in advance. Otherwise you might have them do these exercises using the tools they are currently familiar with.

1
  • 2
    Comments are not for extended discussion; this conversation has been moved to chat.
    – Kilisi
    Oct 26 at 2:32
28

After 16 hours (2 days) of that course I made a simple exercise

My exercise asked them to show what they've learned about that, simple non-real-world exercise like "Create two classes "Student" and "Person" and add them to an array, then show it in HTML". We've made the same in the course but with classes called differently.

Your exercise touches on general JS syntax, basic HTML, collections, and basic OOP concepts. And you expect people who are not developers to be able to independently work out a solution after taking the first two days of a sixty day course.

You are either uncaring, or you are oblivious to the difficulties of learning a new concept and the complexity that learning programming entails. There is no conceivable way these students could have learned all that in two days.

OOP alone should take weeks if not months before you even introduce the topic, let alone asking students to design classes, which I'd even guess (based on the names) you expected to have inheritance implemented. Even if not, that is still an insanely high bar to clear after merely two days.

So I'm their supervisor and, [..] I have to train and help them

None of your actions in the entire question show you doing any training or mentoring. You are supervising them, but you seem to be letting them take the lead on their own learning.

I made a simple exercise about what they've learned as they stated that everything about the course was clear and nobody had any questions for the teacher.

Why are you expecting these newcomers to come up with targeted questions, expecting that after they've asked all their questions, they will fully comprehend everything they will have been shown?

You seem to be working under the expectation that the students know precisely what the trainer must teach them.

This just doesn't follow suit. Students will not ask questions which prompt the teacher into teaching the right material, nor will their questions be built on a conscious roadmap of what they need to learn, because that is the trainer's job.

The course was not only 16 hours, the full course has a duration of 480 hours. The 16 hours was about the fundamentals.

Have you considered that a 480 hour course might be pacing itself, first slowly introducing broad concepts and ideas before getting down to brass tacks?

There's an applicable anecdote here. Where I'm from, there is a certain demographic who has historically home schooled their children, and who are known to (comically and inoffensively) clash with the national education system when they send their children to school.
Some of my friends are teachers who have interacted with these parents, and they have to tackle questions like "can (s)he read and write yet?" after the first two weeks of kindergarten. When explained that reading and writing is only scheduled for several years down the line and they haven't even started teaching any of it, the parents actively protest the allegedly ineffective schooling that their child is being provided, and there is a non-negligible amount of children being pulled from school because of it.

You seem to be of a similar mindset, that skills being taught must progress at a linear rate to the projected total curriculum. No introduction, no slow start. Just start cramming from day one. This is nothing more than a basic misunderstanding of how education works.

You cannot reasonably expect that 2 days into a 60 day course, your students (I cannot stress this enough: who have no experience yet) can somehow independently bang out a solution to a programming problem if given enough time.

Furthermore, you are even negatively rating them for googling the information. Not only have you failed to provide proper guidance and schooling, and are you considerably jumping the gun on your expectations of what these students can deliver, you're even punishing them for trying to learn things by themselves.

After following all of them I noticed stuff like some of them don't even know the basics of programming

And that is a surprise to you, when hiring people who have no programming experience and who you did not even allow to complete an actual course on the topic?

and one of them doesn't even understand English (he translated some code or docs from English to native language, so you can imagine what an IF statement became).

Just because you know what the words "if", "for" and "while" mean in English does not mean that you understand the logical constructs that they represent in programming.

Do you think all knowledge is merely a linguistic translation of concepts to English? Or do you think it's possible that the issue here isn't a lack of English understanding but rather not understanding the programming concept itself, regardless of what its name is?

How should I deal with them? I'm only 21 and it's my first time managing people.

I suggest you recuse yourself from training these students any further, as your actions make clear that you are only interested in judging these individuals ("lose my time by trying to teach them and still invest company money in courses for them or should I just pass to new candidates?") and are not training, mentoring or guiding them.

At 21 years this is not necessarily a fault on your part. I suspect your employer has tasked you with something that you simply are not completely ready for, and that is not your fault but that of your management.

8
  • 13
    @NiceTo You expect newbs to learn angular? I'm sorry but that is ridiculous. Angular and other SPA framework are not the type of things you learn as a junior.
    – Neil Meyer
    Oct 26 at 18:35
  • 11
    @NiceTo: What you are doing is the equivalent of teaching complex number algebra before they've even grasped elementary math with integers. It is so beyond any reasonable expectation that nothing of your current training plan is even remotely salvageable. Not everyone is cut out to provide training and mentoring and that's perfectly okay; but if you do not acknowledge this and push forward you will end up disenfranchising your students and costing your company a whole lot of time and effort. No beginner is ever going to be able to complete the training you envisage.
    – Flater
    Oct 26 at 20:20
  • 8
    @NiceTo Angular?! Holy shit, you're setting them up for a trainwreck! I've spent some 10 years in the industry and am fairly comfortable with programming overall, yet it took me over 2 months of work to make a relatively simple Angular app (granted, a good chunk of this time was figuring out backend, some CSS shenanigans and whatnot, but still). I mean, you could do that, but expect to spend at least an year before they could comfortably do something outside of a single component they've gotten familiar with.
    – Lodinn
    Oct 27 at 2:48
  • 3
    People who say the "have some experience with JS but not much" often mean they've used jQuery a few times to tweak some things, or they've copied some code from StackOverflow and it worked. Learning Angular (or other complex frameworks) without having a good knowledge of JS is almost always going to be a problem as there is a large amount of assumed JS/CSS/HTML knowledge. I've known senior .NET devs who want to get in and help with Angular and they get tripped up with quirks of JS because they don't want to spend the time on JS fundamentals, even though they are knowledgeable programmers.
    – rooby
    Oct 27 at 6:49
  • 3
    @DaveG: I appreciate the feedback. I'm weary of writing answers that boil down to "don't" or "you should stop" (which this answer does boil down to) without adequately backing up the reasoning for that conclusion. I wouldn't accept such an unsubstantiated answer. It was not intended as a rant, but rather a listing of things that raise red flags to me about OP's argument/position. Sorry if it was overkill.
    – Flater
    Oct 27 at 13:34
22

After 16 hours (2 days) of that course ...

Nobody is going to learn anything in 16 hours of study across 2 days. That's way too much.

i sayd no to all of them during the interview but the company decided to hire them as the company think that "everyone can be a developer"

If the company thinks that "everyone can be a developer", and there is a mandate from above, then I suppose that you need to invest in even more training.

Of course, you should get a feel from upper management about how much money they are going to tip down the drain before they give up on this.

Because you were against this, you should make sure you engage some sort of 3rd party assessment service to gauge the skill levels of the employees.

9
  • 13
    “16 hours in two days is too much” - at university I did 22 hours of 45 minutes each a week. Add a bit of homework, and you’re at 50-60 hours. Nobody can learn anything in 16 hours in two days unless they have a major background. You need time to digest new information and they didn’t have that.
    – gnasher729
    Oct 25 at 15:32
  • 11
    @IgorMytyuk Does the entire company consist of just you and your boss? If so, you need to add that detail in the question.
    – Theodore
    Oct 25 at 18:42
  • 2
    @IgorMytyuk My answer has nothing to do with HR. Get some 3rd party, (as in some sort of assessment company) to assess how good the employees are. Oct 26 at 7:01
  • 4
    Investing in a trainer is indeed unavoidable. Even if the OP would teach Javascript, there's still the open question who is going to teach the OP how to teach ?! Teaching, like programming, is not a skill you're born with.
    – MSalters
    Oct 26 at 21:27
  • 4
    @rooby Yeah, that is really the underlying problem here. The boss doesn't know what they're doing and decided that "training" 4 people to become devs was a better idea than just hiring existing devs with some experience (or even actual junior devs). The company is going to spend an insane amount of time and money teaching these people how to program and there is a high likelihood that at least some of them will leave before they actually produce anything (either because of burnout or because they find a better opportunity). This is all a ridiculously bad idea
    – Kevin
    Oct 27 at 22:18
13

I am a python developer who changed tracks from electrical engineering(only took 2 c++ courses in bachelor's degree) to software. So I think I can share my experience a bit here:

  • Programming courses teach you nothing unless they are accompanied by a ton of exercises. Maybe give them a "hackathon" challenge to practice their skills and then test them.
  • Something about programming makes it look very easy when you read the documentation or go through the course. But implementing it in a real life situation is a whole different story. So it could be their first time discovering that.
  • people learn differently. Some are visual learners, some like texts and others like to churn through documentations. So don't expect a 1 course fits all approach.
  • Did the course cover how to set up your programming environment? Did they know they were going to be tested on it? Did you ask people who have their same programming level to compare their results to them?
  • Also, regarding the language problem: did the position require the person accepted to speak English? Didn't you/HR/your manager realize that before hiring?

You are obviously experimenting with these people for a goal that would benefit both the company and them. So give them a chance and only make a decision that will impact their lives greatly when you have enough data to support your argument.

12
  • 7
    I can't upvote enough the "people learn differently" part. @IgorMytyuk : creating a class does nto mean anything for someone not used to the very concept of class. I was professional programmer since 6 yeras when I learned that concept (only procedural before) and it took me 3 days just to grasp that very concept. Your trainees just don't know what you are speaking about. So you show them how to create a class, but as they have no cognitive reference to what a class can be, they just can't do it again.
    – gazzz0x2z
    Oct 25 at 12:55
  • 5
    In France, we have "la grande ecole du numerique". That's something to train people for ending up software programmers in a few months. Success rate is 15%. Yes, those people are given the "programming basics". Still, only one out of 6 makes it through the real world. Not everyone is fit for the task, especially after just a few days of training (480 hours is 3 months, the equivalent - expect the same success ratio).
    – gazzz0x2z
    Oct 25 at 13:35
  • 9
    @IgorMytyuk classes are actually an intermediate topic that (in my opinion) absolute beginners to programming cannot handle.
    – anxiousPI
    Oct 25 at 19:59
  • 9
    I actually think the part you edited out was more relevant than the part you left in. The OP's manager is doing the same thing to the OP as to these other hires....giving them a job way, way over their head with the idea that anyone can do it, it can't be that hard, no experience or training required. And the OP has bought it, the same way the new hires bought the idea that they could poof become software developers. Now the OP and the new hires are all hosed, and the longer it goes the worse it gets. Oct 25 at 20:30
  • 6
    @gazzz0x2z "but as they have no cognitive reference to what a class can be, they just can't do it again." This sentence resonated quite strongly with my experience.
    – anxiousPI
    Oct 26 at 7:47
12

A couple of random thoughts:

First, simply asking people if they have any questions is not the same as making sure that they understand. Having people try an exercise (or, at a minimum, paraphrase the concepts back to you or pass some kind of quiz) is a much better way to assess understanding. This is especially the case since asking intelligent questions itself often requires you to know enough to know what you don't know.

In terms of language skills, there are lots of levels you can know a language at. For example, I can hold a basic conversation in Spanish, but I find it very challenging to read questions on the Spanish-language Stack Overflow site. I can do it, but I will freely admit to having to resort to Google Translate sometimes. I certainly don't think that I'd be able to actually write technical documentation in the language myself at this point. That's the case even though I have a master's degree in computer science and 13 years of experience; I imagine that it would be even more the case for someone who's just starting out.

Point being, it's probably a lot to ask to ask someone who's just learning to program who may not have that great of English to be able to understand all of the English right away. They'll probably need additional training in the terminology given their current level of English. There's no shame in that, that's just where their skill level is now. If you choose to continue to train this person, you should also provide them with language help or training to enable them to succeed.

Whether the fact that they didn't know about PowerShell proves that they lied is slightly more complicated. This is actually fairly Windows-specific, and it's probably used more for automating Windows administrative tasks than for programming per se. It's actually arguably slightly stranger for an IT person not to know that than for a programmer not to know that, so I guess that depends on the specifics of their IT training course.

2
  • 8
    You need a certain level of understanding to have any questions. These guys are likely nowhere near the level where you can have questions.
    – gnasher729
    Oct 26 at 16:09
  • In our IT school we had a habit of taking turns as teachers explaining whatever concepts we were concerned with with each other. An instructor would listen to us talk and guide the conversation when needed. We had no real newbs though as even the 18 year olds had 4 years of high-school programming under there belts
    – Neil Meyer
    Oct 26 at 18:42
11

How should I deal with them?

I assume if the new employees aren't capable of doing the work, they will be let go at the end of the probationary period (by you, or by someone in authority to do so). That's one of the reasons for having a probationary period in the first place.

Meanwhile, you need to find a way to either successfully train completely inexperienced new hires, or else change the hiring process to exclude such candidates. It could be that the course you bought simply doesn't work for them. Perhaps they need more basic, hands-on instruction. Perhaps they need a slower pace. Perhaps a full 8-hour day of training is simply too much to handle at once. Only you are in a position to observe and come to a conclusion.

I'm only 21 and it's my first time that I am managing people.

As an aside, maybe you should seek opportunities for management training for yourself, if you wish to stay a supervisor. Going from experienced developer to people management can be difficult for some.

2
  • as i was doing until the end of the probationary period i will help them and give them all feedbacks they need to grow, but as i'm the only person here at the company who can train other people but at the same time i have a lot of projects to follow i will just ask the company to don't hire them after the probationary and just to try to invest more in someone who have yet some strong basics in field we need, it would be nice to grow as supervisor but with all other job i have it's almost impossible, but i still have to do it as there is noone other for it..
    – NiceTo
    Oct 25 at 13:35
  • 5
    @IgorMytyuk It's not your job to keep the company running. If they're missing manpower, so do they. You can (and should) only work your 8h/day. If you see that there's no time left for programming tasks you prefer, ask your supervisor/boss for advice and tell them what's going on. Oct 26 at 7:00
10

Many of the answers have already gone into detail on the problems with the overall expectation level here, so I won't go over that again. In this answer I'll expand on another point some answers touched upon: why they can't do "simple" things on their own after "training."

The first issue is that in any software development project there's actually a huge amount of implicit knowledge that most participants don't notice. You've seen part of this already with your "open PowerShell" experience; the part you didn't see was that in some JS projects I've worked on that would not only be a multi-hour process for an expert (involving installing a new OS or Wine or something like that) but would be a throughly stupid thing to do as you'd be spending a lot of time to substitute an inferior tool for better tools that are already right at hand. Consider for a moment how much time even the full 480 hours of your course spends on teaching students how to decide if "open Powershell" is a good idea or an idiot move in the particular project they happen to be working on.

For this reason, I generally consider training through external courses to offer background knowledge that's helpful to a project, but I do not expect it to produce developers that can start in productively on any particular project. That can only be learned through working on the project itself so that you can find out and learn about the things that the current project developers implicitly expect other developers to know.

That's not to say that such training can't be useful: if a developer already has significant knowledge of how projects work in your company, or has such vast background that he has worked on other projects at other companies that have similar implicit knowledge expectations, a course can help to more quickly fill in holes. Or not even that may be necessary; you'll note that your fellow developer who passed your "exam" in twenty minutes because he had this mass of background knowledge. (That no doubt included your style of doing things at your company; he might not do nearly so well with a similar "simple" problem set by someone from a completely different kind of development environment.)

The second issue is related to how people learn. I've found the Dreyfus model of skill acquisition very useful here. (Unfortunately I can't find a good summary on the Internet for how to teach at each specific level; I learned about this from Patricia Benner's From Novice to Expert which is well worth reading if you have the time and can find a copy.)

The particular problem you're seeing is that your students are at the very, very early stages of learning about software development (even if they know something about programming, which is only one component of software development) and they're not anywhere near the stage where they have your grasp on the abstractions or can be as self-directed as you want them to be. You need to be walking them through exercises where you take them through processes such as creating a class and displaying information from it in a web browser step by step, telling them what to do in very specific details ("type this here") without worrying about imparting general explanations or abstractions. Only once they have been through that a dozen times with you and seen a dozen slightly different examples of the procedure will they be ready to develop a more abstract concept of what's going on that will let them repeat this in different situations. Until that time, the very slightest situational difference ("this is an int, not a string, so + works differently) will throw them for a loop. What for you, with all that background knowledge, seems like a trivial bump is an insurmountable obstacle for them.

The best way to do this, I've found, is via pair programming. I've had people with almost no programming background (albeit quite smart otherwise, with, e.g., advanced degrees in political science) come up to speed quite well in this way. (Though certainly not in a few days!)

To summarise, along with having unrealistic expctations about how much time it will take to produce developers, your basic problems are that:

  1. there's a huge amount of implicit knowledge particular to your situation that apparently you yourself are unaware of;
  2. the course you selected isn't teaching this implicit knowledge, nor will any course do that; and
  3. you're attempting to teach in a way appropriate to those with extensive background, rather than in a way suited to the current knowledge of your students.
5
  • 2
    powershell is actually available for linux and mac, installing it on debian took only a few minutes, docs.microsoft.com/en-us/powershell/scripting/install/…
    – Jasen
    Oct 26 at 5:25
  • 1
    @Jason Oh, well that's interesting to know! Though of course that doesn't necessarily mean that you could do the intended operation in PowerShell running on Linux, much less that it would be a smart way to do it.
    – cjs
    Oct 26 at 5:30
  • admittedly I have not used powershell for much since installing it last year some time.
    – Jasen
    Oct 26 at 5:34
  • 1
    @Jasen : the simple idea to look there to install the thing is just alien to a total newbie. That's the background knowledge cjs is speaking about. They will just not think about this if not pointed towards.
    – gazzz0x2z
    Oct 26 at 8:07
  • Right, and it's actually even more complex than that, though I don't think it's worth getting too deep into this particular example in the answer itself. I can imagine situations where installing and running PowerShell on Linux is indeed exactly the smartest thing to do (though I'd also imagine this situation is rare). That, again, is related to a whole huge pile of implicit knowledge about a particular project that you're not going to get from general education.
    – cjs
    Oct 26 at 8:20
7

This isn't a problem with the students. It's a problem with the course not being suitable both in terms of time and expectations.

That's the concern you need to tell your boss.

As an engineer I can look at a courses outlines and make a recommendation on suitability for the people concerned without having to even take the actual course.

Also you could be missing the whole point of the exercise, which may not be to have useful developers but just to certify some people for funding reasons or something else.

Either way it's up to your bosses since they chose the course. It's not your problem. That would be overstepping your responsibilities. Even giving spot tests is, that's the responsibility of the course provider to assess if their course is being learnt, not yours.

5

There's already an upvoted answer that says your expectations are unrealistic. I'd like to add some perspective on just how unrealistic.

I've been coding since 1986, and I have very strong opinions about the value of education. I consider the entire university system to be a monumental fraud, and the developers it produces to be totally mind-warped and incompetent. I've often said that I could take a bright high school student who's interested in software development and make a better-than-average developer out of them in six months of intensive one-on-one mentorship. And most people think I'm off my rocker, considering even six months to be an impossibly short time.

18
  • 6
    @Frank Except that that approach doesn't exactly tend to scale very well.
    – nick012000
    Oct 25 at 23:56
  • 3
    @nick012000, in my view, the problem is not one of scaling, it is of the underlying competence of educators, the quality of their own explicit understanding, and the content of what they transmit.
    – Steve
    Oct 26 at 7:50
  • 3
    I consider the entire university system to be a monumental fraud — would you care to rephrase that? As stated, it's rather very broad and generic.
    – gerrit
    Oct 26 at 8:17
  • 4
    I'm unsure why you would expect a computer scientist trained at a university to be likely to be a software developer.
    – Neil Meyer
    Oct 26 at 19:02
  • 3
    @NeilMeyer Because of the delusion among employers (now thankfully becoming obsolete) that a software developer needs to be a computer scientist trained at a university. Oct 26 at 20:41
5

So, the company put you in charge of managing 4 random people, assessing their IT skills and/or their language skills before and during the interview, deeming them fit for the job.

You think they are unfit for the job, but you think the issue here is how you should manage 4 people, even going so far to think they may have lied at the interview?

It seems the real issue is with the company managment, not with your trainee (plus, if they cannot improve and/or do not want to improve, they are still in their trial period).

Final note: please remove all personal information from your profile.

4

Talk to your manager (or fire the employees, if needed)

No-one here knows the expectation on these employees. That's something either you or your manager should know.

You should update your manager on how these employees are progressing (and keep them updated). They should tell you if those employees aren't meeting expectations and need to get fired, or they can fire them themselves (if that's not part of your job).

All we can really say is it will take "a while" for them to become productive, but it seems like you gathered that already.

Other than that, your job is...

Train them

One could probably write multiple books on how to do this, so this is very far from a complete guide. But I'll try to give some basic idea.

  • Give them tasks slightly beyond their ability

    This might be real bugs, features or projects or it might be dummy projects (depending on what they're capable of and what you need).

    Yes, beyond their ability. They should have some idea what to do, but they should also come to you with questions. This pushes them to learn the things they need to learn.

    How far beyond their ability might depend on how much time you have. If you have lots of time to sit with them, it could probably be a bit further beyond their ability than if you had very little time for them.

    You could decide if you want to give them all a copy of the same project, if you want them to work together or if you want to have them each work on their own thing. If some are advancing faster than others, it might make sense to split them, but it also might make sense to have them work together so they can teach each other.

    Getting them to work on real tasks (as opposed to dummy projects) tends to work better if they have a reasonable knowledge of programming (even if they don't know either the language or the code base). They do actually need to understand existing code and these tasks tend to be quite a bit more complex than what you'd do when starting off learning programming.

  • Send them learning resources

    Send them things they can read through between what you've asked them to do.

    Tell them where to find documentation and things they can refer to when they get stuck.

    Possibly create a wiki with shared knowledge. This might not be that necessary for a popular language that's already well-documented elsewhere, but it can be very helpful for company-specific projects and tools or less-well-documented things.

  • Guide them rather than answering them, where possible

    If they have a question, explain what needs explaining, but try to get them to do things and think through things themselves, with you only asking them lots of guiding questions and filling in the blanks where necessary. If you need to tell them to Google something in front of you, then so be it.

3
  • 1
    Meeting expectations, what expectations can a company have of people with no experience or qualifications?
    – Neil Meyer
    Oct 26 at 18:30
  • @NeilMeyer The company could expect basic things like being able to competently communicate in English, or they could expect more complex things, like pretty much being able to program already, and certainly they would expect these employees to learn at a certain rate. Whether any of their expectations are reasonable is not really what I'm addressing here (and other answers already address that). The point is that they have these expectations, and OP needs to work with that.
    – NotThatGuy
    Oct 26 at 18:55
  • @NotThatGuy Note that English is not the native language in the country in question. It's still a perfectly fine requirement, but it's not that surprising for someone who doesn't know anything about the job to underestimate how important being really fluent in English would be. Oct 27 at 13:18
3

Ever been on one of those "See all of Europe in two weeks vacations?" 90% of the time you're driving, flying, or somehow moving to your next destination.

Now please pretend you did such a vacation, where in 2 weeks, you saw Leeds, Paris, a beach in Spain, a beer garden in Germany, a bit of the Dutch farmland, Amsterdam, Prague, and Milan (as well as the arrival and departure airport)

Now please explain to me the power dynamic in Italy between the working classes and the rich, as well as how the government was exploited to permit a nearly tolterian regime under Mussolini?

Can't do that, OK. I'll give you another "easy essay"

Write a short essay on how Germans make beer. Please provide a drinkable sample of the beer made using this process only using the traditional "purity law" ingredients.

A 16 hour course across 2 days probably doesn't provide enough background to do more than say "I think I saw something that might have looked like it could help, but we were moving across the information so quickly, I don't really remember it from all the other stuff we saw"

Slow your training down. Don't buy it from an outside vendor until you understand the deliverable. Apparently this deliverable is to read / show the approaches, not to ensure the students can perform them. And everyone's first programs are awful, with many not knowing how to complete them, so that's what you'll get, even if you overwhelm them with 16 hours of straight lecture. Heck, in University, the professor spend 3 lectures (50 minutes each) just covering "Hello World" and the significance of the words typed that went into the simplest program ever!

2

How do you deal with them?

Programming is not the same as IT. It's a small part of it.

Here's some other things that are part of IT:

  • product management
  • project management
  • management tool administration
  • customer technical support
  • Internal support/internal access
  • cyber security
  • quality assurance/control
  • database management
  • monitoring

If your IT team currently consists of nothing but programmers, with no one doing product/project management work, then you could try a 'divide and conquer' method.

Your report who is still learning English should probably get on any project that involves translating their native language to English - do you get customer/internal support requests or bug reports in their native language? That should be their job until they demonstrate a stronger ability to read/write in English.

If you spend tomorrow going over version control, and one of them actually understands it, that's your QA.

Anyone who keeps coming up with new ideas to improve the software is your product management.

The person who wants to go home early is your project manager.

You'll probably have to run this by your management, but sell it this way - you'll spend less time on the phone with customers, less time in meetings with that one exec that talks all the time, less time planning out projects, less missed deadlines, less dumb bugs, and more time for your programmers to do what they do best: program.

2

OK, so before I can give a proper answer to this question, I have to set up a few assumptions:

  1. Did your company know or not know that the people they were hiring were total newbies with zero experience? Given that you said "the company decided to invest", I'm guessing the company knew this beforehand and this was not a mistake.

  2. Did you know or not know the above? I'm also guessing you knew they were newbies, but not quite the extent of their lack of knowledge; you were prepared for rough terrain but not quite this rough.

  3. What do you think about the quality of the course that your company has purchased? Of course, as someone who knows the material your judgment is cloudy at best, but if you were able to objectively assess the course, would you say it's good? I'm going to assume that the course is sufficient, assuming the students have reasonable aptitude.

Now, as someone who's done a bit of teaching myself (both in software development and other disciplines), one of the tenets of proper teaching is that it's really a two-way street. You can't just force information into someone's brain by talking at them for 8 hours a day. If the students are not engaged, then they're not going to learn anything. Based on the fact that your team is saying they understand everything and have no questions, what that says to me is that either they're trying to impress you (by showing how smart they are because they get it all immediately) or the complete opposite, that they are so completely lost that they don't even know how to ask a question about how lost they are.

In either case, what you've found through your own examination is that they're lying to you when they said that they get it, because they're not able to apply the concepts they learned to a simple example. Well, that's only part of the story. The other part of the story is that perhaps the assignment you've given them is too complicated. Without knowing the contents of the course or the specifics of your assignment, I can't say which is which; I'm going to assume that based on your experience you believe that the assignment you gave is appropriate, but I'm going to encourage you to once again check your biases and see if you can simplify the assignment further to something that might be more palatable. One thing you can do is to break it down, like this:

Rather than "Create a Person class with XYZ fields, create a Student class with W field and extends Person, and create some data in a DB and flush that to screen in a browser", you can phrase your problem like this:


Problem 1: Create a class called Person. It should have the fields X, Y, Z.

Problem 2: Create a class called Student. It should extend the Person class you created, and have the field W in addition

Problem 3: Create a script (however you want to say this) to put Student data in a database.

Problem 4: Using your script, put some Student data in your DB. You can connect to the DB hosted at [credentials (you should give them a DB instance and not make them use their own)].

Problem 5: By reading the DB you created, dump your Student info in raw text onto a blank webpage.

Problem 6: Add CSS to your webpage to make it look pretty.


The difference is, in the first case, you've thrown them an extremely abstract problem and made them fill in the details. Of course, this is expected of them at the company, but this is far too much to expect of a new developer with 2 days of training. In the second case, you've broken down the problem into step-by-step pieces that they can build using only the tools they know and don't need to do any sort of extrapolating or filling in pieces. Once again, of course filling in the details and pieces is an important part of development and is necessary for work, but it isn't necessary at this point right now (and if it is, then you have a bigger problem).

Once you've broken down the problem into extremely small components, then if they're still unable to do it, you have a problem. You need to pull them aside and tell them, specifically and directly: "If you don't understand this course, you need to tell me. I can teach you whatever you need (or I can ask the instructor to repeat material, go in-depth, etc), but only if you tell me that you're having trouble. It's OK to be having trouble, but it's not OK to tell me everything is fine when it's not, because that's lying and I don't like liars". Of course, your precise wording and tone may vary.

Now you've at least gotten to the point where they're telling you that they don't understand the material (hopefully). Continue testing them as you've been doing, that's good. You may also want to ask the instructor of the course if there's any kind of interactive exercises that they can do during class so it's not 8 hours of cramming information into someone's head by talking at them. If there's no interactive exercises in the course, you're going to have trouble; I'll go ahead and say that the course is flat-out garbage if it only contains 8 hours a day of talking at the students and has no practical element. Once you've gotten your new hires to tell you that they don't understand and what they don't understand, then you have actionable feedback that you can use to resolve the problems; that's the end goal of the whole exercise. Once you have that, then you can use that to solve the problems. Remember to be patient and understand your audience, don't get flustered, be kind, etc all that good stuff.

Now, as an aside, regarding the one person who doesn't understand English: He's going to be a big problem. The fact of the matter is that the job requires a minimal proficiency in English, this was (presumably) on the job description, and this person doesn't meet that bar. Based on this, I would talk to those responsible (probably HR) about firing this person, as he lied on his application and doesn't have the basic skills of the job. Failing that, you have an additional problem: If the course is in English and he doesn't understand English, then he's obviously not going to learn. If he doesn't know enough to know that the "if" in an if-statement is a keyword and translating code into Italian is not a good idea for trying to understand it (particularly in Javascript), there is very little hope for this person. Understanding what a keyword is, is so basic to programming that it's even more basic that "the basics"; it's complete lack of a fundamental principle. Short of firing this person (that would be my first choice), you need to specifically instruct him not to try to translate code into Italian and to read it as written, and explain to him why (as you said, "you can imagine what an if statement became"). Then see what happens. If he doesn't improve and his English level continues to be a barrier, you may want to push HR to get rid of him, as he is unproductive. Failing that, you may have to bench him and give him lower priority tasks only, which would be sad.

As another aside, Powershell is a fairly loose way of teaching someone to code. My advice would be to use WSL (Windows Subsystem for Linux) if you insist on Windows-based machines, or having true Linux environments (Mac is also a good idea if you don't want true Linux) is best. Windows sucks for development and Powershell doesn't make it much better. Giving them shoddy tools and telling them to "make do" doesn't help their learning curve issue.

6
  • 1) "that they are so completely lost that they don't even know how to ask a question" - or they're just lost and scared. Imagine seeking employment, finally landing some starting position where you could learn a new skill and being pressured on day 2. 2) "My advice would be to use WSL [...] or having true Linux environments" - why not a proper IDE, Node.js interactive console (apparently OP wants them to learn Angular eventually...)? I would also add MSYS2 to the list - after installing Git (common!) you'd typically end up with MSYS2 bash on Windows.
    – Lodinn
    Oct 27 at 3:03
  • The company decided to invest not because they know that those people had no experience but because neither me neither other old programmer never had any course and to have someone who needed the course for start with Angular was an excuse for the company to invest in courses, the company didn't know that they was going to hire people who doesn't even know how a PC is made as all of them said that had experience in programming in their schools, universities and just at home but not in professional level
    – NiceTo
    Oct 28 at 7:26
  • While my exercise was more simplier that i described, here i made a github repo of it (just exercise 1 was shared with new hires and noone of them still seen the repo as they are STILL WORKING on exercice 1 by sending me every day from the day i've made that question stuff they've made and where i'm saying to them what is wrong and where to fix and why) here is github link of the exercise
    – NiceTo
    Oct 28 at 7:28
  • @NiceTo I took a look at the assignment you gave. I think that is very very complicated for someone who is a new developer. Can you try to simplify it somehow? Maybe break it into more parts? I'm currently running a coding class in my company for people who want to learn development, and getting my students to consistently write a print statement properly is a chore, nevermind writing multiple classes and a UI to display them. As an aside, there are many English mistakes in your assignment description; would it be easier, since this is a practice project, to write it in Italian?
    – Ertai87
    Oct 28 at 15:12
  • @Ertai87 it was explained in italian to all of them, i'd try to make it simplier, i just expected it to be simple as the two lessons just had all that information in all the exercises we've done, even the classes were the same, they just had to put them together.. For sure my expectative was too hight, anyway we're continuing the course where i'm behind each of them and every time they don't get something the teacher is explaining i explain it again, so we will see..
    – NiceTo
    Oct 28 at 15:31
1

Pretty much the only thing you can do is assign them a mentor each or place them in experienced teams. Be sure to provide feedback to explain the impact on the mentors.

This type of greenfielding is not cheap, you may lose most of these hires. You cannot just push people into IT unless they have had an active interest for a number of years. This was a huge problem at the turn of the century as people "fell in to" IT just to have a job, and did not really know anything. Even to copy and paste they need to know what they are copying and why.

2
  • 1
    Forcing anyone into a profession they don't want to work in is a bad idea. People must do the work they want to do, something they enjoy or at the very least something they don't hate.
    – Neil Meyer
    Oct 26 at 18:26
  • @NeilMeyer : wanting to do that is not enough. I've seen motivated, seasoned professionals, with formal diplomas, with 5 years of experience, breaking everything everything on sight while trying to do their best. (like : need to change how is fed a field in a table. Takes the wrong table. Renames a random field and feeds it randomly. Breaks everything). You need motivated people who also have a minimal sense for your trade.
    – gazzz0x2z
    Oct 27 at 6:17
1

480 hours course means no more than 5 hours of intense coding a day. At the very least that means 96 work days, but even that is unlikely as even asking trained professionals to do that is asking a lot. In reality you will struggle to get more than 3 hours of pure coding out of a newbie a day.

I did 6 hours a day for 18 months during my training but nearly had a nervous breakdown as a result. I was basically so mentally exhausted that I was catatonic for a month. I lived my whole life in tech and was motivated enough to do it but it was pretty hard and although not bad something I'm not willing to do again.

The high-level thinking that programming comprises takes a lot out of you. This job is not easy. People think working on a computer cannot be hard work but try programming for six hours at a time and tell me how you feel afterwards. Really expecting anyone to code for 8 hours a day is unreasonable unless it is on a short term basis and there is a break of weeks afterwards.

2
  • I totally agree. Something like one hour of reviewing the previous day, two hours of training, lunch, one hour of review of the material before lunch, another two hours of training, one hour of review of the day, is the maximum. I have done some trainings myself, and after about 4–5 hours, the students are just not capable of internalizing anything anymore. I've also done some trainings where I was training two separate groups with 3 hours of the same content in the morning and the afternoon, and after 4–5 hours, I was totally exhausted as well. 8 hours of training is completely unrealistic. Oct 28 at 15:39
  • Both for the trainees and the trainer. Oct 28 at 15:40
1

There are a lot of good answers here focusing on teaching. I don't know what the exact circumstances are but if your company expects productive workers in a couple of months and you don't have the time (years) and resources (teachers) to properly train them to become full qualified developers I see only one chance for success.

In almost all software projects there are a lot of tasks that do not require extensive programming skills. In web development for example having somebody that can only write HTML & CSS could still be useful and productive. However learning only CSS and HTML is a lot easier than learning how to properly write JavaScript. Then you could assign them all the CSS/HTML tasks and assign the difficult programming jobs to the skilled expensive employees.

Writing manuals is another job that requires some technical knowledge and mostly domain knowledge and might be doable after a couple of months of training. Other jobs for low skilled employees might be providing help desk support to customers or other teams, doing research, administrative tasks, etc.

If the situation is indeed like I understand it is I would look for these kind of areas and then train them to be competent in doing one set of tasks. With time they might pick up additional skills.

Then I would try to talk to your superiors and your trainees and manage expectations. Make sure that everybody knows what are realistic goals to reach and what kind of tasks they can do in X months.

2
  • The main issue is that the company is not a software house, it has just a small IT office in it, where all have to know how to do everything, like we don't have real roles here, we are just all developers who are responsible of the whole cycle of a software.. The main fail here is of the company as they didn't even know which people they need here even after suggestions of me and another senior..
    – NiceTo
    Oct 29 at 6:42
  • 1
    @NiceTo Everybody does everything is nice in theory. But can't you create roles especially for the trainees? Sure they might be not as useful as your senior developers. But I imagine they also get a lot less pay. For example my mom was a career changer into software development and one of her first jobs was at a small IT office that focused on web development. All she did there was writing CSS but that was still enough of the share of the work to be useful. Now she mostly does customer support and windows administration and writes small power shell scripts albeit in a larger company.
    – seg
    Oct 29 at 8:41
0

Fire Fast

Despite the optimism of the other answers it is ridiculous to expect that person translating if on google translate can be cost effectively converted to productive employee. So you need to fire at least some of your employees. Not to mention that lying in interview process is enough to fire them.

Your recruitment process and/or management is bad

No recruitment process is perfect, but situation this bad could only happen if you have either terrible screening, or managment that thinks you can save money by hiring non developers then magically training them and get a bunch of cheap developers.

If you hire inexperienced people insist on screening process that is hard to fake

Perchentage of people that say honestly(and are wrong) or just lying about their ability/interest in software development means that if you really insist on hiring people with zero experience you should give them nontrivial screening tasks. For example you could have paid for 6-8 weeks course(much more expensive than your magical 2 week boot camp), but only hire based on progress and absolute skill level you saw after those 6-8 weeks.

Consider looking for another job

I know it is bad to make assumptions of your company based just on this one scenario, but your company seems poorly managed, so you may want to plan for leaving.

-5

Nobody sees through this.
I'm going to say it:

The short answer is: Be brutal when hiring a low-paid second-rate.

Don't waste more money on courses. Set a deadline such as two weeks, if the trainees cannot do it, dispose of them. They are expendable. Then hire others.

I don't want to emphasize much about how your company is the prime example of a cheapskate. Even big companies play the game all the time. For example, Microsoft doesn't want to pay money for support services, so Microsoft "expands" the support services overseas and assigns local contractors to hire employees who are paid $30 a day. Naturally, employees there come and go at a fast pace.

Your company doesn't want to or cannot afford to pay real money for real software developers. Instead, your company hires the people that are the cheapest of the cheap, in your defense, people from IT. But IT is about hardware and hardly anything related to software development. And the employees could be foreigners, immigrants. They don't even do good at IT. What they can do is to choose and accept another job at another low-paid salary. And I don't think HR entrusts a 21-year-old the training job of several software developers because HR knows they are not the real deal for the business.

You don't expect them to be as substitutable as real software developers. You should expect when it is time to dispose of them if they don't meet the deadline. It is cheap this way.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .