We manage without an army of QA: how having no testers saves developers' time and improves their expertise

The role of Quality Assurance (QA) in IT development: how to build quality control processes, automate testing, and improve product reliability

  • Where did they go?
  • A cog in a big "assembly line"
  • Bonus: the tester's place on the "assembly line"
  • Agile: when there is a goal

Reading time: 7 min

How many testers does it take to catch all the bugs in an enterprise-scale project?

No one gives a clear answer

Some sources consider a ratio of "one tester per 10 developers" to be normal

, others say that "1:1 is just right" (and even that is not enough)

Within the Agile methodology we follow at kt.team, there is no need for testers as a separate role at all. We explain how we live and work without them, and why having no tester is beneficial for both the client and the developer.

A cog in a big "assembly line"

Working on a complex project in an assembly-line approach looks roughly like this.

The client sets high-level goals for the product or solution.

The project manager handles them and keeps the "assembly line" moving.

Business analysts and systems analysts rework requirements and write a lot of documentation.

The team lead decides, based on the requirements, who will develop what. After that, it is clear. Developers write code. Testers check the work for alignment with tasks and project documentation. System administrators provide the infrastructure. Many developers and heirs of the "Soviet school" consider this process ideal. It seems there should be no problems in this system. But in reality, it is not that simple.

The developer is not aware of the project goals, and from the "assembly line" perspective this is "not needed": they cannot influence them anyway. They do not develop the skills needed to understand business outcomes or ensure quality. They do not feel responsible for the final result. The developer's only task is to write their own tasks. How they connect to the final outcome, to the project goal, how they affect the work of other developers, and why the work is organized this way, they do not understand: that is the responsibility of the team lead and the project manager.

All that is expected from a developer is "beautiful code." Here, the developer is just a kind of typist. They are given a well-formulated, well-described task, and they "translate" it into their programming language (PHP, Go, Python, it does not matter). It also does not matter whether we are talking about juniors or highly qualified developers: on the "assembly line" they can only perform their narrow specialized task and nothing else.

Bonus: the tester's place on the "assembly line"

  1. In an assembly-line approach, the tester always remains an outsider who never fully immerses in the project or feature.

  2. The code reaches him already finished and, most often, with minimal explanations: why the feature was implemented this way and why this solution is needed in the first place.

  3. For clicking through and running automated tests, there is basically no need to understand the situation in depth.

  4. Pure monkey business, mechanical work.

  5. It is no coincidence that the fictional company Primate Programming Inc., which once "offered" chimpanzee testers, did not raise doubts for many people. But let us get back to testers.

  6. Without understanding the situation, they will not be able to uncover issues in non-standard scenarios or determine whether a solution is sufficient or insufficient.

  7. Simply because they will neither know about them nor think about them.

Assess where AI can deliver impact in your process

Agile: when there is a goal

Agile takes a different approach to tasks

A flat team, such as ours, consisting of a SCRUM master, a project manager, and developers, where everyone except the mentor (the SCRUM master) is involved in delivering project value.

The whole team is also involved in testing: developers write tests for each other's code (cross-testing).

Does this mean that developers are doing low-skilled work?

Absolutely not

First, one developer does not just say it at standup, but actually reviews what others have done.

His job is less to find a flaw than to review the result of another person's work in the project. People who are in the context of the whole project make better decisions and are more aware of business goals and outcomes.

The team is fully involved in the project, makes more thoughtful decisions, and better understands how its work connects to the outcome.

A few words about lost time

As a rule, people have mixed feelings about testers

On the one hand, they are often seen as not-quite-developers who lacked the skills to become full-fledged engineers. On the other hand, they are the ones blamed when something goes wrong. Unspoken, unofficial, and not always, but the pattern exists. And it has a fatal impact both on the dynamics within the team and on the professional qualities of each developer.

The habit of having someone else clean up mistakes makes people lax.

Did not catch the issues himself

No problem, the tester will come and find everything there is to find. This implies something else as well.

Have you ever thought about how much time a developer loses to working with a tester? A lot, sometimes up to a third! How does that happen?

Code written by a developer is not tested right away: it waits until its turn comes up in the tester's schedule (time).

The tester runs the code through tests based on the technical specification and finds bugs, flaws, and issues (more time).

The task goes back to the developer. But he was not sitting around waiting for that to happen.

He has moved on to completely different tasks.

To fix the issues, he has to pull himself out of the workflow, reset, and re-immerse himself in the problem. And that takes time again, plus energy and nerves.

After fixes, the code goes back to testing, and the process repeats again and again until victory. As a result, the developer constantly switches back and forth between tasks and cannot properly immerse themselves in solving problems. What about multitasking? Multitasking kills the cognitive skill of deep problem immersion and leads to an inability to focus.

Quality without testers is not a myth

In Agile, code quality is addressed not only through cross-testing, which we discussed above.

There are many practices, including TDD, Agile testing, and the role of the SCRUM master in the process.

We will talk about all of this in future articles. Andrey

CEO of kt.team: "Strictly speaking, our developers are not coders but engineers.

Their level is such that they can objectively check both their own work and their colleagues' work through cross-testing. And even those who come to us from other paradigms adapt to our way of working relatively quickly.

A tester is not actually needed in an Agile team, only a quality mentor, the QA engineer. The person who regularly reviews the project and evaluates the completed work: presence of tests, speed of work, presence of incidents, and their type.

He is able to look at the task from a fresh perspective and conduct an audit

And not just identify problem areas, but take on the role of mentor and propose a solution. A QA engineer collaborates with all project teams.

He knows how each of them solves the problems that arise and can spread successful practices to other teams and projects.

Conclusion

We have worked closely with business for a long time

And we know one simple thing: the client does not care about the number of testers. And test cases themselves do not matter to them either. They want us to deliver a working solution to their business challenges. High-quality, flexible, transparent, and ideally in the shortest possible time. Agile delivers all of that.

When a developer sees the end goal and makes thoughtful decisions instead of simply "translating the technical specification into code"

, does not waste time on endless testing iterations through intermediaries, and the team reaches its goals much faster. Just as importantly, the developer's personal and professional growth also happens much faster. Solving tasks consciously helps not only improve programming language skills and expand the tech stack, but also build design, management, and business understanding skills, while better grasping other parts of the project.

Discuss the article: We manage without an army of QA: how the lack of...

Send via: