My Software Quality Principles
The core software quality principles that have helped me set the vision of how my teams perceive software quality
I've contributed to several projects and products, built teams during tough times, and joined many others. Along the way, I've acquired some core software quality principles that have helped me set the vision of how my teams perceive software quality.
Here are my core software quality principles:
- Testing is the whole team's responsibility—My mission is to develop and advocate for tools, practices, and processes that deliver quality software while simultaneously enabling engineering velocity. Although I'm a test engineer, I'm not solely responsible for testing or test automation. I don't even do most of the testing. Lao Tzu once said, "To lead people, walk behind them". Thus, I take absolute ownership of my mission but more importantly, I support, mentor, and ensure that my peers can be autonomous drivers of testing and quality.
- Short "tea break" CI feedback loops—Test execution stages have a massive impact on the speed of a CI/CD pipeline. The longer they take, the slower the pipeline is. And, a slow pipeline dictates how often we can release to customers. A test suite taking longer than the time it takes to stretch my legs and grab a cup of tea is already too slow. Thus, I'll collaborate with the team to ensure that our CI feedback loop is as short as a "10-minute tea break".
- Releasing often and confidently—Releasing is a risky event. That's why I firmly believe that we should make tinier releases as often as possible. My goal is to assess and raise awareness of these risks, increase the team's communication and collaboration, and listen to my peers to ensure we keep confident when releasing.
- Performance is paramount —Customers are at the center of every product. Therefore, it is crucial to provide them with an outstanding, reliable, and resilient product that performs smoothly at scale. Hence, I care deeply about our product's performance and will unite with my team to explore and tackle bottlenecks that would not allow us to go beyond at least three times the current customer base.
- Backlog prioritization —As time goes by, our backlog tends to become messier, especially the "issue backlog". I believe it is necessary to keep track, raise awareness, and prioritize the issues on our backlog. It makes us conscious of the product we're shipping to our customers and makes us more effective in tackling problems that customers are facing. I'm the type of person that assembles, integrates, and facilitates the necessary processes to prioritize our backlog efficiently.
These are the goals and principles behind what I try to work on and advocate. But still, they are suited to adaptation according to my team's ways of working, existing processes, product needs, and vision.