Drag

Advancements in Project Management

Plan, Execute, Test, Iterate, Succeed!

Breaking the Software Development Tradition


Traditionally, software development has used a “waterfall” method which follows a rigid process working through required steps. These include gathering, design, implementation, verification, and finally a long-lived maintenance phase. Each phase must be completed before the next phase may begin.

The waterfall approach comes with various disadvantages including “interminable up-front planning” [Loukides] and rigidity that even with extensive planning still “does not cater for the possibility of requirements changing” [Hughey].

Additionally, vendors in some clients’ experience may have been unclear with their development plans and/or unwilling to develop test plans to ensure all project requirements are met. Fresh iterations of software have had slow turn-around time due to non-standard deployment processes.

A Revolutionary Approach


The DevOps methodology is the best approach to deliver software that meets market needs. DevOps is a team culture that “seeks to improve collaboration between operations and development teams” [Gartner]. The use of DevOps improves client satisfaction at all stages of software development, increasing communication and transparency while, decreasing turn-around time for deliverable iterations of code. Developed test plans for acceptance criteria ensure client needs are met and potential areas of improvement are continuously monitored.

There are multiple definitions for the steps involved in the DevOps cycle as the concept is flexible depending on the needs of a development team and project. The core steps common to any DevOps practicing group which together form a prosperous cycle are:

outsourcing

  • 1. Plan - Stakeholders and the development team plan features, bug fixes, and adjustments toward a new release.
  • 2. Develop – Software developers, system engineers, and other implementors collaborate to build necessary changes to achieve the release’s planned requirements.
  • 3. Integrate – As code is being developed, software is continuously integrated (merged) in with existing code in a central repository where automated builds and tests are run.
  • 4. Test – Prior to packaging code for deployment, test plans are executed. Feedback is shared with the development team and adjustments are made as necessary.
  • 5. Release – Following all tests passing quality assurance, a production-ready release of the project’s code is built.
  • 6. Deploy – The release from the previous step is deployed to production.
  • 7. Monitor – Immediately following production deployment, the software is monitored to ensure stability and continuity of operations. Feedback may also be gained for use in the next planning step.

DevOps Expertise Varies Across the Industry


The "State of DevOps 2021" survey [Google] of over 32,000 software development professionals shows the stark differences between vendors using DevOps practices and those who don’t. In the table below (partially reproduced from the report) we see:

  • Deployment frequency - how often code is delivered
  • Lead time for changes - time between code being completed and deployed to production use
  • Time to restore services - length of time to recover from an outage
  • Change failure rate - how often code deployments must be rolled back
Software Delivery Performance Metric Elite Expertise Low Expertise
Deployment Frequency Multiple deploys daily Less than 1 every 6 months
Lead Time for Changes Under 1 hour Greater than 6 months
Time to Restore Services Under 1 hour Greater than 6 months
Change Failure Rate 0%-15% 16%-30%

Vee Healthtek, DevOps Elite Expertise

Clients and end users expect that software will be shipped frequently and on time. In 1991 when Linus Torvalds started development of a computer operating system, the Linux kernel, he chose to implement rapid release cycles and gather feedback often. This was against the norm of the time where typically only large, long development window deliverables were shipped in a practice called "cathedral building" [Raymond] and feedback was sparsely collected.

With small and frequent releases enabling rapid gathering of feedback (which in turn helped plan future development direction), the Linux kernel grew rapidly into an in-demand operating system. Today, billions of devices use the Linux kernel and Torvalds’ early insight into the power of rapid development has become mainstream and a core tenant of DevOps.

Project documentation is another important part of a successful DevOps strategy. Strong documentation helps onboarding new development team members to a project and aids in tracking the myriad of intricate details the team needs to continue progressing. Transparency in testing procedure documentation also helps ensure client satisfaction with the delivered software and, in turn, reinforces project security, reliability, and better utilization of cloud resources [Google, page 21]. The impact of good documentation is felt throughout the entire DevOps cycle and is a great place for everyone to contribute.

Conclusion


Software development is an ever-changing art form. Thousands of combined years of professional engineering have brought us to the evolving DevOps cycle which itself is refined and tailored to the needs of each practitioner. The question is no longer why use DevOps? But why aren’t you?

All efficiencies gained by Vee Healthtek’s use of DevOps are enjoyed by our clients with fast iterations, feedback acknowledged and implemented, with transparency into the process.

The success of a DevOps implementation is meeting the client’s needs and together we will achieve extraordinary outcomes.

outsourcing

Works Cited:

Gartner – Information Technology Glossary
https://www.gartner.com/en/information-technology/glossary/devops

Google - “State of DevOps 2021”. Chart partially reproduced from page 9.
https://services.google.com/fh/files/misc/state-of-devops-2021.pdf

Hughey – “Comparing Traditional Systems Analysis and Design with Agile Methodologies”
https://www.umsl.edu/~hugheyd/is6840/waterfall.html

Loukides – “What is DevOps? What we mean by "operations," and how it's changed over the years.”
http://radar.oreilly.com/2012/06/what-is-devops.html

Raymond – “Release Early, Release Often”
http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html

Wikipedia – Devops-toolchain.svg, Creative Commons Attribution-Share Alike 4.0 International license. Step terms edited from original graphic.
https://commons.wikimedia.org/wiki/File:Devops-toolchain.svg