Agile Development in Practice
My recent articles, “Twelve Tips for Agile Project Planning and Estimating” and “What is Scrum?” are examples of some of my long-form essays on Agile software development “In Practice”, which is what I call the application of Agile Manifesto principles in a realistic, very down-to-earth way that will prevent software programmers from laughing you out of the office.
The Agile Manifesto is a document that was written in 2001, and its authors were among the pioneers of object oriented technology including: Kent Beck (JUnit with Eric Gamma), Alistair Cockburn (Crystal), Ward Cunningham (Wiki, CRC cards), Martin Fowler (many books on XP, patterns, UML), Robert C. Martin (Agile, UML, patterns), and Ken Schwaber (Scrum).
“Agile” means something to upper management, PMs, Program Managers and BAs, and something else entirely to actual software programmers. I intend to illustrate some simple and effective real-world techniques in this space that will help you bridge the gap, and also prevent you from looking foolish and silly.
What are Agile project management methodologies?
Agile software project management methodologies are also sometimes referred to as iterative methods and they stress collaboration, embraceable change, and high product quality all the while placing emphasis on early product delivery.
In Agile, working code is considered the true artifact of the development process. Models, plans, and documents are important and have their place in the software engineering process, but their main reason to exist is in order to support the actual software development effort, the working software. This is not to imply that Agile promotes a computer programmer free-for-all, quite the opposite. Agile demands a strict discipline and adherence to very clear practices and principles in order to find effective application.
Agile embraces change and so Agile methods tend to be adaptive rather than predictive and planned. As opposed to taking a great deal of time to plan the software development process, and for which changes in the design can prove problematic, Agile methods can be employed as a response to the frequently-encountered problem of constantly changing software requirements that can bog down more heavy “up-front” design approaches that can focus very much on planning, documentation and discovery phases.
Agile methods highlight people over processes, so the so-called project management ”soft skills” can play a big role in the success or failure of introducing and maintaining an Agile software development practice.
For the time being, here are some quick tips about what Agile development should mean, and I will follow with some of my personal impressions and thoughts about working with Agile Methodologies:
1. Business people and developers must work together daily throughout the project.
2. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. At regular intervals, the team reflects on how to become more effective, then tunes & adjusts its behavior accordingly.
5. Working software is the primary measure of progress.
6. Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.
7. Continuous attention to technical excellence and good design enhances agility.
8. Simplicity–the art of maximizing the amount of work not done–is essential.
9. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
10. Individuals and interactions over processes and tools.
11. Working software over comprehensive documentation.
12. Customer collaboration over contract negotiation.
13. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
14. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
What does the Agile Manifesto have to do with managing Agile teams, you ask? Well, The Agile Manifesto is ready-made advice for managers. It implies that managing Agile teams is fun (Theory Y), and that the best outcomes arise from giving project teams what they need and leaving them alone.
Does this approach always work? No. Agile methods require much more autonomy than many managers are willing to give. More importantly, however, not everyone fits the Agile methodology – a Theory X type worker will not thrive well with it. Finally, Agile methodologies do not work in every environment or with every project.
A viable process which may help many organizations assess whether Agile methodologies should be used is to look at the project through a lens of five dimensions:
1. Size of the project team or number of personnel involved.
2. Mission criticality of the software to be developed to the organization.
3. The general skill level of the project team.
4. Anticipated number of changes over a given time interval, or the static-dynamic balance of the project work to be completed.
5. Corporate culture: does the organization thrive on chaos or order?
As projects tend towards large groups of personnel, the likelihood that agile methodologies will prevail declines. As projects tend towards high levels of mission criticality to the organization, the likelihood that agile methodologies will prevail also declines. In the same manner, low overall skill level of the project team, a highly dynamic project and a corporate culture heavily biased towards order are also unlikely project candidates for the employment of agile methodologies.
My advice is to clearly define what “agile methods” means upfront because there are many misconceptions regarding Agile. Then build a business case for Agile methods using hard empirical data. When you are adopting Agile methods, you are essentially and fundamentally changing the way your organization does business.
This means that you must provide staff with support for making the transition to Agile. That support should include startup guidelines, “How to” checklists, and measurement metrics; a knowledge base of past experience accessible by all; and education and training.
Want to know more?
Want to know more?
You’re reading Boston’s Hub Tech Insider, a blog stuffed with years of articles about Boston technology startups and venture capital-backed companies, software development, Agile project management, managing software teams, designing web-based business applications, running successful software development projects, ecommerce and telecommunications.
About the author.
I’m Paul Seibert, Editor of Boston’s Hub Tech Insider, a Boston focused technology blog. I have been working in the software engineering and ecommerce industries for over fifteen years. My interests include computers, electronics, robotics and programmable microcontrollers, and I am an avid outdoorsman and guitar player. You can connect with me on LinkedIn, follow me on Twitter, follow me on Quora, even friend me on Facebook if you’re cool. I own and am trying to sell a dual-zoned, residential & commercial Office Building in Natick, MA. I have a background in entrepreneurship, ecommerce, telecommunications and software development, I’m a Technical PMO Director, I’m a serial entrepreneur and the co-founder of several ecommerce and web-based software startups, the latest of which are Twitterminers.com and Tshirtnow.net.
More Articles From Boston’s Hub Tech Insider:
- Twelve Tips For Agile Project Planning and Estimating
- Eight ways to tell if your Project Team is on the Way Up, or on the Way Down
- The Twenty Laws of Testing Computer Software
- What are the qualities of bad software code?
- What is a software requirements traceability matrix?
- What is pattern-based software development? What is pattern-based design for software projects?
- Why Designing for a VUI is harder than designing for a GUI
- The Hub Tech Insider Glossary of Mobile Web Terminology
- The Hub Tech Insider Glossary of Stock Options Terminology
- How many Stock Options should executives at a startup be granted?
- Agile Development In Practice
- What is ‘Management By Walking Around’?
- Boston Area Video Game Companies
- Shopify eCommerce
- Demandware eCommerce
- How to expand your professional network on LinkedIn
- How to use LinkedIn in your job search
- Twitter and network effects
- How much bandwidth does a smartphone use? How much bandwidth does an Apple iPad use? How much bandwidth does an Apple iPhone use?
- How does GPS work?
- What is a product roadmap? What is an engineering roadmap? How do you create a product roadmap?
- How do you create a Competitive Analysis document?
- What is Scrum?
- What is a “Use Case”?
- What is a “User Story”?
- What is UML? What is Unified Modeling Language?
- What is Indirect Spend?
- What is EDIINT? What is AS2, AS1, AS3 and AS4?