Recently, the Agile methodology of software development becomes more and more popular. Not only does a small group of software engineers found it useful for rapid software development but also the big companies tried to apply instances of this methodology for their projects. Why do big companies take these tires? What is happening to their QC Specialists? And what should a fresher QC engineer prepare for their start-up? I am writing to share with you about my viewpoint on this circumstance.
Market changes, product changes, company changes
The trend of the software market is decreasing in a time of distribution. The faster working product is delivered to end-user, the higher chance company takes the bigger market share to success. Therefore, software engineers and engineer managers have less and less time to develop their product. First, to concentrate on building product with codes, they make significant shifts on the level of detail in requirements, then designs, and testing. Together, all of these shifts resulted in a great change of software development process. The team size is reduced to ensure better direct communication and save time. The meeting is shortened and only focus on problem awareness and r (not a solution in details). Referential and controlling documents are reduced not only in volume but detail levels as well…. Fast or gradually, companies change their organizational structure and operational method. So that, engineers face undetailed requirements, high-level design, and challenges in quality controls.
Cross functional team: “QC” versus “BA”, “DEV”
Since development, coding in tactical view is more and more concentrated, the developer is expected to ensure their work quality in details; product owner, who involved in the team, ensures the acceptance of product releases, it would seem that we do not need a QC Specialist in the team. Let’s have a look on traditional QC role’s task. QC is expected to carry out static and dynamic testing activities. These activities are reviewing code, documents, define test plan, decide test case, develop and execute test scripts. One by one, we can see that some task is eliminated, not required high detail level or could be covered by another team member, for example:
A high-level test plan can be created by a collaboration of team leader, product owner, and may be a developer. They are expected to “play” with the software.
High-level test case could be derived fast from use cases at a high level by team leader collaborating with developers and product owner.
Low-level test code could be developed by developer role.
Every member can execute test!
Is there any room for QC Specialist in this kind of team? Luckily, the answer is yes, but it’s not absolutely like the past.
Experience, mindset, viewpoint and advanced testing technique of QC Specialists are so valuable in the team to ensure the product quality. However, “QC Specialist” title may be just a nickname of a team member. Low testing technical required tasks of traditional QC Specialist are shared among the teams, while this team member is expected to be proactive in remaining QC related task in volunteering time. Not only does this member aim to take these tasks but also he/she required to have a number of built-in skills from traditional Business Analyst, Software Developer role, such as understanding and clarifying requirements, develop software interface, create stubs and drivers in a mindset of testing driven software, and so on.
Software engineers who balance both coding and testing skill are rare and high cost. It is more practical for current traditional QC Specialists, especially in Vietnamese, to develop themselves to become a hybrid engineer of QC plus BA and/or Dev. under the new configuration of required skills. And in details, what are these skills?
Next generation of Quality Controllers in practical Agile:
The new never means to absolute negating the old. Most of the new that work well inherit many valuable properties from the ever good old one. So does a new type of QCs. New QCs who is expected to play quality control role in Agile, of courses, are as good as traditional QCs at testing techniques. These mandatory techniques are: from a test plan, design test cases, design test script, implement and carry out the test. The better these skills are, the more value new QCs contribute to the Agile team. Traditional or even new developer rarely satisfied these requirements. This is the first value of test specialized Agile team member. However, this team member does not carry out only test related task as in the traditional team.
Agile aims at smarter working style, not harder working style. This implies that traditional skills, first, must be sharpened at an appropriate level, then be used in scientific ways which eliminate all unnecessary efforts at the live time. The remaining efforts of new QCs are expected to use for other valued activities, eg. analyzing user stories/features ... They may not create and work with formal complex documents, but their documents are also ensured just detailed enough to be useful and traceable. So we can see very clearly that there are things that increase and decrease related to QCs in Agile. Task ability and performance effectiveness of QCs are required to increase. Formal & detail level of task, documents are expected to decrease. Very easy for us to understand why a good worker does not need to be surrounded by heavy aids. What they need are lighter and more effective tools.
Again, to become new, there are many of new skills for QC him/herself to plus to their skills box. These should be:
• Critical thinking skill to see whether what they are doing is valuable.
• Higher effective direct communication skill to see the issues and help the whole team as fast as possible (required the foreign language, body language, emotional intelligent ...).
• Technology ability, especially system designing. A test driven product could not be well-designed without help from experienced QCs in Agile.
• Coding (need to be further discussed level requirements and type).
Finally, all of the improvement or transition from traditional QC Specialist into test specialized Agile team member required a changed in the mindset of the man in that shoes. Mindset, combining awareness and attitudes, maybe:
• Open to changes, dare to take challenges
• Enough -> add new users, not more useless self-motivate, non-stop work optimization thinking to be friendly, understandable, responsible.
So, how to prepare for this? I cannot answer this question thoroughly. I am thinking of teamwork enhancement workshops/events/training, personal development programs, appropriate technical courses, career roadmaps, career road-map based mindset, and personal dedication to the career.