Software quality is a concept that cannot be easily defined, but of which, on a high level, everyone knows what it implies. From an end user’s or a client’s perspective, when we discuss high quality in any type of software we are referring to software that meets its purpose in the most simple and intuitive way and at the same time is reliable, safe to use, runs smoothly and doesn’t crash. From a developer’s perspective, the quality of a software is more than what appears on the outside. It refers to the quality of the code, the security of the data, how easy it is to maintain it, or how hard it is to add and change features.
Quality is one of the most important aspects of any type of software and it represents the business card for any company. Although there are other important things for an application, quality is the one that is never overlooked in the eyes of the user and which is very hard to recover in case it’s missing. It is unlikely for the end-users to come back to an application that is not performing as expected, or which is not secure, even if you are struggling to convince them that all the problems are fixed.
In addition, for a software development company, the chances that a client will recommend its services are very low if the delivered application had poor quality. At the same time, fixing problems in the development cycle is more accessible than fixing them after they reach production, so a strong quality assurance process is mandatory in order to save both money and time and to create a stable and competitive product.
In Maxcode, the quality assurance process is implemented in every project that we develop, following a quality standard that we created. This quality standard consists of a series of practices for our teams to follow in order to assure a high-quality process and, in the end, a high-quality product.
These practices are referring to the way the team organizes itself, how the software is developed, how the software is tested, operability, and data security. At every stage, we’re following some well-defined guidelines, as it follows:
We believe that the way the team organizes itself affects its efficiency and in the end the quality of the project. You might wonder why. Well, if the meetings that the team has, deviate from their original scope and do not have a clear purpose, then a lot of precious time is lost on unnecessary discussions and weak plans that they cannot rely on. For a team to work efficiently during an iteration, it is important to know exactly what needs to be done in order to make a structured plan. In addition, a strong knowledge sharing process and reliable documentation have a great impact on the efficiency of the team.
Another aspect that influences the quality of a project is the way the software is developed, in the sense that the quality of the code is important as well as the security and the code management. This is provided by following code guidelines, having a strict code review process, analyzing the code with specific tools such as Sonar, and using GIT repositories with well-established workflows in order to have good code management. In addition, the team should constantly have in mind the security threats that any software application is facing in order to make sure that they are not including in their code any loopholes for attackers.
The quality of the software cannot be obtained without a very strong quality assurance process, which implies having testing performed for every level in the development cycle: unit, integration, system, and acceptance. Having these as a regular activity in the development cycle of every feature will most certainly reduce the number of defects and assure that the application behaves as expected. Introducing automation testing besides manual testing will increase the efficiency of the testing process, reduce the time spent on regression, and eliminate a big part of the human error; therefore, our efforts on automating the UI and API of all our projects are constant.
Using continuous deployments to increase productivity, well-structured logging systems to investigate issues, and a monitoring system that sends signals whenever a problem appears assures a high quality of the product and services even after the development has finished and the application is used in real life.
Besides the quality of the software, we also value the security of the data. We care about privacy and confidentiality, so we have a couple of rules that we follow when it comes to data: we use dummy data on the development environments, we have restricted access to the production environments, and we use encryption. Additionally, we minimize the use of personal data, also instructing our clients to do so.
In Maxcode and in any other outsourcing environment in general, the client is involved as much as possible during the entire development process. He takes part in making decisions, is aware of all the efforts made for assuring the quality of the product, and sees a very efficient team that does its best to create a smartly engineered application for a worry-free experience.
About Andreea Soveja
Andreea started her career in quality assurance almost 10 years ago and since then she worked with a variety of projects, from billing to e-learning and payment applications. She had the opportunity to interact with different types of people, both colleagues and clients, and learned about their needs and how to adapt to each one of them in order to achieve the common goal. This extensive knowledge and experience determined her to go to the next level and work more on the strategic parts of the quality assurance processes.