5 great ways to improve software quality
Posted Jan 8, 2018 | 3 min. (562 words)Software quality is a big deal – bad software can cost you time, money and sanity. We’re very focused on software quality at Mindscape and that’s one of the reasons that we build Raygun for error reporting. I wanted to share 5 ways that we work to ensure great quality software.
1.
2. Involve the team
Making sure that everyone on the team has an overview of the process of software creation and delivery is important. With Raygun, we have a dashboard showing all the important monitors for various parts of the system. We use GitHub for source control which means we all can see the code flowing in, the changes in a pull requests and comment on things. This leads to spotting some bugs or identifying a better way of doing things before they’re merged into master.
Beyond just keeping everyone aware of the health of the system and code base, it means that if somebody is taking a holiday or is unwell there will always be somebody covering that person. Nobody should be the only person on the team who can perform a certain task.
3. Automate as much as possible
You have a (generally!) deterministic device in front you. Often the main change in any process is with the human operator. That’s why it’s important to automate as much of your processes as possible. That means deployment of websites, automatic builds on commit, system backups etc. This is one of those things that every single time we automate something I wonder why we didn’t do it sooner. It has the added benefit that not only is the process more reliable but it also reduces the amount of work on your plate. Lets be honest, processes are typically boring and tedious so it gives you more time to focus on creative work.
4. Unit tests
Unit test as much as you possibly can. Not only are unit tests repeatable and automatable, they really help prevent regressions. We push hard to unit test every addition to our code base. When somebody files a bug it’s a great process to 1. Add a test that fails to show the bug 2. Fix the bug so the test passes. Now, as part of your continuous integration process and automated delivery system if you regress you know right away.
With one of our products, LightSpeed, we now run more than 25,000 unit tests and it’s one of the reasons it’s the leading commercial ORM for the .NET platform.
5. Report on everything
You will have noticed a trend in these points – they usually involve getting the computer to do your work. What about when something goes wrong? This is why dashboards and notifications are as important as every step here. If a build breaks then deployment should cease, if service stops working you should get a notification. If deploying a product to help with automation then pay careful attention to their dashboards, reporting tools or — ideally — their API to integrate reporting into a unified view your whole team can see.
If you’re passionate about creating great quality software then be sure to check out Raygun – it works with most programming languages and gives real-time notifications about errors your users are experiencing with your software. Reduce the turn around time on software improvements and create a better experience for your users.