Waterfall Agile High! High-Level Overview
Which came first, the chicken or the egg? Hard to say, my friends, but I can give you my perspective on the matter from a QA point of view.
The traditional methods of the waterfall enterprise have failed. The only way for organizations to move from the depths of creative doubt to offering repeatable, high-quality assurance is to embrace the new agile way, a combination of planning, innovation, risk management, and delivery. If you don't, you'll fall into the old waterfall trap of running into risk and not protecting your enterprise from it.
Brave new world!
Quality assurance in agile or agile-like projects has become an important, though not yet fully understood, topic.
If various stakeholders experience disruptions in development, including testing, changes to the project schedule or scope, or changes to the requirements and design of a system or service, they should become aware of the root causes of these issues. Developers can become disappointed with the project, especially when that project begins running late or fails to meet its original schedule, to a degree that can be seen as detrimental to the morale of the organization. It is very hard to keep the wheels on the road if you have been driving for some time. That same logic applies to Agile, and it is a big challenge to keep it from mutating to a hybrid-like agile-waterfall state. On the other hand, the meaning of the word “agile” generally is, perversely, not the same as the "Agile" in Agile Methodology. There seems to be a misunderstanding here that adds to the confusion when projects stall.
Agile in agile methodology actually means that we do have methods and procedures in place that the team needs to adhere in order to follow that methodology and not get lost in it, keeping the project on track. So, the main thing here is communicating and educating, letting the team know what happens in agile development, and what procedures and methods are used during the software development life cycle. (SDLC).
Does size matter?
Assuring quality during software development projects has become a frequently adopted goal by organizations that value innovation, risk reduction, and continued productivity of their development team.
The quality assurance team is often a smaller part of a larger software development organization. A QA team should be small enough in order to obtain a high level of operational efficiency by adopting a hands-on work approach, avoiding unnecessary activities with a few key resources, and tight discipline. When choosing the number of people that will form a QA team, it is important to examine a few aspects, namely, the ratio of productive resources and the allocation of QA time relative to the requirements of the project. To form a quality assurance team, one would typically hire QA engineers for each of the software development aspects (e.g., front-end, back-end).
However, the value of a QA engineer increases when he or she can be paired with another engineer working on similar aspects of the software. The QA team might be further strengthened by adding domain experts to create a team of highly specialized, task-focused engineers. As stated above, quality assurance is best done by QA engineers, because they typically have a lot of knowledge and experience in the domain of software development with scrum and agile methodology with checks and balances along the way. In addition, QA engineers also bring the experience of working within a defined work environment and of optimizing their time by understanding the scope of the project. Various companies provide QA-as-a-service in which QA engineers can provide testing and quality assurance services, leveraging existing software development infrastructure. This approach can be beneficial for companies that do not have their own QA team, or that are too small to employ QA engineers in a full-time capacity.
Software engineering is becoming more and more complex with time, especially in fintech, and similar sectors. For example, software that analyzes credit card transactions could require millions of lines of code.
Given this complexity, software development activities can either be performed by in-house engineering teams or by an outsourced company. Both of these offer much of the benefits of having a quality assurance team, but an outsourced company may not have the knowledge, communication with the client or help from experienced developers working on the project to support the complex in-house software development projects they are working on.
On the other hand, outsourced companies typically have less overhead for hiring engineers to complete the testing and can afford to hire people with specific skills to complete the testing and QA processes without concerning over the high cost of an engineering team or the need to reduce the amount of testing necessary to maintain a high level of quality.
Subscribe to our newsletter
We send bi-weekly blogs on design, technology and business topics.