Thoughts on Continous Software Engineering
Published:
The Software Development Process has developed a lot from 90s, from buying a software CD/DVD to receiving software updates almost every day, from waterfall model to agile development and now to Continuous Delivery, which remodelled the system of product and application production.. As a result, faster results have become the pinnacle of delivering at the speed which the market demands. However, as this system accelerates there is extra pressure on teams to keep up with the speed and also maintain the quality in parallel. Here are the few thoughts on what can be done to maintain quality while increasing the gears of software development and deployment.
Security and Privacy has always been one of the main concerns in a software, especially recent years of producing oceans of data. So, security aspects should always be as important as development, that’s where DevSecOps come into play, the active research area of developing tools to automate as many processes as possible in the development to have time to focus on non-functional requirements such as security and privacy. Traditionally, security teams were isolated at the end of the line of the development process. DevSecOps is a shared liability that is integrated from the beginning of the cycle to the end. With this approach to security, several security gates are automated so that the DevOps operations can continuously flow. By doing this, software development companies can maintain a consistent experience in the development process and a more efficient customer experience. The end-users can get updates faster, secure their data, and provide a swift technological solution with minimal to no lagging.
Using Data to our advantage whenever possible generated to a process called AiOps, which typically means to use AI/ML techniques during the phases of software development. The main aim here is to reduce human effort during this process on the questions which can be solved with data. Projects like Sankie by Microsoft Research are available in this regard (I wonder if they used Sankie while developing Sankie ) This method does reduce load on the teams but it does have trade-offs such as these AI/ML techniques are prone to errors and haven’t reached human level of decision making yet (hopefully in future it may)
No matter how good the automation system is and the efforts to reduce time in the software development cycle, the communication between the teams is the key, this doesn’t mean that every team member has to have talks with every other team member of their work but its all about the collaboration and the culture of the team, In DevOps, the development team and Operations team should have the mutual collaborative effort on their common goal. The ideal results of this accelerated process are achieved with the ideal team where every member makes their strokes of colour in creating this masterpiece of a painting.
References:
- https://www.agilealliance.org/resources/videos/continuously-deploying-security-laurie-williams-xp-2018/
- https://www.microsoft.com/en-us/research/lab/microsoft-research-india/articles/podcast-can-we-make-better-software-by-using-ml-and-ai-techniques-with-chandra-madilla-and-chetan-bansal/
- The Key To High Performance by Nicole Forsgren, GitHub