Written by: Roei Dubnikov, Project Manager
As a Project Manager, I have worked many years with Agile & Scrums, and at the last few years also with DevOps. The following is my POV as it relates to: “Agile … Scrum … DevOps … Project Management Evolution”.
Agile is the Approach (Methodology), Scrum is the Process and DevOps is the natural extension for continuous delivery methods. Henceforth is the Evolution process which has led us to present situation.
Agile is a term used to describe a general approach to software development. All agile methods, including Scrum, emphasize teamwork, frequent deliveries of working software, close customer collaboration, and the ability to respond to changes quickly and effectively.
Scrum is one of many within the “agile set of processes”. You can think of agile as an umbrella term that encompasses several processes such as Extreme Programming, Adaptive System Development, DSDM, Feature Driven Development, Kanban, Crystal and more.” – see Link
The “Manifesto for Agile Software Development”, is a set of statements including 4 values and 12 principles, which intend to help professionals to embrace the Agile mindset. The 4 values are a guide of how to think about one’s work, while the 12 principles provide the guidelines.
· Principle 2 is about Welcoming changes
· Principles 3 & 7 are about continues software delivery in weeks as a measure of progress
· Principle 4 is about customer working close to the development team
· Principles 5 & 11 talk about motivated self-organized teams
· Principle 6 describe the importance of face-to-face conversation.
· Principles 1 & 8 & 9 & 10 start to introduce you the idea of prioritizing high value work.
· Principle 12 encourages the team to meet frequently to discuss process improvement.
These guidelines are used to define the Agile Processes (link to Manifesto)
One of the major concerns is how to Reduce multitasking to have less context switching, hence enabling more time for Development. Reducing multitasking is one of the original ideas behind the Agile framework, and it is dubbed “Scrum”. Scrum is the most popular Agile Framework.
The Scrum is a lightweight skeleton for speedy-software-development, applying fast, 2-4 weeks’ cadence, with the focus on delivering working software. In other words, short-term work plan instead of long-term planning.
The Scrum team roles are Product Owner (PO), Scrum Master and the team members.
Product Owner (PO) is the Business Representative, the Decision maker on business requirements and their priority. He/She is in charge on verifying that the team delivers exactly what the business organ expects, by creating the best use-cases/user stories. User Story is a short description of a feature that is described by using the professional language and application culture of the customer.
Scrum Master, is an expert at the Agile framework (Scrum), who guides the team and PO on Scrum practices and guides them toward maximized performance. He/She helps to facilitate Scrum to the larger team by ensuring the Scrum framework is followed, and committed to the Scrum values and practices, while remaining flexible and open to opportunities for the team to improve their workflow.
The team, is made up of members who incorporate all the technical skills needed to fulfil the programing goals.
Scrum consist of 5 events and 3 artifacts. The events are repeated on a cadence for the life of the work cycle, and the artifacts (or documents) are also used throughout the life-cycle of development project.
The Events (Roles)
Sprint (delivery in shorter iteration), is the time box (usually 2 weeks) for the team to designs, builds, develop and test the work. Each Sprint has a goal, defining what should be completed and delivered at the end of the Sprint.
"Sprints make projects more manageable, allow teams to ship high-quality work faster and more frequently, and gives them more flexibility to adapt to change." see Link
Sprint planning, is an event in Scrum that defines what can be delivered in the upcoming Sprint and how that work will be achieved, the PO presents the most valuable work to be done. The PO and team negotiate and the team commits to complete that work.
Daily Scrum (standing-up) meeting, 15 minutes Daily meeting, Team provides updates and daily plans and raises issues (blockers) at their user stories. Daily Scrum is one of the fundamental components of agile development.
Spring Review, Team and PO share what was built to stakeholders (demonstrating the hard work of the entire team). It occurs after every Sprint. It’s a time to ask questions, try new features, and supply feedback.
Sprint Retrospective, Teams examines its practices and identifies improvements, by looking at processes and tools, making changes and improvement to their teamwork (continues improvement of the Scrum Teams).
Agile Scrum Artifacts:
Product Backlog (to-do-list), complete list of everything that could be done for the project. The list contains more than can be accomplish and the PO prioritizes continuously to ensure that the most valuable items are always at the top.
Sprint Backlog: Items the team committed for the current Sprint.
Product Increment: completed work from the current and previous Sprint, which is ready for delivery.
On top of the 5 events and 3 artifacts we have the items below, which are added over time:
Actions for Successful Sprint – Daily planning, Daily collaboration, focus on completed tasks (frequent Demos), Measurements.
Distributed Scrum: A Scrum team that is either fully or partially remote. In order for a Distributed Scrum team to be successful, new approaches for adoption of Scrum need to be implemented.
Scrum of Scrums: This is a scaled agile technique that offers a way to connect multiple teams (Scrums) who need to work together to deliver complex solutions. To support this, team sizing is critical. When multiple teams are created to deliver a common objective, coordination is needed. This spawned the need for Scrum of Scrums. A Scrum of Scrums is a virtual team consisting of delegates with embedded links to the originating delivery teams.
At many companies the Scrum agile methodology of Sprint every 2 weeks changed to having updates delivered every day and even few times a day.
Software project consist teams of Developers writing the Code (Dev), Quality Assurance review the code (Dev) and Operations for set up the network (Ops), push code into a server (Ops), verify of security (Ops) and performance (Ops).
The Conflicts between Dev and Ops called “The wall of confusion”: Software engineers modify the product to provide values to users while Operations ensure the product is reliable and stable.
DevOps is tearing up the wall of confusion to allow Continues Delivery of new features to Production. It’s a practice that aims at merging development, quality assurance, and operations (deployment and integration) into a single, continuous set of processes.
The “DevOps Team” or “Continues Delivery team” performs during the “Sprint” the Plan, Code, Build, Automated Tests, Release, Deploy, Operate and Monitor.
Software Engineers commit code in small chunks several times a day (Code-Build), while Quality Assurance engineers test newly committed code with Automation tools – Code with bugs send back to be fixed (Automated Tests), code which pass automated test integrated into a shared repository and Released to QA for testing (Release). If it was found as having “no issues”, the code is Deployed on the public server (Production) to be Operated and Monitored for fast reaction and feedback (Plan). The same is done repeatedly and continuously, in order to help improve product delivery.
DevOps supposed to change the team’s mindset to allow more frequent code deployment, faster lead time from commitment to deployment, faster recovery from incidents and lower change failure rate.
To summarize, we have Evolution in the Software tools and products, which requires the Software Companies to rethink and restructure the Project Management Mindset.
I would be very happy to hear from you, comments, feedback and suggestions are welcomed.
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity–the art of maximizing the amount of work not done–is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.