10 steps for successful software delivery

Last week I spoke to David Worsell, VP Europe of Tarmac (www.tarmac.io). A company that designs, builds, scales and supports software. They are located in several countries from where they offer their services. I found this conversation interesting because our services are complementary. Fairbanks builds and supports open cloud infrastructures, whereas Tarmac offers the design of UX/UI, software development, DevOps, Product Management and Data Science; the resulting products are naturally hosted on cloud infrastructures.

 

They have a best practice approach for the delivery of software products which consists of 10 steps. Each step has been developed and refined based on the experience and institutional knowledge within the software engineering teams and industry best practice. This ensures projects are delivered quickly, accurately, and to exacting quality standards.

 

This best practice supports rapid iterations of the product and allows technical teams to move towards a Continuous Delivery (CD) environment. This means ensuring Unit Tests are introduced into the code so releases can be automated whenever possible. This approach has proven to be extremely effective as part of a high-quality software development environment. It benefits because multiple releases can be made in a single day, removing delays to launch new features and correcting issues without having to wait for weekly/bi-weekly sprints to conclude.

 

In this blog I will share their best practice: the Tarmac10.

 

1. Single-purpose branches ensure one change per branch.

  • Small changes are easier to manage, ensuring quality control.
  • Code can be tested quickly and effectively in isolation.
  • The codebase is always stabilized, even with multiple contributors and a high rate of change.

 

2. Common code style that ensures a consistent approach everyone can follow.

  • Clean code is easier to read, maintain, and build upon.
  • Clarity and efficiency make our teams happier and more productive.

 

3. Rigorous mandatory automated tests at every stage helps to avoid problems later on.

  • Unit tests reduces mistakes and speeds up development.
  • Developers “own” the quality of the code.
  • A consistent peer review system with fresh sets of eyes on every change.

 

4. Continuous integration (CI) accelerates product development and mitigates the risk of bugs.

  • All contributors have access to test outcomes and project progress.
  • Clear communication across the team enables streamlined launch.
  • Clients can confidently and continuously push work quickly and efficiently.

 

 

5. Pull requests are a shared responsibility that ensures exceptional product quality.

  • Software engineering teams share expertise and develop faster.
  • Client teams benefit from proven best practices.
  • Impeccable version control reduces the risk of errors.

 

6. Mandatory internal and external peer reviews ensures product quality.

  • Product teams learn, adapt, and improve as they execute on projects.
  • Code defects are spotted early, avoiding bugs.

 

7. Code repository hygiene creates seamless development across teams.

  • You don’t waste your client’s time or resources working on irrelevant code.
  • You ensure code is easily understood by all parties.
  • Development environments are always clean, tidy, and organized.

 

8. Continuous delivery. To keep your products ahead of the competition.

  • One change per branch speeds up enhancement or bug-fix delivery.
  • Drives rapid, daily feedback.
  • Focus on zero downtime deployments.

 

9. Daily status emails maintain momentum and clarity.

  • You can report on the project with confidence because you see our progress every day.
  • By communicating clearly and openly, you overcome challenges quickly.
  • You communicate efficiently across teams, speeding up development and promoting innovation.

 

10. Daily “stand-ups”. Quality time together, at your convenience.

  • Daily stand-ups ensure regular and purposeful communication.
  • Speak to the team – every day.
  • Understand and resolve blockers quickly.
  • Keep the project moving.

 

David says: “Tarmac’s uses this agile approach to great success on behalf of the clients for whom we develop software products, however, it can equally be adopted by all businesses to ensure that high-quality deliverables are produced on time and within budget with the flexibility to adapt as needs and requirements evolve”. We at Fairbanks and 42on build and manage programmable, open infrastructures, to host software pipelines on. And we do that with our own software code: our automation templates, monitoring to alerting, inventory scripts, health checks, deployment scripts and API-interactions are our software, resulting in working cloud platforms. In a future blog I will investigate and show how these Tarmac10 relate to our day to day cloud operations.

 

I am very curious to get to know your way of working. Do you recognize above best practice or do you use your own?