Software development lifecycle has come a long way from a linear sequential design approach to an incremental and a much efficient one. The journey from the waterfall model to a more agile meant the teams involved also had to adapt themselves to the changing demands and arrangements. A typical development process involves phases such as requirements gathering, designing, coding, testing, and implementation-deployment phases. All these phases involve different teams based on the functionalities such as project/product management team, business analysts, UI/UX teams, developers, testers, operations team, etc. In the earlier SDLC models like the waterfall model, there was a clear line separating the functional teams with clearly defined responsibilities. The product management and the business analyst teams define the product requirements, product discovery, create business requirement document (BRD), product requirement document (PRD), and analyze the possible solutions to customer requirements or problems. The development and architect’s team along with the designers try to understand user aspects, architecture and create high-level design (HLD) prototyping. They are the ones who decide technologies to be used, number of resources to be used, delivery timeline, and the budget for technical and human resources. Developers start the actual work based on data provided by the predecessors and develop algorithms and source-codes. Compilation and debugging are final steps in the development stage. QA and testing team is involved in the debugging process. Finding bugs in the code, documenting code analysis, and passing collected information to developers to fix and repeating this until the workflow is stable is what they are made up of. Once testing and development phases are completed, deployment is done and the product is finally made ready for end users.
Okay, everyone from software industry is aware of this flow then why am I highlighting it here? This culture of teams working in silos had some advantages like reduced time and cost but more than that it had drawbacks such as less flexibility to changes and adjusting the scope and the whole testing and re-development process, even though looked simplified was more time consuming and was prejudiced in a way that you cannot make any dynamic changes. Any dynamic change meant a completely new product altogether.
Changing roles with Agile and DevOps
Solution to this problem was very simple, a more agile approach and implementation of DevOps like practices. Most of us have already adopted and started ripping benefits from it. Teams working hand-in-hand instead of silos, and by teams, I don’t mean only Devs and Ops but all teams, will make accommodation of dynamic changes and post or mid production feature additions a hassle-free thing.
Changing models of software development compel teams to be crafted as per goals, timelines, number of sprint cycles, deliverables, and in optimum utilization of available resources. This will demand more out of teams and will result in a more synchronized way of operations. Agile and DevOps are two different things but the end goal and the means to achieve both have changed roles of many teams involved in different development phases. Developers have a lot to offer in all phases, which means they have more power to change the way of operations. And with great power comes great responsibility. Developers have widened responsibilities now more than ever that extend from requirements analysis to deployment. While your business capabilities teams are working on making the product more reliable and of better quality operations teams can focus on synchronizing and optimizing time and efforts.
Increasing importance of testing teams and security
When DevOps came into play, QA and tester community feared the worse for them with automation and feature-rich toolsets it brings in the picture. But now they have started realizing the actual thing that suggests a completely different picture as to what they had imagined. Testing teams are now considered a very important aspect in almost all stages of development. QA team and testers are now supposed to be the think tanks that actually think from end-user's perspective. They are the ones who can test the application right from the start with requirement testing, UI/UX screen testing, development testing, behavior testing, integration testing, manual testing for a newly added feature to acceptance testing in the last phase of product release and end-to-end testing to validate user expectations in all areas of the application.
Rather than testing a code written by developers and suggesting changes or finding bugs, they now start writing test cases and scenarios simultaneously with the development team working on coding part. DevOps tools are enabling them to automate test cases and spend more time on the product as a whole, maintaining quality throughout development, introducing more and more automation options for continuous integration and continuous deployment and most important of all the security. Instead of thinking about security in later stages of development, testers can make sure there is enough attention paid towards security aspects of the application from start. In fact, they are the ones who can start continuous security practices like continuous deployment and integration. Starting with the security of applications or web interfaces to admin logins. This means applying security at application, infrastructure, and pipeline simultaneously and this can be done with Test Driven Security, which is just like Test Driven Development where testers help write tests with the desired level of security first before the actual development starts.
DevOps and Agile methodologies are demanding more out of your teams and at the same time processes such as continuous integration and deployment are creating a synergy between different teams. More involvement from your DevOps and TestOps teams in all the steps is only going to augment the quality of delivery. At Opcito, agile and DevOps methodologies are helping us speed up application delivery process with automation, eliminating risks through continuous security, and enhancing user experience.