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.
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.
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.
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.
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.
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.
More on exception handling to come soon