Improving software delivery in every organisation

Deliberate Learning Goals

In order to do deliberate learning, it’s important to:

  • set a goal for what it is you are going to learn (it must be Goal Directed)
  • get feedback from a mentor (it must include opportunity for Feedback)
  • reflect on what you have learned and improve it (you must do Self-reflection)

Once you achieve these three things; you will realise that in order to really learn you cannot simply absorb knowledge you must also create knowledge.

This new knowledge can be small and discrete, or it can be complex and far reaching.

Finally, to really solidify your learning - Mentor others.

And remember, you do not need to know everything to be a successful mentor.

Onboarding at Made Tech

Before joining a delivery team, and after following the onboarding guide in the handbook, you will spend some time with a mentor focussing on skills relevant to delivery teams.

As a high level summary, we will cover the following -

  1. Watch the introduction to TDD screencast.
  2. (Pair or mob with a mentor on) code katas using Test Driven Development discipline.
  3. (Pair or mob with a mentor on) subcutaneous acceptance testing, and ATDD discipline.
  4. Explore the three central components Clean Architecture
    • Use Cases
    • Gateways (Adapter Pattern)
    • Domain Driven Design
  5. Discuss the SOLID principles with a mentor, with reference to Clean Architecture and (A)TDD.
  6. Be introduced to the Tic Tac Toe sparring exercise

Deliberate Learning

If you are looking to focus on learning new skills, it’s sometimes difficult to know what to focus on.

As we know, in order to do Deliberate Practice our learning must be Goal Directed.

In order of priority, here is a (non-exhaustive) short-list of some skills that we think that Software Engineers should know:

  1. A range of skills which enable working in a team that is:
    • regularly showcasing productionized software to customers
    • keeping it’s commitments
    • is building the right thing
    • continuously improving
    • is enjoyable to work with
  2. Test Driven Development
  3. Acceptance Testing
  4. Software Architecture
  5. Web Application Development with React
  6. Frontend Development
  7. Continuous Delivery / Continuous Integration / DevOps
    • Using a PaaS
    • Using CI Tooling
    • 12 Factor
    • Philosophy of DevOps
    • Infrastructure as Code
  8. Containerization
    • Docker
    • Kubernetes

Please feel free to use this list as a guide to help you and your mentors set goals on expanding your knowledge.

Core Skills

Our team has put together a set of Core Skills with associated animal badges, which are continuously evolving.

These are designed to enable new joiners deliberately practice skills which are valuable to delivery teams.