I’ve been contemplating “What is agile, really?” lately and how to explain it to others effectively. If you are an agile practitioner and haven’t committed the Manifesto for Agile Software Development to memory yet go read it again.
In trying to think through the process and how to explain it to the non-indoctrinated, I decided its best described as a healthy feedback loop. Maybe I’m slow but I’ve never thought of agile as one big feedback loop. I’ve seen others talk about the importance of feedback loops within agile but never that agile itself is a feedback loop.
HOW – Individuals and interactions
Without healthy relationships built on respect and trust we cannot work effectively as a team to build software. No amount of fancy/expensive tools or process can fix a toxic culture. We must all strive to listen to others and work together for the good of our customers and common goals.
WHAT – Working Software
Customers can’t provide true feedback without working code to try. Documentation rarely replaces the “feel” of a software system. The processes of “doing” and “using” a working system will always produces more ideas and highlight pain points far better than simply reading about how a system would be used.
WHY – Customer Collaboration
The customers are the only player in this game that really know what is valuable. They are the ones using the system and potentially willing to pay for it. Thus their direct feedback is far more valuable than a sales/business person trying to interpret or predict value for customers. This is why seeing/seeking customer feedback is so important. Don’t settle for a middleman.
WHY – Responding to Change
If we don’t use the feedback we receive to inform our future steps it is all just a waste of time. We must make plans but expect them to change. Otherwise we are likely wasting our time on features/code that users don’t want or need. Granted, customer feedback can’t and shouldn’t be the only input to plans but they should likely be the main driver.
The Feedback Loop
So this becomes an ongoing process of people working together effectively to build real/working software in order to provide value to users, receive their feedback and make new plans for what to build next.
What do you think? Share your thoughts in the comments below and continue the conversation.