Software craftsmanship programme

This is our flagship course, offering a unique and bespoke mentoring and training programme for senior software developers that consists of a highly effective mix of classroom training, solo and group study exercises, and one-to-one on-the-job mentoring.

"I highly recommend this course to motivate your most senior engineers to explore their existing skills and learn new ones. The key outcome I saw was the team actively coaching each other with the goal of solving some of our trickier problems in a new and more valuable way."
— Paul Shannon, VP Technology, 7digital


Each fortnight, the participants will spend one morning in a training workshop covering one of the programme's topics; our trainer will then spend the afternoon of that day working 1-1 with one of the participants. All participants will also be given “homework”, to be done in time for the next workshop

We provide a range of course modules addressing topics as diverse as release planning, unit testing and problem solving. Then you structure the programme by selecting the topics you need most – and this includes the option to suggest topics that aren't currently on our menu.

(See below for more details, or click here to download the full course prospectus.)


Audience: Senior software developers
Format Workshops, group study, 1-1 mentoring
Duration: 6-12 fortnightly modules
Capacity: 6-10 participants
Location: Your UK premises (how that works)

The participants

Most of the training workshops will assume a fair amount of software development experience. They are intended for developers who have worked in application development for a few years, usually in C# or Java-like languages, and who wish to take their craft to the next level and become thought leaders in your organisation.

Previous course attendees have noted that much of the value of our training methods comes from the combination of group discussion and embedded practice. To that end we ask that all participants do a set of “homework” exercises each week. These will involve a variety of research, programming, facilitating team discussions or exercises. It is essential for the success of the course that you make available the necessary 2-3 hours per week (in addition to classroom time) so that the participants can complete these activities without feeling they need to use personal time.

We will provide each participant with a programme workbook (in an A4 ring binder). Each week we will add new topic materials to this, and the participants will also use it to collect their working, course notes and homework.

Each training day our consultant will spend the afternoon with one of the participants as they go about their usual responsibilities. The mentor will attend all meetings and tasks with the developer, intervening with advice and guidance whenever the developer is seen to need a role model.

Programme kick-off

In order to design a set of appropriate content for your developers, we kick off the programme by conducting a 2-day "deep dive" into your code and processes. During these two days our consultant will spend as much time as possible with the intended participants: pairing on different codebases, demonstrating some of the techniques from the training course as appropriate, and attending whatever agile ceremonies occur during those two days (daily standups in particular).

At the end of this visit we will sit down with the programme participants to discuss content options for the programme. At this meeting, the participants will also be given their first homework task, which will usually be a research project that must be conducted as a group.

During the next 2-3 weeks, prior to the start of the course proper, our consultant will propose a set of modules for your specific instance of the programme. The training part of the programme consists of as many modules as you need. During recent years we have delivered modules on a diverse range of topics; download the course prospectus to get a flavour of the full range of module we have to offer.

Sample programme outlines

To give a flavour of the content of a typical programme, listed below are outlines of a sample of the programmes we have run recently.

Menu A:

This programme suited an organisation with a very large legacy codebase and senior developers who had little experience of modern programming techniques.

  1. Slicing projects thinly I
  2. Slicing projects thinly II
  3. Testing legacy code
  4. Refactoring legacy code I
  5. Refactoring legacy code II
  6. Incremental development
  7. Planning large refactorings
  8. Writing good unit tests
  9. Eliminating conditionals
  10. Effective use of Resharper
  11. Effective pair programming
  12. Ports & adapters architecture

Menu B:

This programme suited an organisation whose development processes had been established during the 1990s.

  1. Habitability and coupling
  2. TDD as a Design Technique
  3. Trunk-based development
  4. Writing good unit tests
  5. Incremental development
  6. Effective pair programming
  7. Testing legacy code
  8. Refactoring legacy code
  9. Composition over inheritance
  10. Ports & adapters architecture

Menu C:

This programme suited a young organisation with very immature project inception and governance.

  1. Habitability and coupling
  2. Continuous improvement
  3. Slicing projects thinly
  4. Incremental development
  5. TDD as a Design Technique
  6. Composition over inheritance
  7. Effective pair programming
  8. Modelling

Sample homework

Click here to see a sample item of homework, such as might be assigned during an exploration of evolutionary design.