Improving software delivery in every organisation

Learning Ideas

No matter how much experience, there is always more to learn or practice.

Remember, practice must be deliberate.

If you have some free time to learn by yourself, or in a pair, or even a mob, here are some ideas to help you use your time fruitfully.

I want to…

I’m not sure…

Code Katas

Go and do some Katas, either the ones in this repository.

Or from one of the following sources:

Repeat Code Katas

It goes without saying, but code katas are meant to be repeated.

Each time, you should focus on honing a particular part of your skill set.

You will pick up new knowledge as you finish guides and seminars.

Focus on applying that new knowledge in practice.


  • Focus on getting names absolutely perfect, break out a thesaurus and choose the absolute most precise words for the problem at hand.
  • Is your code open for extension and closed for modification? Think of ways that it could be extended, and create plugin points
  • Do your classes and methods have one reason to change? Can you increase cohesion by refactoring?


Pick up a book and read. In no particular order, here are a few that are invaluable

  • Test Driven Development: By Example (Kent Beck)
  • Growing Object-Oriented Software Guided By Tests (Steve Freeman, Nat Pryce)
  • Domain Driven Design (Eric Evans)
  • The Pragmatic Programmer (Andy Hunt)
  • Clean Code (Robert C. Martin)
  • Refactoring (Martin Fowler)
  • The Clean Coder (Robert C. Martin)
  • Clean Architecture (Robert C. Martin)
  • Working Effectively with Legacy Code (Michael C. Feathers)
  • Practical Object Oriented Design in Ruby (Sandi Metz)
  • The Software Craftsman (Sandro Mancuso)


Watch screencasts and other programming related videos

Go back over guides

Can you apply the knowledge you picked up in a previous tutorial or seminar in a new project.

Do you need to follow the guide, or can you remember what to do?

Shadow others

If you’re currently not on a delivery team. If possible, arrange to shadow a team actively developing software.

Code Review

Go and review some code. (You don’t even need to comment).

  • Read the code + understand it.
  • Do you think it’s well designed.
  • Clone the project, try to run it locally.

Work on a project

If you have a burning desire to build something, do so.

Make sure you’re building it well, though.


  • Open small pull requests - less than ~400 lines (At Made Tech you can drop a link into #engineering or #learntech)
  • Make lots of mistakes, and don’t fear them.
  • ATDD your code
  • Refactor relentlessly
  • Put into practice your ever growing knowledge
  • Ask for help when stuck