Menu Search
Jump to the content X X
SmashingConf London Avatar

We use ad-blockers as well, you know. We gotta keep those servers running though. Did you know that we publish useful books and run friendly conferences — crafted for pros like yourself? E.g. our upcoming SmashingConf London, dedicated to all things web performance.

Internal Developer Training: Doing It Right

Successful developers all have something in common: the desire to create. To fully realize that creativity, they need to continually improve their skills. The web industry has grown from this desire to learn. You only need to look at the unwavering demand for conferences, workshops and training days for evidence of this.

For many companies, however, these sources of training require time and money that simply might not be available — especially when you consider that technologies evolve all the time. The cost of continually sending your team to workshops and training days can quickly become unsustainable.

Further Reading on SmashingMag: Link

People in the web industry in particular believe in sharing what they’ve learned and helping others to improve their skills. This is the perfect premise on which to develop an internal training program. Within your team lies a wealth of skills, knowledge and experience that can be shared and developed further. With a little effort and using resources freely available on the web, you can increase the technical competence of the team organically, with much lighter demands on time and cost.

Why Bother? Link

Good developers will teach themselves anyway, right? Well, yes. But significant benefits are to be gained from formalizing and actively championing training within the company.

Developers who excel in a particular technology can teach it to others, gaining morale-boosting recognition and a reputation for being the go-to person for that skill. Junior members of the team will learn what the team is capable of and who they should query with specific questions. This is much more valuable than you might realize — knowing exactly where to go when a problem arises can quickly prevent bottlenecks in a project and make the team much more responsive.

As developers spend structured time together, they will learn the strengths and weaknesses of the team and form a more cohesive unit. They will be more able and willing to innovate and push boundaries if they know the full capabilities of their colleagues.

Most importantly, regular well-executed training will make developers better at their job and probably much happier. They will understand more, be challenged more and be significantly more productive.

Developers will always be more committed when value is put on their current skills and when their potential is invested in. In an industry that has so many attractive and flexible places to work, training can be a significant perk that helps to retain and attract talent.

Let’s Get Started Already! Link

The first challenge you will likely face in implementing regular training sessions is getting the company to buy into what you are trying to achieve. Explain the aforementioned benefits to aid your cause. However, you might have to get creative if your work environment is less flexible. For example, consider reducing the investment of time by proposing a “brown bag” approach. Get team members to bring their own food and make the training session an informal lunch meeting.

Management is much more likely to offer its full support if it can see evidence of the benefits. Clearly explain that not only are you looking for their approval, but you want to keep them in the loop as the training progresses. Showing a comprehensive plan and clear metrics for how the team will improve will go a long way to convincing management that the investment of time will benefit the company.

The Training Plan Link

To formulate the plan, look through the most recent projects that your team has worked on. Analyze the skill sets that were used. Talk to project managers about any issues that may have arisen. Keep an eye on developments in the wider industry and how they might bear on future projects.

Most importantly, look at the developers’ personal development plans and see how training could facilitate their goals. This will also help you to identify senior members of the team and those with specific expertise who would benefit from leading the training sessions themselves. Senior members in particular will have a wealth of development and commercial experience.

Of course, make sure that the senior members of the team are on board and would be comfortable leading training sessions. Give them enough time to prepare, and provide guidance on what is expected, while still allowing them sufficient freedom to make the session their own.

Keep the training plan simple. List the specific sessions you wish to include, briefly describe them, and assign them to developers who have the skills to lead them.

Order the training sessions by importance, but don’t feel you have to attach dates. Depending on the size of the team, you might find that key members will be absent for some of them and that you will need to reschedule.

At the end of each session, date it and mark it as completed in the training plan. Write any relevant notes next to the entry, such as problems, areas not covered and new avenues to explore in future sessions. Make the document a collaborative spreadsheet to make it easier to share internally.

Measuring Skill Level Link

Exactly measuring a developer’s skill level is difficult, but a generalized indication will help.

One way is to use a skills matrix, listing each team member down the left column, languages and skills along the top, and a scale of 0 to 10 as measurements:

  • 0
    no experience
  • 1–3
    understands the basics
  • 4–7
    competent with practical experience
  • 8–10

A sample skills matrix (View large version6)

Adapt the scale to your needs. You could make it more general, with terms such as beginner, intermediate and expert. Or make it more complex, depending on the skills required by your team. Review it when training sessions are completed and after significant projects.

A matrix that is up to date makes for a useful tool to allocate resources, schedule work and inform the wider company of the development team’s capabilities.

Stick To Your Principles Link

Before planning the content of the training sessions, consider some underlying principles.

Timing Link

Due to the nature of development, finding a regular time when all members of the development team can step away from their work is tricky. Avoid standard release dates and the preceding and succeeding days.

Aim for once a week. Greater frequency could threaten deadlines and meet with resistance from management. Keep the sessions consistent; too much rescheduling or skipping of sessions will devalue the importance of the training in the eyes of the developers.

Friday is often a good time, especially in the afternoon. Most of the company will be winding down at this time, and disruption will probably be minimal. If homework is assigned, this also gives developers the opportunity to dabble with it on the weekend.

Plan the sessions in advance. Keep them short and sweet, no longer than an hour to keep everyone engaged.

Environment Link

A meeting room with a large screen and wireless Internet would be ideal. Ensure that there is enough comfortable seating so that everyone can participate easily.

Such rooms are usually designed for client presentations, which can make them difficult to book. Again, scheduling the training sessions for a slow period of the week and booking in advance should help with that. Send out calendar invitations so that the team blocks out that time, too.

Let any potentially disruptive colleagues know that training sessions should not be interrupted. Once everyone has arrived, close the door. Shut out everything (and everyone) that could be a distraction.

Don’t forget about off-site members of the team. Being included will give them the benefit of the training and also remind them that they are considered part of the team. Use Skype or Google Hangouts to include them. Ensure that their supervisor knows about the training session so that they can allocate the time and, ideally, a quiet, comfortable environment.

Discipline Link

To protect the time, both the company and the team need to agree that attendance at training sessions is mandatory. Exceptions and rescheduling should happen only in extreme circumstances.

Phones and laptops are distractions and should be discouraged. Attention should be focused on the presenter and their material.

Goals Link

When planning the sessions, try to align the individual developers’ targets with the company’s goals for growth. Focus on technologies and techniques that will not only benefit the team, but increase the company’s expertise.

The skill-level matrix mentioned above can be distributed to other departments to help them understand the development team’s capabilities.

Homework Link

Without practical application, training will be quickly forgotten. To achieve real progress, assign a task for the participants to practice the skills they’ve learned in the session.

The assignment should be small enough to achieve in the downtime between projects or outside of normal working hours if necessary. More importantly, it should be interesting enough that a developer would want to do it, especially if it needs to be completed in their spare time.

Reviewing an assignment could be the focus of the subsequent session, in which you would explore different approaches and techniques, as well as identify and reward those who have excelled.

Homework is, of course, optional. Not everyone will want to do it, and, despite their best intentions, developers won’t always have the time to tackle it.

But if the training sessions are aligned with both the company’s goals and their personal development plans, you might be surprised by how willing the developers are to complete homework. They’ll be inspired by the chance to show off their skill, gain recognition from colleagues and maybe even win a prize.

Record Link

Not everyone will make it to every training session. Developers take vacations, and urgent bugs and tight deadlines will sometimes intrude. Recording sessions is a good way to give those who miss one a chance to catch up.

Also, share the slides and links from each session with attendees. The best way to do this is to set up a Github Pages website using Jekyll7, and get everyone to contribute. The website could also be used as an internal knowledge base.

Fun Link

Keep it fun! If the training sessions become a chore, then they probably won’t be successful. A friendly, open and honest environment will create the right culture for growth, fostering connections between team members, and improving communication and cohesiveness.

Let’s Break It Down Link

So, how do you go about structuring a training session? As mentioned, this is highly subjective and depends on both the facilitator and the team. However, if you’re struggling to know where to begin, let’s make a meal out of it!

The Appetizer Link

Everyone likes to have a taste of what is going on, so start with a quick business update, detailing the company’s latest wins and the progress of work underway. If you have any other news about the company, including potential opportunities within, consider sharing it, too.

An update on the wider industry could also be beneficial. If any key developments have happened, discuss these and share links to relevant articles. The beginning of the session is also a good opportunity to review homework and single out the best solution with recognition (and a trophy if you’re feeling generous!).

Don’t dwell on any of these things for long. This section shouldn’t last longer than 20 minutes.

The Main Course Link

The meat of the session should focus on the designated topic.

The most common type of session will probably be a tutorial on a particular language or technique. Don’t assume anything. Introduce the technology, explaining its purpose and situations when it is best used, not forgetting its limitations. Ask for opinions and experiences from any team members who have experience with the technology.

Showing examples is the easiest way to demonstrate a technology. Prepare these carefully, especially if you plan to follow a similar approach in your development projects. Keep them succinct. Either use multiple small examples, or break down a single big example into digestible modules. Avoid live coding unless it is simple and prepared in advance.

Deposit all of the coding examples in your knowledge base or Github repository so that the team can examine them after the session.

With more complex, substantial areas, consider splitting the training into multiple sessions. Start with the basics, and increase the learning curve each week. Don’t rely on tutorials alone — mix things up. Plenty of different formats will give developers valuable knowledge and insight.

Deconstruct a project completed by the team. Identify successful approaches, and analyze any issues that arose. Review the techniques used, and get feedback from developers who worked on the project. This will help to account for contingencies if any changes need to be made and will demonstrate good ways to tackle future projects.

If your company is more creative and pioneering, consider devoting sessions to new hardware that has been acquired. Play around with it and inspire your developers.

Collaboration within the team and with other departments could also be incorporated into training sessions. Consider two speakers from different areas presenting the same technology — programmers and designers will often have very different views. Or venture even further and invite a project manager to lead a session, which could improve processes, communication and understanding between departments.

The Dessert Link

Finally, finish the session by mulling over what you’ve covered. Invite questions and encourage discussion.

Before everyone leaves, assign the homework. Choose it ahead of time, and clearly explain it. The assignment should relate to the material covered in the session — and perhaps extend it.


A sample training session schedule (View large version8)

Continual Improvement Link

Continually review the effectiveness of the training sessions. Once they have become a regular fixture, solicit feedback.

Keep the training collaborative. Invite the development team to tell you what works for them and what doesn’t, and be prepared to alter the training plan. Also, look to the wider company to see what impact the training is having and whether particular areas might need more focus.

Every team and every company continually evolves. Training will help to keep both aligned and at the forefront of the industry, enabling them to shine.

(ml, al, il)

Front page image credits: The Next Web Photos9.

Footnotes Link

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9

↑ Back to top Tweet itShare on Facebook

James Miller is a Technical Lead at AnalogFolk ( Whether he is trying to get the best out of a team of developers or a tricky piece of code, James loves to get stuck in and sort things out.

  1. 1

    Looking back on previous jobs I couldn’t name one gig where there would have ever been time to do this. If a person witth some particullary skill was desired, he or she would have been hired. If developers wanted to improve their skills they had to do it in their spare time.

    • 2

      Hopefully the practical takeaways from this article will help others to get it implemented in their teams. You don’t ask, you don’t get.

    • 3

      Daniel Schwarz

      September 9, 2014 3:39 pm

      I agree. From experience, most companies won’t get on-board with this, and it’s not for the lack of trying. I think all companies can benefit from training in exactly what you’ve written about, James. Simple teamwork is a concept lost on most.

      Great article :)

  2. 4

    Courtney Mclean

    September 5, 2014 4:39 pm

    Great article James, strongly agree on both points on timing and discipline that you raised. I’m continually trying to embed the need for training and development within my design team and can use most if not all of the principles that you written.

    Although it does vary and depend on the business room for flexibility in regards to how much time your team can spare, but training of some sort should always be prominent to get the best out of your team, and for progression.

  3. 5

    Interesting article, which I’m happy that my company is both on board and regularly put on training sessions, we have ‘code lunches’ which form often just include watching video’s of talks from industry leaders and sessions put in during our quarterly briefs by developers in the team, these often form personal appraisal objectives.

    One question, the value of such sessions will hinge heavily on the technical and presentation skills. In addition the actual production of such material can take a significant time. What have you found is the best way to sell to the company the time needed for developers to produce training material?
    We have no problems getting people round a table, but taking someone offline for a couple of days to prep a presentation, worked examples and homework is harder.

    • 6

      Any material you produce, you share and you store centrally. This means any developer who has missed the session, or anyone new that comes on board can be up to speed relatively quickly. This knowledge base build and the potential to onboard quicker lowers cost to a business. This is where the selling point is.

      If presentations are taking too long to together, make them quicker by using templates or by using presentations of the source material from somewhere like Slide Share and adapt what you are going to say.

  4. 7

    It is nice to see an article dedicated to this important topic. Thank you for sharing.

  5. 8

    Ha ha, I love the team member names in the spreadsheet. From this I can speculate that Corine Ation-Street isn’t eligible for training, perhaps as she is a contractor…

  6. 9

    This is a fantastic idea!
    I think businesses all over should do this!
    Doing training in the office will help everyone get connected, share and learn from one another, and maybe pick up a few new skills.
    Homework is a good concept and sure, people learn more and will remember more when bringing home the training, but there are some downfalls, in which you mentioned; like not everyone has the time for extra assignments or it may seem like a chore for others.
    Overall, I think it would be a great idea to bring to the office!


  7. 10

    I really like your idea of doing training in house, however as you stated there are companies that do not want to put in the time and the money to invest in their employees skills. I see a company as the makeup of all the different gears and parts and if these gears and parts are not addressed, and oiled, then the entire system breaks down. Are there any articles you have written about ways a web developer can better explain the technical aspect of his or her’s job?

    • 11

      I haven’t yet, but if its in demand I can. And in Smashing Magazine are interested, then this could be my next article for them ;-)

  8. 12

    Very interesting concepts. Are there online tools or collaborative softwares that allow to implement internal training courses?

    • 13

      I mainly use Google Docs to manage this process. A simple collaborative spreadsheet shared with the right people will give you everything you need. As long as you maintain them properly, you shouldn’t need anything else.

  9. 14

    Ashraful Islam Nixon

    September 17, 2014 7:03 am

    Very nice article. I intend to open a training session in my office ASAP using your concepts.

  10. 15

    Jarlath Eoin Gallagher

    September 24, 2014 9:06 am

    Hi James,

    I think your audience of developers / programmers is totally open to the idea of training internally and a well written article like the one you have drafted above should give the reader enough amunition to help their line managers decide that training is a good idea too.

    One possible place that this could be incredibly important is the onboarding of new staff. It is a daunting time joining an existing team and to see an integral member of that team you are joining up in front of the rest of the team can give you a great insight into how the team really works both technically and socially.

    I am always one for looking for new knowledge and with having just taken a new job i may well suggest this as a potential task in the next little while to help my integration into the team.

    Thanks for this article,



↑ Back to top