1

I now find myself in a scenario, mentoring no more than 8 beginner-level developers and tasked with the development of a reasonably complex SPA website. It is to be developed using React (which the developers know to some degree - as in, they can put together code that works on a small scale, but is far from perfect and may include glaring issues that make it unsuitable for direct inclusion into a professional-level solution).

I myself can create such a website to a reasonably competent standard with no issues. I say this not to boast, but rather to further outline the scenario that I have set before me. However, as a mentor it is crucial that I involve these developers in the development process as much as possible, and hence remove myself from it as much as possible as well.

I'm looking for a strategy to do this, and would like to hear your experiences managing lower-level development teams, and what you have done to accomplish this with as few hiccups as possible. I haven't tried any particular strategies per-se; however, as this development team I'm mentoring meets up on a weekly basis (or perhaps twice a week at best), I've found that it is difficult to mentor them (in the short-term, at least) into a better all-round software developer, and rather am now just looking for some way to get a well-developed product out the door at the end of the day.

  • What is my role in this? I guess I'm closest to being the project manager? I'm the guy who needs to get this whole thing moving, whilst at the same time making sure that my beginner-level colleagues are participating as much as possible.
  • Does somebody manage the project, or do I? I've been given no strict deadline on this, but only that I should try and complete this as soon as possible, whilst engaging all members of the team (as mentioned above).
  • Does somebody lead this team, or do I? That would be me. I'm responsible for saying who does what, and when they should do what.
  • Is there an architect, or is that me? That would be me also. I don't mind making big-picture decisions, and I think that that is where I would preferably see myself - guiding their decisions and overall output to match the specifications, whilst somehow maintaining professional-level quality when working with such lower-skill individuals.
  • 5
    Depending on your answer this might be better suited to The workplace or ProjectManagement: what is your role in this? What is your official position other than "more experienced colleague"? Does somebody manage the project, or do you? Does somebody lead this team, or do you? Is there an architect, or is that you? – nvoigt Apr 24 '18 at 16:03
  • @nvoigt Thank you for your comment; I've updated my question to include answers to your queries, if that helps. – Lucas - Better Coding Academy Apr 24 '18 at 16:12
  • @nvoigt Also, I'm more interested in looking for code-related solutions to make collaboration easier, hence why I posted this question here, although I accept that this may not be entirely possible. – Lucas - Better Coding Academy Apr 24 '18 at 16:15
  • 4
    Normally I'd recommend code-reviews and/or pair-programming, so the beginners code is reviewed or seen by a more experienced programmer. But if you have 8 beginners and only one experienced programmer, that's probably not going to be feasible. Why did your company hire a team consisting entirely of beginners to start with? If it was just to save money on hiring more experience people, I expect will end up costing them more than they saved in the long run... – Sean Burton Apr 24 '18 at 16:42
3

Other than general management advice I would say:

  1. Get your technical requirements in first. Response Times, Security etc
  2. Define the tech stack you will be using, js framework, back-end, database
  3. Give example pages
  4. Make sure task requirements are well defined, UI sketches example flows and results
  5. Don't sweat programming style. if it works it works.
  6. Keep tasks small and short. Let people fail and move onto another task if they need to.

If you have to push something back as not good enough, you need to back it up against a previously defined requirement. Preferably 1 or 4

  • Thanks for your insight. As a follow-up, how would you recommend dealing with tasks that the developers do not have experience completing (e.g. setting up a bcrypt hash for the password)? Obviously one or two of these would be easy enough to deal with, but these pop up more often than not, and just asking them to "research it online" every single time doesn't seem to get the job done. – Lucas - Better Coding Academy Apr 24 '18 at 16:22
  • 2
    Think123 you deal with it by understanding that the project will take a lot longer than if it was done by an experienced team who had built similar things successfully before. As long as you’re aware of the significantly increased timeline, you let your junior team make all the mistakes that they will do to learn, and then eventually you’ll be done and the team I’ll be better for the next challenge. – RibaldEddie Apr 24 '18 at 16:41
  • @Think123 you have to train your staff or if the deadline is tight hire a contractor at £500 a day to burn through it – Ewan Apr 24 '18 at 16:59
3

Mentoring works best when there is only one or two junior developers to get up to snuff. Since your deadline is not strict, you'll have to manage expectations from your stakeholders. There will be a few things that should already be in place, but even more so since you have a good sized inexperienced team:

  • Set a goal to increase your velocity every sprint. You might be able to barely get one thing done the first sprint. But if you can get even one of your beginners understanding what you mean by "done", you can increase the overall amount of work in the next sprint. This goal only lasts until you are reasonably happy with the rate of work.
  • Prioritize quality over quantity. What separates a beginner from a veteran is the level of care they take in getting their jobs done. Every time your team has to re-work something they are losing time and getting frustrated. As much as you can, try to keep the time pressure lower than the pressure to do their job correctly. Notice I didn't say to remove the time pressure altogether...
  • Definition of done. Not only does the feature have to be working, it has to meet quality standards you define. It will be frustrating at first, but most people learn by doing and if necessary redoing.
  • Focus your attention on the ones who get it. Prioritize the amount of time working with someone based on who is learning the quickest. When you get them to a reasonable level of competence, you can focus on the next person. You are one person, and it's better to replicate yourself than it is to split yourself 8 ways.
  • Let the mentee become a mentor. After having one of your recent mentees become competent enough to finish a couple tasks, have them work with someone you aren't working with yet. If you can set aside an hour or two per week to coach them on how to explain things, you can accelerate how quickly you can get everyone trained.
  • STAY POSITIVE! Positive attitudes are infectious, and it helps keep the team motivated. Negative attitudes are like cancer, and eat away at your morale, productivity, and quality. More importantly, when you are reviewing someone's work or helping someone with a problem, use it as an opportunity to teach. Good teacher's don't berate their students, they instruct on how to do things better.
  • Listen. Don't just dump a load of information and expect someone to retain all of it. Having mentored a number of beginners, I find that I learn as much from my mentees has they do from me. Some of that comes from finding out how that person processes information. Half the job is understanding what your student is missing. The other half is figuring out how to explain it in a way they will understand. It is quite rewarding to see the look in your mentee's eyes when they finally understand what you are trying to teach.

It's not going to be easy, but it can be done. With any luck, you'll be able to turn 8 beginners into 8 competent developers. And those competent developers will be able to increase the velocity of work done to the point where it won't take a year to get it done. You mentioned in your question that those beginners can get things working. Now you just need to teach them what else they need to look out for and why you recommend doing things the way you do.

1

It seems like you're capable of providing a solid example to these projects. Most developers learn from sample code, so why not provide it? You may need to outline how you would structure these types of development projects. Be available for questions and get involved in the review of the project. Don't be that guy that says, "They didn't do it the way I told them."

You are mentoring, so make sure you understand your role from the people who are in charge of these new developers. How you approach this problem will be limited by what they need from these developers especially if they need to get them doing something productive ASAP at the expense of a solid design.

As much as you may want to take time and let them learn how to do this as much on their own as possible, you may not have that luxury. If you can get their first project off on solid ground, they'll be better off than most new developers.

Your Answer

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

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