There’s a general sense these days that software is difficult. We’ve seen some large open source projects hit the headlines recently, with critical bugs given press-friendly names like Heartbleed and Shellshock. I believe a rigorous approach to the discipline of software engineering is key to both avoiding these sorts of issues in the first place and helping detect them as early as possible when they do occur, and that’s exactly what we do at Cambridge Consultants.
This was the theme of a talk I gave in April 2016 at the Device Developers’ Conference, hosted in nearby Cambourne. Cambridge Consultants produce around 300 different software projects a year, for a wide variety of clients, and ranging from firmware for tiny micro controllers, up to massive telecom-grade infrastructure offering five-9s reliability. In my talk I argue that this is only possible when you have a process in place that is not only adaptable to the task at hand, but also rigorous in its application of good software quality principles, in areas such as:
- Revision Control
- Semantic Versioning
- Issue Tracking
- Continuous Integration
- Repeatable build environments
- Code Quality and Templates
- Static Analysis
- Build Targets
- Interface Definitions
- Unit, Regression and System Testing
When your continuous integration system is, like ours, fully integrated in the process, and helping the engineers by automating your checks on quality on every commit, you’re in a much better place to understand exactly how far down the road you are to towards producing software that’s ready to ship.