Agile Development: Developing the Right Way
As you work your way through another morning commute, you take a sip of coffee and reflect on the software you’re building. You ask yourself, “Are we doing Agile Development the right way?” You realize you can’t answer the question. The only data you have measures the success or health of the organization as a whole: sales, revenue, customer count, etc. They don’t provide the insight to help you understand whether the core of your business is being done right. What is the right way? How do you know?
So, how do you begin to answer these questions and more importantly, take action to ensure you’re developing the right way? You’ve started the process already—you’re asking questions. Improvements arise out of repeatedly questioning the status quo. Here are a few questions to discuss with your team:
- What development process are we using today?
- Does everyone understand and enjoy the process?
- Do we ever try to improve the process?
- Are teams (Development, QA, Operations, Support) working together?
- How difficult is it to deliver new functionality to clients?
- Who prioritizes work?
- Do priorities change regularly?
- Is a lot of time spent writing lengthy requirement and design documents?
It’s imperative these questions are asked and answered honestly and constructively so the data is valuable. For that to happen, everyone needs to feel their input will be appreciated. The answers to these questions will reveal a lot about your culture, process, and efficiency.
For instance, if there is no consistent answer to the first question, there is a structural problem. Regardless of what the process is called, it’s important for teams to work together within a process and also continually adapt that process so it’s effective for the way they work.
Agile Development – Developing the Right Way
The only way to ensure you’re developing the right way is to adopt a development methodology such as Agile, which embraces an approach rooted in continuous improvement based on constant, rapid feedback. No individual, team or organization is going to execute perfectly every day and every time. There’s always room for improvement. Agile was created by a handful of respected software engineers who understood the ultimate measure of success in software development is working software.
Scrum is the most prolific agile framework. It provides a structured approach to development by regularly prioritizing features, developing in short cycles and incorporating feedback frequently to ensure what is being developed aligns with client needs. There are regular meetings, or retrospectives, for the team(s) to assess how things are going and ways to improve.
Scrum provides the structure to ensure the right opportunities exist for prioritization and improvement. For software teams, combining Scrum with a set of technical practices or techniques to meet design and quality standards has proven to be effective, improve morale and even increase a company’s ROI on their software investment.1
Often referred to as Technical Practices, there are a number of popular practices recommended for teams to achieve the benefits identified above. Some of these include TDD (Test Driven Development), automated testing, pair programming, emergent design, refactoring and continuous integration. Taking it to the next level would mean leveraging metrics. That’s a topic for another post though.
By understanding there is no right approach to anything we do, you can answer the question, “Are we developing the right way?” Adopting an Agile development process heightens your ability to identify inefficiencies/issues quickly and act to address them. The constant balance of effort and improvement is what will provide confidence that you, your team and your organization are doing things the right way.
Related resource articles:
The Value of Developers Doing Acceptance TDD
1 David F. Rico, Hasan H. Sayani, Saya Sone, The Business Value of Agile Software Methods: Maximizing Roi With Just-in-time Processes and Documentation, 2009 (J. Ross Publishing)