Project management, Agile, DevOps, and SRE
Organizations put a lot of effort into minimizing the waste of time and money in projects since both are frequently scarce. Being able to anticipate bottlenecks and blockers can help reduce the chances for a project to fail.
And it is here that project managers become the key players. Among other tasks, they are responsible for identifying stakeholders, dividing the work into tasks, assigning times to each activity, and following up to ensure that everything is completed on time.
Traditional project management used the so-called waterfall methodology, which divides a project into different steps that are completed in sequential order one after another: requirement gathering, design, implementation, testing, and maintenance.
However, there can be projects that may run for much longer than planned due to different reasons – for example, wrong or incomplete initial assessments leading to undetected dependencies, or never-ending tasks that block others.
Also, projects managed using waterfall methodologies are more rigid in terms of features. As these are defined in the initial phases, any changes due to unexpected reasons, such as a feature not being needed anymore or becoming obsolete, could derail the project.
Project management has evolved and one of the most common practices to reduce the risk of long delays is to split the project into different phases of incremental complexity, also known as sprints, while following an iterative approach instead of a linear one. These practices were introduced in more recent methodologies, such as Agile, which aim to speed up the progress of projects and offer tangible results as soon as possible.
In Agile and similar methodologies, a Minimum Viable Product (MVP) can be provided after completing just one or a few of the initial code sprints; then, the team will work on improving it using an iterative approach that adds new features and capabilities. It fixes any found bugs in each new sprint until the project meets all the requirements and is then considered to be finished.
The following diagram summarizes the different phases for each sprint:
Figure 1.5 – Agile development phases
Agile is a project management methodology aimed at getting an MVP ready earlier, but it needs a compatible process on the development side to ensure agility. And here is where DevOps comes to the rescue.
DevOps is a set of practices that aims to increase the software delivery velocity, improve service reliability, and build shared ownership among software stakeholders. Many organizations use DevOps to complement Agile project management methodologies and reduce the lead time – that is, how long it takes for a team to go from committing code to having code successfully deployed and running in production:
Figure 1.6 – DevOps development cycle (source: https://nub8.net/wp-content/uploads/2019/12/Nub8-What-is-Devops-1-min.png)
By implementing DevOps, you can improve a lot of your development metrics by increasing the speed of your deployments, reducing the number of errors in these deployments, and building security from the start.
These methodologies are very interesting for developers, but agility can only be achieved if the underlying infrastructure components are also compatible with fast deployments. For example, running short and fast sprints will not make sense at all in a platform where virtual machines are provided no earlier than 3 days after being requested and databases after 5 (and I have seen that happen, I promise).
An environment that can help you speed up all your processes is the best option, not only for developers but for everyone involved in IT projects. As we’ll see shortly, the cloud is an extremely good option if you use Agile methodologies, are a big fan of code sprints, or want to implement DevOps in your organization.
And if DevOps helps automate deployments, SRE can also help in a later stage by automating all the manual tasks required to keep your environments up and running, such as those included as part of change management or incident response processes. And guess what – the cloud is a great place to implement SRE practices, too! To learn more about SRE, visit https://sre.google/.
If you are new to concepts such as Agile or DevOps, you may still be wasting a lot of your precious time as a developer doing the wrong kind of things. You should be spending most of your hours on innovating, thus contributing to the Digital Transformation of your team and the whole organization. We’ll use the next section to explain what Digital Transformation means and why it is really important and should be appropriately prioritized if it hasn’t been already.