Our Focus: Plan - Deliver - Validate
Software development is difficult in ways that other types of engineering are not. Civil engineers build roadways designed to serve people driving cars. Architects design buildings with well-defined uses and building codes.
Software is often unfettered by parameters constraining a user’s decisions. And human assumptions – which may be off-base – dictate strategic and tactical plans.
Many software projects fail completely because incorrect assumptions in planning are immutably baked into the final project. Put more plainly, project owners asked developers to build the wrong thing.
As a result, software project management, since the early 2000s, experienced an explosion of management paradigms. While 20th century development often focused on monolithic statement-of-requirement-oriented waterfall project management, software engineers use techniques such as eXtreme Programming (XP), Agile, Scrum, and Lean, among others.
Radial applies our experience to develop a signature process. We use techniques and methods found in Lean Entrepreneurship and Agile Project Management, allowing us to focus on regular, predictable product delivery and improvement.
Radial’s clients require effective software that is delivered, functional and valuable. Our process ensures all three, even in uncertain circumstances.
Radial combines a short, just-in-time, last-minute planning phase, leading to a highly-focused development effort to produce and deliver valuable software to the client. We follow with a thorough after-action review of challenges, discoveries, observations and refinements. Radial repeats this process through the life of our engagement with clients, providing value with impactful, regular software delivery.
A fundamental tenet of Lean Software Development is to make development decisions as late in the process as possible. Radial collects data and input, encouraging decisions based on information rather than assumption. Lean prescribes software delivery as rapidly as possible after decisions.
At Radial we analyze software features on a matrix of difficulty compared to relative value to the end user. We encourage our clients to prioritize work by maximizing value and minimizing required work. Radial maintains a running list of project goals. Using this list, our clients work with Radial developers to break work into two-week development efforts, or sprints, during which developers commit to deliver crucial features. Radial calls the process – planning, ranking difficulty, and maintaining the priorities grooming.
During Radial’s sprints, developers build software using Test-Driven Development (TDD). The technique ensures software can be qualitatively measured to meet requirements. The result, when utilized properly, is robust protection from a large class of bugs, those unintended effects of interaction between disparate software elements.
At Radial, we collaborate throughout the development cycle. We use software architecture planning and design discussions to improve the foundations. Developers work in pairs to make decisions on a tactical level that improve the efficiency and the product’s sustainability.
To an outside observer, the process may appear to duplicate work. The result, though, is actually an overall higher rate of delivery because thoughtful design and review reduce errors and wasted time. Radial’s goal is to go carefully in order to go fast. This means a dramatic reduction of code debt, or circumstances where past engineering decisions create roadblocks to future development.
Following completion of each line item, and before delivery to a client, Radial’s code undergoes a comprehensive peer review. An engineer closely examines the code for conformance to project standards and engineering best practices. This prevents a single developer from injecting mistakes and ensures that multiple team members understand each bit of code.
After delivery, Radial takes a step back. We conduct an open and frank meeting, or retrospective. The team discusses the completed work, while it is fresh. In a retrospective, the Radial team talks about our developers’ successes and challenges. We discuss mistakes made - sometimes in terms of misunderstanding difficulty and sometimes in terms of technical decision making. We engage our clients to learn their thoughts about the recently-delivered software and any previous work.
The retrospective process is derived from Lean manufacturing techniques known as poka-yoke, or error proofing, and total protective maintenance. The technique requires removing errors, and increases effectiveness of Radial’s development process. By examining immediate successes and failures, we continuously improve.
After planning, delivering and reviewing our work, all within a two-week sprint, designed to deliver value to our clients, we rest. Typically for a weekend. And then, we do it again.
Radial clients expect a constantly improving and evolving product, delivered at regular intervals – usually twice a month – through a process that improves over time. Ultimately, this is what Radial delivers: the client’s product and a way to make it better.