We've been doing Agile software development here at NewVoiceMedia for a few years now. We're always learning and adapting the process to meet the needs of a growing business but we've nailed a number of the problems many teams go through when they move to agile software development.
I'm going to be blogging a lot more about agile, why we choose to work in an agile way, the reasons why agile works for us and the reasons why agile supports the core business so well.
This blog isn't really aimed at those wanting to know more about the intricate details of the agile process and how to implement it; there are a number of excellent sources of this on the web and in book form already.
Instead I will be exploring the relationship between the agile development process and how this ties in with our business models, our cloud product and the effect this has for our customers (and us as a team).
I will explore how our business is enabled by the agile development process, but also how our cloud business is enabling us to do agile in an effective way. What many agile discussions often don't focus on is how a good agile development environment can empower other areas of the business and ultimately have an amazing impact for customers. This is something I will look at exploring over the next few months.
As mentioned, we are still learning and exploring the power of agile (and in fact Lean/Kanban development too). To get a feel for what agile is or isn't, it's worth taking a look at the "manifesto":
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Wikipedia seems a logical next step to build out this definition:
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. The Agile Manifesto introduced the term in 2001. Agile management methods can also be applied in other development projects than software development
It is not my intention to go in to specifics about agile. Agile is a very heated topic in the development world with many teams claiming to be agile but fundamentally not delivering on some of the core principles such as rapid delivery, welcoming change, continuous improvement etc.
We've taken the bits that work and we've learned how to make our team more effective through leadership and mentoring from a number of people in the business who seem to have been born to work in this iterative and adaptive process.
We are using the Scrum framework but we also borrow elements of Kanban/Lean as we move to providing even more releases and rapid development of our features to our customers. So I will use the term "agile" to loosely describe this collection of methodologies, frameworks and concepts.
I did a very quick brain storming session with Nigel, NVM's Development Director and in-house Agile evangelist and we came up with the following themes for this blog series:
- Time to market (feature releases, bug fixes, enhancements)
- Sustainable development environment (fun, challenging, self learning, self improvement, rapid feedback)
- Our own product environment (cloud system, our own code, deployment, capacity planning/testing, control)
- Feedback (rapid, comes from many sources, user experience, trust)
- Change (ability to respond and react, willingness for change, open mind)
Over the next few months I'll explore how agile and cloud seem made for each other (at least in our experience) and how this maps to enduring and outstanding customer experiences.I hope you enjoy the series. Why not subscribe to the blog and share with your network and we'll keep you informed of new posts.