Home
Skills
Certificates
Blog
CV
Contact
Back to Blogs
Scrum; What? When? And How?
Prakhar Srivastava | May 12, 2024
The software industry, just like any other revolves around the efficacy of people who are creating and maintaining the product. Keeping this in mind, something called Software Development Life Cycle (SDLC) was created. SDLC outlines the major steps which are required to create, deliver and maintain any piece of software. These steps are, - **Planning and requirement analysis.** In this phase we research the problem statement and existing market conditions (competition, existing solutions etc.) along with setting up achievable objectives and estimating the resources required to achieve these objectives. - **Defining requirements.** This is when the analysts come into the picture and create well-defined functional and technical requirements for the developers to work. - **Designing a solution.** Having received the requirements, the team comes up with a set of possible solutions and creates high and low level designs to be later converted into working software. - **Building/Implementing the software.** After finalising the solution, development begins. The software is built keeping in mind all the coding standards and best practices. - **Testing the software.** Once the software is built, it then goes through multiple layers of testing. These may include but are not limited to Unit Testing, System Testing, Regression Testing, Acceptance Testing etc. Most organisations, which are moving towards automation testing, test the new software features developed manually at first and then integrate these test cases into an automation test suite. This makes testing the existing functionalities in future releases easier and quicker since no manual intervention is required to run these test cases. - **Deploying the software.** Once all the phases have been completed, we then turn our focus to make the newly developed piece of software available to the world. There are many ways to release any software however, most organisations are moving towards Continuous Integration and Continuous Deployment (a.k.a. CI/CD ). This assists developers to quickly deploy their features through a pre-created CI/CD pipeline. ![Source: GeeksForGeeks](/media/editor\SDLC_20240512115150070751.jpg) Over the years a vast number of SDLC models have been proposed to ease the software development process and ensure the delivered product is of appropriate quality. A few of the most popular models are listed below, - Waterfall - Iterative - V-model - Spiral etc. Each of these models has its respective set of advantages and disadvantages. The model which has become very popular over the past couple of decades is the Agile model. ###The Agile Model The Agile model aims at delivering working increments of a product, iteratively and by keeping client feedback at the centre of planning. Since the development span is short and fixed, this model further encourages collaboration and a quicker time to market as compared to the traditional SDLC models ensuring the clients get what they require and also leaving room to adapt to the changing environment. This model has been adopted by a vast number of organisations in the industry and many of them boasts being 100% agile and use it as a selling point to the clients (it certainly is). ###Alright! Alright! But what is Scrum? Scrum is a lightweight framework which puts the ideas mentioned in the Agile model ([read manifesto](https://agilemanifesto.org/ "read manifesto")) into action. - It is based on *empiricism* (making decisions on the basis of what has already happened) - *iterative* and *incremental* in nature - it targets delivering *increments* within fixed time intervals called *Sprints* - it aims to solve *complex problems* through *adaptive solutions* ###Elements in Scrum Scrum has, - Three Accountabilities (Scrum Master, Product Owner and Developers) - Three Artifacts (Product Backlog, Sprint Backlog and Increment) - Five Events (Sprint, Sprint Planning, Daily Scrum, Sprint Review and Sprint Retrospective) Scrum is said to be followed in its entirety only when all the mandatory elements listed above are incorporated. If we leave out any, the result is not Scrum, but a derivation of it. ![Scrum Elements](/media/editor\Scrum_Elements_20240512115904195339.png) ![](/media/editor\Scrum_Events_20240512115931035758.png) ###Scrum Values ![](/media/editor\Scrum_Values_20240512115957360726.png) There are five Scrum values which should be inculcated in every team member, - **Commitment** towards the Sprint Goal - **Focus** on delivering the planned items as a team - **Openness** to convey the good or the bad to the team - **Respect** other team members as independent and capable people - **Courage** to do the right thing, working on complex problems ###Scrum Pillars ![](/media/editor\Scrum_Pillars_20240512120017879688.png) The three pillars on which Scrum rests are, - **Transparency:** All the work should be visible to everyone. - **Inspection:** Inspecting the artifacts to plan/re-plan the upcoming work. - **Adaptability:** Adapt to the changes as required. Scrum values and elements (accountabilities, artifacts and events) are the tools to realise these Scrum pillars. ###When to Implement Scrum? It depends. If you look closely, Scrum asks us to perform the SDLC activities in smaller intervals. This takes the product to the market in a shorter period of time. The product is then enhanced incrementally to meet the new requirements over subsequent Sprints. It also allows the team to adapt to changing requirements and environment ensuring, the next product increment can be delivered no later than by the end of next sprint (provided the changes can be accommodated within a sprint). Scrum can/should be implemented when we, - have to deliver frequently - are unsure about the entire feature but know enough to build a smaller version - do not have a proper process in place for feature development - have had issues while prioritising features in the past - have had issues while estimating the tasks in the past (development efforts and timelines) - have to accommodate new/updated client requests (Client checks with Product Owner; The developers have the final say whether to take them up in the current sprint or defer them to the upcoming sprint/s) ###How to Implement Scrum? Well, it’s not that straight forward and it certainly can’t happen overnight. It’s a transition that the entire team (in some cases the organisation) has to make. Here is a way, in which we can implement Scrum, - Hiring a Scrum Master. The Scrum Master is mainly responsible for, o Creating awareness about Scrum in the team and/or organisation o Teaching the team and/or organisation self-management o Removing any impediments which the team may encounter o Ensuring each accountability understands their respective responsibilities - Outlining and allocating accountabilities (1 Scrum Master, 1 Product Owner and 7-10 Developers) - Setting up Sprint Events - Finalising the Sprint length (once fixed, never changes) - Setting up a feature tracking system (Any project/software management tool) - Setting up a central repository for maintaining the artifacts which should be visible to all the stakeholders and the Scrum Team (such a tool is usually bundled within the feature tracking system) - Creation of a Product Backlog containing all the features prioritised by the Product Owner, on which the developers have to work Well that’s pretty much it. Once we have all of the above in place, we are all set to have our first ever Sprint Planning🤘. Another approach to implement Scrum could be adopting the practices which are most-suited for your organisation. The result would not be Scrum, but a derivation of Scrum. In fact, this is a very common practice in which organisations blend Scrum with one or more other processes, creating a hybrid framework. However, just as we do for each feature in the Scrum, we can iteratively and incrementally keep adopting Scrum practices in the organisation until we have implemented Scrum in its entirety. To conclude, Scrum is one of the most effective ways to manage the work at any organisation. It works well with small teams and in environments where frequent changes can occur. If you want to deploy changes at a high frequency, Scrum is definitely the way to go. If you wish to explore more about Scrum, here is a link to the official [Scrum Guide](https://scrumguides.org/ "Scrum Guide"). Thanks for reading 😊.