However, in those solid 3+ years of working on that programme, I had learnt quite a bit about the theory of Agile versus appreciating and adopting much of spirit of Agile, taking into account organisational & project maturity, structures and processes, theory vs practice, resistance vs acceptance, people vs management, processes & controls vs fluidity & flexibility, not forgetting customer focus vs ideal product management (customer always comes first). So now I'd like to communicate the guiding principles that made and continues to make the above-mentioned endeavour (could this become a model for other companies perhaps?), which the industry refers to as "Large-scale Software Development", work in the real world: where a truly geographically dispersed, distributed multidisciplinary team of developers, architects, integrators and testers, project & programme management teams are all synchronised on a common development & delivery methodology having its roots in Agile -- are actually sustaining high profile, time-critical, multimillion dollar projects of an exceptionally high quality and complex nature, including the challenges of using just one single codebase to support multiple independent customers -- a case study in Distributed Development using Disciplined Agile Methodologies for a Digital TV Set-Top-Box Software Project.
The underlying reason behind this post however, like all my previous posts, is a focus on Digital TV projects specifically around Set-Top-Box UI EPG & Middleware development initiatives, where increasingly organisations are embarking on implementing Agile end-to-end, even on my current project which I've inherited, Agile had been chosen as the development methodology. Don't get me wrong, I am all for agile, I respect its philosophy; as someone who loves autonomy myself, I wouldn't have it any other way. But nevertheless, as I've written in the past, Agile can go very wrong if being implemented for the very first time. This is why (and this is not just my opinion, see this report), Agile should not be chosen on a mainstream project that is the company's crown jewels, instead, the recommendation has generally been to start with a pilot programme that you can afford to throw away, fail and start over, expect to fail many times before getting the ingredients just right....but I digress...getting back to the purpose behind the next series of posts:
I have seen a model of Agile (Disciplined Agile Delivery) implemented successfully in the real world on a large-scale development & delivery project - and would like to share this experience with others as I think it would be useful & helpful, at the very least can be used as input material if you're considering adopting Agile in your own DTV projects.
I've broken down the concepts into several themes/parts - I'll update with links to each post as each is published:
- Part 0: Introduction: this post - Objectives
- Part 1: The Stage: What is a Large-Scale Software Development Project (LSSDP) anyway?
- Part 2: Organisational Structures for Large-Scale Software Projects
- Part 3: Implementing Large-Scale Agile/Scrum Model - Product Management Methodology
- Part 4: Implementing Large-Scale Development, Integration & Delivery Model
- Part 5: Implementing a Large-Scale Architecture Model
- Part 6: Implementing Large-scale Continuous Integration (including Config Management)
- Part 7: Evolution of the Model - Dealing with Growth, Scaling the backlog, etc.
- Part 8: The challenges with Continuous Delivery
- Part 9: Conclusions