Upskilling engineers cost effectively

How BBC iPlayer provides cost-effective training for engineers by engineers?

Nick Spragg
BBC Product & Technology
4 min readSep 18, 2018

--

As developers, keeping our skills current is essential as technology evolves. Reading books, blogs, conferences and attending training courses, typically achieves this. However, there are another option; bespoke workshops.

In this blog, I’ll be discussing some examples of workshops and the benefit to the iPlayer engineering team.

Why create a technical workshop?

Although books can be an invaluable asset to a developer, finding time to read them in any depth can be challenging during office hours. Most developers will probably have to use their own time. This is fine if you have a passion for coding and have enough spare time but sadly not everyone does. Good conferences and training courses can be an effective way to learn, but will have time restrictions and may be expensive.

Bespoke workshops can be an efficacious way to enrich developers skills. Here are some of the advantages:

  • Workshop material can be customised to address a specific purpose or problem space. For example, switching from callbacks to Promises in Javascript or using lambdas in Java.
  • The format of the workshop can be flexible. For example, self-paced, pairing or group work.
  • Timeliness. Scheduling a workshop can be done to meet the team's needs and incorporated into planning sessions.
  • Most likely, more expensive than ordering a book but less expensive than an external training course.
  • Programming workshops are intended to be practical. Actual “keyboard time” is an essential part of a developers training.
  • Gaining familiarity with the new technology can be gained via workshop exercises and misunderstandings/assumptions can be identified. It’s better to make mistakes during training than in a production environment (although we all make mistakes).
  • Apart from people attending the workshop, is can also be a great learning curve for the author.
  • Depending on the content and format, is possible to reuse workshops and potentially open-source the content.

Ok, sounds great but what are the drawbacks? :

  • Someone needs to write the material, which may be time-consuming. No such thing as a free lunch.
  • Time and effort is required to review the workshop content

How do you write a coding based workshop?

There are no hard and fast rules on how to do this due to the vast array of technologies and team needs. However, within iPlayer engineering, we aim to keep the workshops simple and focused.

An example of this is the async workshop.

The objectives of the content were to:

  • Gain knowledge of Node’s async/await
  • Practice refactoring to asnyc/await from callbacks/promises
  • Consequences of using async/await. For example, relying less on third-party libraries for handling async behaviour.
  • Gain experience of implementing async patterns (e.g. map limit, reduce etc)

The workshop was implemented as a Node project. Developers would follow a set of exercises, which typically involved completing or fixing some code. Each solution would be asserted by an associated test. This practice, of course, is based on Test Driven Development (TDD), which is heavily utilised within iPlayer development teams.

By default, the workshop was self-paced allowing people to experiment freely. However, pairing programming or group work was an option. Allowing people a choice of how to learn is important. It’s probable that most developers will choose to code up the solutions by themselves. This is understandable, but developers should be encouraged to discuss and compare solutions.

The workshop was concluded with a review. This was an integral part of the workshop as it allowed engineers to discuss what they had learned and how to apply that knowledge, as a team, to production code. Reaching team agreement on technical matters helps to avoid inconsistencies that can lead to technical debt.

Others purposes

Workshops can also be an effective way to evaluate technology. One example of this is the Go workshop. This workshop was written to evaluate the suitability of the Go programming language with iPlayer. Developers were tasked with solving small coding challenges, each focusing on a specific feature of the language.

The workshop allowed engineers to quickly gain practical exposure to the language and experiment freely. With this knowledge, engineers can make informed decisions about whether to adopt a new technology since they all had a chance to use the language.

Within iPlayer engineering we’ve also run workshops on aspects of AWS and ElasticSearch; it doesn’t have to be limited to programming languages.

Conclusion

In summary, workshops can be a great way to provide customised, focused training to your whole team without breaking the bank. It’s an effective way to gain technical exposure, encourage team collaboration and form a consensus on technical direction.

Once the workshop material is created and delivered to a team, we can reuse it with multiple teams across the company. For example, the async workshop mentioned above was delivered to 3 teams across iPlayer. This resulted in some common practices and styles being introduced across the teams. This is where cost-effectiveness kicks in.

Our next step is to scale this out to more BBC teams and departments. We need to create a central place to create and maintain material covering a broad range of technical subjects.

--

--