In this article, I want to summarize our experience in how we have created a full-fledged product in 7 months. If you are in doubt that our material will not be useful to you, don’t hesitate. At the initial stages of DueFocus development, we have faced the same problems as most teams that have big ambitions but are not yet so experienced in order to do everything right and in time. We had a lot of not running legacy code and just a small piece of product documentation. Our reopen rate was close to 30% (sometimes, even more).
Currently, we are at the pre-release stage and our results have met our expectations. Now DueFocus is a flawless and robust productivity assistant that helps to track time and control teams effectively, simplifying and empowering the company’s internal processes. It enables synchronization with all the most used task managers, boosts productivity, and organizes management better.
However, why your “superstar” developers produce so many bugs and can’t create a stable version of your product for a while. All reasons of bug appearance we can separate into two parts :
1. Misunderstandings at the stage of project requirements gathering. Unwell organized communication process. This includes:
- Poorly described technical requirements;
- Bad understanding of product features and the whole system with which developers will interact;
- Lack of communication and transparency in terms of project management and development.
2. Human mistakes within the development process. There can be:
- Carelessness, fatigue, irresponsibility from the development team;
- Weak understanding of the project development processes;
- Project release without verifying of its correct operation.
At this stage, we identify 3 main points that will assist us with these challenges:
- Bug identifying at the initial stages of development without allowing them to grow into serious risks;
- Timely response to appeared bugs and their elimination through the well-organized manual and automatic testing processes;
- Identifying riskiest points of an existing code base of the program in order to predict future bugs and failure.
Bugs and failure identifying
Gather project requirements more carefully to make your tech documentation better
Risks associated with misunderstandings between team members, clients, and managers might become too high, which could lead to the downfall of the entire project. Spending extra efforts on developing more detailed project documentation, you can save time and resources for your development team. Even if you need more standups, clients calls, and meetings, please don’t ignore this important step.
You can engage experienced QA specialists to review and improve weak points of your tech documentation before you’ll give it into work. This collaboration helps to receive really useful feedback concerning the validation of input data, problems with notifications, or dangers related to insecure work with a program.
Below, we prepared helpful Medium articles, where you can go through useful guidance and methodologies regarding requirements engineering. They will help arrange your knowledge and organize the gathering of project requirements properly.
- Requirements Engineering — Introduction (Part 1)
- Requirements Engineering — Elicitation & Analysis (Part 2)
- Requirements Engineering — Requirements Specification (Part 3)
After your technical requirements are good enough, we can go to the next practices.
Make sure your QAs have an accurate checklist…Or, at least just have
QA Checklist describes how each part of the application behaves. Mostly, a well-designed checklist depends on how good testers know the internal operations of the system, its features, and particularities. Every useful checklist is based on properly developed tech documentation, so if your tech specifications are not good enough you can’t receive any good feedback as well, delivering a not perfect product with bugs. This product can include defects, and then provoke crashes after an app goes live in production, unsatisfying your clients and end-users.
Also, a well-designed checklist serves for implementation the next practice — unit and automated testing ( we will return to this topic a little later).
Below, you can read how a good checklist should look like:
And here you can find out DueFocus checklist template:
DueFocus Checklist Template
Provide a code review
If you don’t practice a code review during your project development, please, stop it. You can involve the most experienced developer into this process, and suggest him to review the code before merging pull request to the development environment. An experienced team leader who spend some time to check your developers’ code, can benefit the development process and increase the business value of your product. Most bugs can be fixed exactly at this step.
However, code reviewer should know all the project specifications, features, and functionality very well. It will help avoid severe mistakes and failure within the development and merge/pull request properly. To speed up the process, this responsibility can be delegated to some skilled and authoritative developer from your team.
Bonus tip: If you already review your code, but its quality needs improvement, implement the following procedure. Involve your best coder to review merge requests together with the team leader. Then, make a rule. Do not merge code before both team leader and the coolest developer will not agree to do this. When you try to put it in practice, it’s really powerful.
Provide cross review
One of the most important steps on how to deliver your project successfully is a deep review of its sophisticated and complicated features. When a project is difficult enough, coders can lose some important detail in its logic and functionality. To avoid this confusion, developers show their code to each other before they send merge requests to the development environment.
Ideally, you can control this process with a task reviewer (QA engaged person) who will be responsible for seamless and bug-free code implementation. Also, for this process improvement, you can cooperate with a product manager, business analyst, or product owner, who have written tech requirements for such features.
You don’t have to be obsessed about unit testing. However, try to cover at least the most important features of your application by this testing type. It is a useful practice, especially when you have the large legacy code base, where even the smallest changes can break your application correct behaviour. To simplify the process, make it more automatic, connect your tests to your GitHub or GitLab. Sometimes, it demands more resources and operation cost, but writing tests for a product main functionality will protect it from the future dangerous crashes.
If you have a large, sophisticated product with well-organized dedicated QAs, you can also apply smoke tests and start to automate this process as well (there are a lot of testing frameworks such as Jasmine, Mocha, etc). Correct usage of these tools speeds up the process considerably, making it more profitable for both the company and clients.
From our side, we had a large product with many sophisticated features and not-perfect tests. However, after we have started to implement unit testing for the main product functions such as user identifying, registration, new tasks planning, etc. As a result, we reduced more than 40% of small tasks after just three days of working under unit test practice.
Productive fixing of already existed bugs
Discuss the detected bugs with a whole team
Everyday stand-ups or similar practices can improve the development process altogether. When you know a project progress in terms of appearing bugs and unforeseen stoppers, you can respond to them immediately and efficiently. It also will give you more information about the actual state of the project, and helps to overcome some kind of errors in the future.
Hire awesome QA lead
A skilled and responsive QA will help organize the testing routine more intelligent and balanced. He can assist in the thoughtful checklist development, helps in the test plan development, and also contributes to the more friendly and trusting interaction within the development team. in our case, after we hired an experienced QA, our business was quickly improved. The number of open bugs increased by 300%. We start to report more bugs and be more attentive with new QA lead.
Below, you can read, how to find really awesome QA to join your development team.
Integration with Sentry.io
We are definitely sure, that every software has some hidden bugs about which you even don’t realize. But we all have many errors which your users can’t report to you, and we should track them, to provide more stable solutions. In this condition, including Sentry.io in the testing process can make your code more stable and clear. Testers can catch every error from your back-end or front-end part of an application, and then provide an accurate review of this finding. The tool also helps to create detailed bug-fixing tasks for your development department. This is an excellent ratio of cost and quality that will benefit your testing process, simplifying and making it more transparent and productive.
To help you optimize the development process even better, our team has developed Code Quality add-on for Jira. This addon will help you look at your technical debt and breaches inside your codebase as fast as possible.
We’re working on web version right now :)
You can also use BitBucket as your repository, which have a code analysis feature and helps to review pull requests. Nevertheless, with the help of these and other testing tools, you can get real advantages due to its comprehensive and useful functionality. We’ll describe some of them :
- Improving your code review routine making it more productive and clear.
- With the help of these tools, you can better organize your management. The data that you will receive using these tools, you can use to build more thoughtful testing process.
- You сan explore the history of your management actions to understand which value you generate as a manager for your development and testing teams.
- This information can be useful for creating more thoughtful tasks for refactoring an already existing code base. It also helps to investigate the weak points of an application and prevent the appearance of similar bugs in the future.
Check next solutions to improve your codebase:
And read this article about automatization of your code review routine:
Continuous code quality and automated code review tools
The static code analysis is an effective tool to have a good overview of the project code quality and to be able to…
Listen to your users
In some cases, your users will not use your applications in such scenarios as it was originally intended. Therefore, it is very critical to listen to your users carefully to make the application more convenient and friendly.
Therefore, if you have already developed a beta version of your product or its MVP, you can start collecting feedback from your potential customers right now. This will help to prevent additional costs for modifying inconvenient functionality in the future, as well as save your time, and efforts of the development team.
Also, listen to your development team and testers carefully. Do not let the pressure from outside skipping even small problems in the development and testing processes. Some instantly overlooked difficulty can have a very negative impact on the progress of your product in the future.
You can find your first beta-testers here:
Do something with your most “buggest” person in the team
Sometimes, in order to improve the development process, you need to pay attention to a person who can take a whole team to the down.
You can find this person via integration with Code Analysis services which I provided above, or just by asking your team.
Yes, it is not easy to decide whether to replace an employee or move him to another team, but it is a necessary decision to enhance processes. Therefore, try to identify this person in the initial stages of developing your product. In our experience, after we moved such person to another project, the number of bugs lowered by 37%.
Make small releases/changes in a codebase.
Yeap, that’s all the tip.
Share knowledge about your product inside your team.
Sometimes the common reason for a large number of unforeseen bugs is a weak understanding of how your application behaves in terms of its functionality and operation. In order to change this state, try to earn a more open communication within the team. Round-table talks, daily stand-ups, and ideas exchanges will help in creating a more trustful atmosphere, as well as increase the overall level of awareness about the product they are working on. Well-written documentation will also play an important role in which way your team will work in developing stable and useful software.
If you can, start using your product inside your team. Just feel what it’s like to use your product.
You should understand one really simple but important thing. It’s unreal to make a fully bug-free product. You can face unforeseen obstacles towards great software always, just because we are all human, and sometimes we make mistakes. But if you will continue on improving the management of development and testing processes, you can reduce their number to a minimum. We know, it’s not an easy thing. Each member of your team should realize that in order to create a stable and easy to support product, they should work carefully and diligently every day.
We wish you don’t have critical bugs in production and happy QAs. Also, we’ll be happy to get any feedback about our product DueFocus.com, which is a comprehensive time-tracking tool for IT specialists and managers. Currently, we are in the pre-release stage, and every opinion about our product is valuable for us to become even better.
A short-list of our features :
- Plan your day with tasks from your task-management system, and keep an eye on the tasks your team is working on;
- Automatically report your tracked time to the task-tracking system;
- The real-time dashboard of your team workflow;
- Integrations with more than 25 systems;
If you have any questions or suggestions, don’t hesitate. We appreciate claps too :)