Complete test suite

Testing is an incredibly important part of ensuring quality. Here’s why as a developer you should want to employ good testing techniques from the start, not as an afterthought.

Read more about testing

Tackling technical debt

As a team we often have to make a decision between spending time to deliver the perfect solution for a new feature, over getting it done and launched, knowing that introducing imperfect code is a debt the team will have to pay later. Treating it as such is a good way to understand when it's worth doing so - meeting a deadline can be important for the client, it's only when you're sure something will live for the long-term that it becomes important to the team that solutions are the cleanest, most maintainable possible.

More on tackling technical debt to come soon

Solid, group-led architectural decisions

The team is there for each individual within it. Working things out together gives the benefit of everyone's combined experiences and ways of thinking problems through. We like to run planning poker sessions together for more accurate estimates and to bounce ideas off each other before getting stuck in to coding.

Read more about how we make decisions as a team

Code reviews from peers

We see code reviews as vitally important to code quality and maintainability. Not only does it help catch problems and mistakes before getting merged in with production code, it also gives the reviewer more visibility on what's getting added to the code base, spreading the knowledge instead of creating experts in specific areas.

It is possible to do them wrong though. We try not to give the developer who's code is being reviewed a complex about their coding abilities.

Read more about our code review process

Demo and staging environments

Having a sandbox for developers to run wild in is one of those comforting things that leads to more fearless development. It's also vital for running things like performance tests accurately. And it's not all that hard to do.

Read more about the environments we use and how we set them up

Continuous delivery

More on continuous delivery to come soon

Gathering analytics and feedback

We're on a mission to educate our clients and each other about how important it is to make sure we're tracking everything we should from day one of the launch of a new product or service we've built. When we're improving on an existing service, starting to record metrics is sometimes the only way we're going to know that our changes are leading to genuine improvements.

Read more about analytics

Monitoring

Writing the perfect code, getting everything right first time is not always achievable. Servers will not run indefinitely. Hard disks will fail. Networks will go down. Open-source and third-party software and services will change over time. So it's a good idea to ensure we're monitoring all the essentials behind each of our running projects so that we know whenever things do go wrong.

Read more about monitoring

Exception handling

More on exception handling to come soon