The Core Concepts of Agile Software Development, Particularly Scrum

In last month’s blog, we discussed Agile software development and why we think that it’s superior to the Waterfall.  Now we want to break down the core concepts, and delve into one of them in particular – Scrum. (And no, Aussies, we’re not talking about rugby).

The Dynamic Systems Development Method, or DSDM, mostly used in the UK, is probably the original agile development method. It existed before the term ‘agile’ had even come to pass, but is based on all the same principles we’ve come to know as agile.  

Extreme Programming (XP) is a more radical agile methodology, concentrating more on the software engineering process and addressing the analysis, development, and test phases with unique approaches that have a significant impact on the quality of the final product.

Scrum, a subset of Agile, concentrates on how to manage tasks within a team-based development structure.  Scrum is the most popular and widely adopted agile method, which is why we’re going to focus on it for the sake of this blog.  It’s relatively simple to implement and addresses many of the management issues that have plagued IT development teams for decades

Scrum is a lightweight Agile project management methodology with broad applicability of managing and controlling all kinds of incremental and iterative projects. It is one of the most widely used methodologies due to its ability to deliver the best performance. Over the last decade, Scrum has been revolutionized with significant investments of time and expertise.  It has garnered increasing popularity among software developers due to its proven productivity, its capability to act as a wrapper for a number of engineering practices that are promoted by alternative agile methodologies, and for its simplicity.

This methodology requires the use of development cycles known as Sprints. In software development, a sprint is a set duration of time during which specific work is to be completed and available for review. With Scrum, the owner of the product can work closely with the development team in order to identify and make a priority of the system functionality; this occurs in the form of a product backlog. This product backlog outlines non-functional requirements and bug fixes among other features, all of which are needed to deliver successfully a working software system. Priorities are driven exclusively by the client, or product owner, and cross-functional teams will estimate and sign on to come up with increments of the software created during successive Sprints. This process typically takes about 30 days, but all projects are different so take that statement with a grain of salt.

As soon as a Sprints backlog has been committed, no additional functionality can be included in the Sprint except by the team. Once it is completed and delivered, the product backlog is then analyzed and re-prioritized, if necessary, after which the next set of functionality is employed for another Sprint. This makes it easier to manage your product backlog. The overhead of the entire process is kept as minimal as possible in order to maximize the span of productive time available to get useful work done.

Scrum methodology has, for a number of reasons, been proven to scale up multiple teams across considerably large organizations with even more than 800 people. Its processes have enabled organizations to adjust fully and smoothly to the rapidly changing market requirements and produce products that meet the evolving goals in business. An agile Scrum process could benefit the organization in a number of ways:

•             Coping better with changes and expected evolutions in the field of business
•             Increasing the quality of available deliverables
•             Providing the project owner with more control on the schedule and its state
•             Providing better estimates while investing lesser time in coming up with them

That which distinguishes Scrum from other subsets of agile software development methodologies are the unique concepts and practices which are split into three categories: Artefacts, Time Boxes, and Roles.  Often Scrum is used in managing software and product development complexities. It increases productivity considerably and similarly reduces time to benefits relative to classic waterfall processes. (By the way, we'll be getting more specific about Artefacts, Time Boxes, and Roles in subsequent blogs).

Aside from the aforementioned benefits of the Scrum framework, there are other additional, more inherent advantages. Most importantly, Scrum provides a solid structure for the facilitation and promotion of team work. It can help the project manager to analyze the workmanship of the team or colleagues and potentially determining who is the most effective. The precise definition of roles allows managers to equitably distribute duties based on the skills of the developers without discrimination. And, this, ladies and gentlemen, makes Scrum a great option for any business that cares about output and performance.

Stop by next month when we delve more into the Roles aspect of Scrum - Agile software development. And, in the meantime, check out the services to see what our Nerdy teams can do for you!

Posted on April 21, 2017 and filed under Agile Development.