Concepts to boost software Quality

Few key points to evaluate if you are focusing on the correct elements of your project development process.

sachi vithana
Qualityholics
6 min readApr 29, 2022

--

What should you focus on when delivering a quality product?

What actions you should perform?

Where to start from?

These are some of the questions which come to a person’s mind when thinking of improving the quality of a product. In this post, I will walk you through a few Core Principles and concepts I learned through my experience in the industry. These principles help me deliver high-quality software with predictable behavior.

There are many conflicting views on what is the best way to ensure software quality. From developing pods without assigned roles to dedicated teams of test specialists, there are a variety of approaches that developers & quality engineers can adopt to improve their quality. Unfortunately, many of these approaches are not compatible with one another. It is therefore critical for organizations/project teams to decide which approach they should adopt according to the unique challenges and situations they have to face. Therefore, the practitioners can obtain guidance through the mentioned concepts and implement processes and approaches as necessary.

Furthermore, the team needs to have a proper understanding of what standard of quality they should expect (quality strategy). This needs the collaboration of all the other roles of the team as well.

Four Quality Engineering Core Principles

Ownership by the whole team

Not only the quality engineer, each and every member of the product development cycle should achieve the level of quality in each level to gain the overall quality of the product. Therefore, all team members should be accountable for their actions and decisions and should take responsibility for the output whether it is correct or not.

Organizations that depend only on a QA engineer role regarding quality request them to verify product code/ features actually limit their ability in delivering a quality product at the end of the development cycle. In the best-case scenario, this assignment is a guiltless however misinformed procedure to accomplish some assurance of quality. To say the least, it’s a conscious endeavor by an association initiative to evade responsibility by involving Quality Assurance as a substitute when issues emerge. Development teams do not accept that siloed responsibility is ever a compelling methodology in present-day software development.

The whole team ownership” concept, behave in a different manner. In real life, those teams are staggeringly strong. Personalities who function in such nature do not speak language such as “No, that’s not my job”, or tossing code over the wall, no sub-improvement of “my” particular task, or inquiries of “for what reason didn’t QA find this?” but there is always a collaboration between each other when delivering a goal, driving towards a shared objective. Teams that act this way make power for quality far more grounded and more inescapable than any other. This concept is a method that every team should at least try once in their development phase.

Empowering Teams

A team should have a person to motivate them regarding the knowledge of quality, build standards, and verification of the goal with guidance and focus. Therefore, having a quality engineer who sits alongside is an advantage to the team. When discussing the role of a quality engineer, Quality Engineers bring expertise in test automation, quality assurance, agile processes, and CI/CD, among other things. If this seems like a lot, it’s because it is! Everything can impact quality, so a Quality Engineer must understand all aspects of software delivery and their relationship to quality. Quality Engineers use this expertise to champion, evangelize, influence, and advocate for quality, but they do not own it

Furthermore, the Quality Engineer will construct automation frameworks, adjoin with developers on implementing stories, provide feedback on stories regarding the testing prospects, and communicate with PO/customers to understand the use cases in a detailed manner and communicate it to the team. The Quality Engineer plays a prominent part that requires engineering expertise, strong communication skills, user empathy, and a “creatively destructive” mindset. Therefore, a team should have someone with expertise in software quality aspects such as a Quality engineer to empower the team regarding quality-related knowledge to drive the team on the correct path to quality.

In another aspect, the modern software delivery teams include quality approaches that remove quality roles from the development cycle and expect developers to own code from design to production, but that type of approach is only applicable to certain types of teams/ companies which has an environment set up for such practices. Along with that, there is a challenge in finding resources that match with above criteria which include both development knowledge + quality knowledge. When considering that, allowing team members to learn quality aspects naturally will be more practical and effective.

Value of proximity

It’s best to have close proximity between development and test activities. Effective collaboration between all team members leads to success in software development. Proximity means that the development and testing activities are done parallelly by the team members collaborating in real-time within the team. Developers and quality engineers should co-create the software and build quality while developing the software hence verifying the quality later. This method leads to achieving good quality without investing the unnecessary effort.

Automation is critical

When it comes to quality while parallel execution of testing and development activities, it is critical to use automation. Furthermore, it helps test execution to happen in a time-saving manner than slow manual testing. Also, to guarantee that validation activities keep pace with development activities.

Nowadays, most organizations focus on automation activities, but most of them aren’t able to achieve the true potential of automation. Just automating the code would not cater to the real purpose of productivity and validation for quality maintenance. To achieve these goals the team needs planning, the team has to plan the speed of automation and the results need to be continuously analyzed in order to achieve the quality of the software. Moreover, the automation activities should also be reviewed as same as development activities, design reviews, test case analysis, and code reviews should be carried out.

Quality Engineers work together with the team to characterize and constantly advance an automation procedure custom-made to the points of interest of the product design and innovation stack. Understanding this and driving automation moves toward that decidedly sway speed is a vital specialized topic that Quality Engineers bring to development teams.

More points to practice

Effective communication

To improve the quality of a product it is crucial that every requirement is communicated properly to the relevant people. Therefore, communication is the key. Having proper KPIs, proper process for the flow of communication, proper organization of information having open methods to communicate within the team is a few important aspects to focus on.

Encourage innovations

Organizations should always encourage innovations in order to achieve innovative solutions. It is important all processes for a certain project are in place but there’s always room for improvements, innovations come in handy at these moments.

Innovations are so significant in light of the fact that they can prompt upgrades in software quality that have the ability to change how projects are delivered. Innovative work (R&D) ought to be encouraged. Engage teams to explore, experiment, and investigate continuously. Likewise, guarantee that advancements in innovation are appropriately compensated. They have the ability to rise above your product quality and deliver projects with an upper hand over the competition.

Have a risk register

A risk register is a great management tool to mitigate risks within the project. This will align all individuals in the team about identified risks so that the relevant people can evaluate them when delivering. A risk register could include elements such as a description of the risk, risk identified occasion, the severity of the risk impact, responsible persons, risk priority, and status. This can be customized with any other relevant elements as well.

Conclusion

In combination, the above-mentioned factors define how a project team can achieve quality in software development activities. But these are not the only methods for achieving quality, there could be any other methods that teams with different thinking patterns follow. Development teams can always follow these methods according to applicability as mentioned at the beginning of this article. The points mentioned in this article would not be perfect but hopefully, these will be useful to start a conversation about quality within your team from a new point of view.

--

--