Agile Software Development - The Radial Way
Agile software development has gained popularity since it was imagined at the beginning of the new century, becoming a staple of nearly all serious software project management conversations in the past decade. Generally speaking, it is a process that puts focus on customer collaboration throughout the development process, rather than on the large monolithic project contracting that is typical of paradigms including the Rational Unified Process. Agile expects mid-project challenges and pivots, and responds by creating a framework in which development is introspective and responds to stakeholder needs, as opposed to the increased burden and cost of change order sales processes.
In an agile world, product success is a moving target. It is often impossible to properly anticipate customer needs prior to deploying software to them. The best-guess planning typical of many waterfall-based management paradigms are frequently sources of project-imperiling risk. Agile seeks to minimize this risk by creating a project flow that limits the rigidity of a project plan, and insists on short development cycles and regular customer feedback.
Radial implements agile by emphasizing small, easily defined and delivered tasks over giant, monolithic features. We break large features into a series of discretely-defined small tasks, which can be built and delivered as a series of specific features.
We work within a framework of two-week development “sprints,” each of which begins with a collaborative discussion with stakeholders and developers, called a “grooming.” Each sprint ends with a similar discussion called a “retrospective.” The grooming allows us to consciously ensure that the work we are starting is the work that can make the most impact for our clients. The retrospective addresses challenges, allowing actionable feedback to define immediate next steps, successes to be reinforced, and a culture of ever-increasing efficiency to develop on the project.
During our development sprints, we use a set of additional practices designed to ensure that our work is effective and contributes positively to the project as a whole. We insist on Test-Driven Development (TDD), a practice that requires the creation of automated feature tests prior to creation of software instructions to accomplish each feature. The benefit of this is two-fold: first, it enables us to create an empirical definition of feature completion. Secondarily, it enables us to ensure that new feature development does not create regressive side effects.
Radial also utilizes the Agile practice of daily “standup” meetings. In these meetings, each member of our team takes a minute or two to discuss the work they are doing, as well as to highlight any challenges or blockers, that are affecting their abilities. These meetings help establish our culture of active, continuous communication, helping ensure our ability to deliver our work on our promised schedule.
Following a development sprint, the retrospective meeting may be the most important feature in Radial’s agile practice. Inevitably, software development efforts run into unforeseen challenges, and mistakes get made. We believe that mistakes are best seen as learning opportunities to become more better and more efficient for our clients. The retrospective enables us to identify inefficiencies, successes, and opportunities, refining the software development process to become ever-improving.
At Radial, we believe in defining success, breaking large challenges into small opportunities, defining success, automating and measuring everything we do, and constantly applying the lessons from our efforts, all to enable us to deliver the best to our clients.