Searching...
English
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
The Art of Agile Development

The Art of Agile Development

Pragmatic Guide to Agile Software Development
by James Shore 2007 438 pages
3.98
500+ ratings
Listen
Listen to Summary
Try Full Access for 7 Days
Unlock listening & more!
Continue

Key Takeaways

1. Agile is an Art Learned Through Practice

To master agile development, you must learn to evaluate myriad possibilities, moment to moment, and intuitively pick the best course of action.

Mastery through practice. Agile development, like any complex skill, is an art form that requires hands-on experience to master. Reading about it is just the beginning; true understanding comes from applying the principles and practices in real-world situations. Extreme Programming (XP) serves as a detailed guide and an "étude" – a practice routine – to help teams build the necessary skills and intuition.

Beyond the rules. While XP provides a comprehensive set of practices, mastery means going beyond simply following rules. Agile is context-sensitive, and no single approach fits every situation perfectly. The goal is to understand the underlying principles so you can adapt the practices to your specific team and project needs, making educated guesses and observing the outcomes.

Mindfulness is key. Practice must be coupled with mindfulness – paying attention to what works, what doesn't, and why. Reflect on your experiences, discuss them with your team, and use these insights to refine your approach. This iterative cycle of practice, reflection, and adaptation is the road to becoming truly agile.

2. Focus on Delivering Value, Not Just Deadlines

A project can be successful even if it never makes a dime. It can be challenged even if it delivers millions of dollars in revenue.

Beyond traditional metrics. Traditional definitions of project success often focus narrowly on delivering on time, on budget, and according to specification. However, a project can meet all these criteria and still fail to provide real value to the business or its users. Conversely, projects deemed "challenged" by traditional metrics can be wildly successful if they deliver unexpected value or are loved by their target audience.

Three types of success. True success encompasses organizational, technical, and personal dimensions. Organizational success means delivering value that exceeds cost, whether through revenue, cost savings, or strategic advantage. Technical success means building high-quality, maintainable software. Personal success means team members find their work enjoyable and fulfilling.

Organizational value is paramount. While personal and technical success are important for team morale and sustainability, organizational success is often the ultimate measure for stakeholders funding the work. Agile methods prioritize delivering value early and frequently, ensuring that the most important features are built first and that the project's value is constantly demonstrated and maximized.

3. Build a Cross-Functional Team and Sit Together

Agile teams are cross-functional; this book reflects that fact.

Diverse expertise is essential. Successful software development requires a wide range of knowledge and skills, including programming, testing, domain expertise, design, and project management. Agile teams are built to be cross-functional, bringing together individuals with these diverse skills into a single, cohesive unit. This ensures all necessary perspectives are present and integrated daily.

Sit together for rapid communication. The most effective way to facilitate collaboration and information flow is for the entire team to sit together in an open workspace. This enables rapid, high-bandwidth communication, allowing team members to ask questions and get answers instantly, reducing delays and misunderstandings. It also fosters "osmotic communication," where team members overhear relevant conversations.

Roles, not just titles. While traditional titles exist, XP emphasizes roles like Product Manager (decides what to build), On-Site Customers (define requirements), Programmers (minimize cost, build code), Testers (ensure quality, find surprises), and Coaches (help team succeed). These roles ensure all necessary duties are covered, regardless of formal job titles, and everyone contributes to the team's success.

4. Plan Adaptively, Not Predictively

XP views a potential change as an opportunity to exploit; it’s the chance to learn something significant.

Embrace change as opportunity. Instead of fearing change and trying to plan for every eventuality upfront, agile methods embrace change as an opportunity to learn and increase value. The initial plan is seen as a starting point, not a rigid blueprint, and is expected to evolve as the team gains new information from development, feedback, and the market.

Plan at the last responsible moment. Detailed planning is deferred until the "last responsible moment" – the point where failing to make a decision eliminates an important alternative. This maximizes the information available when decisions are made, increasing accuracy and reducing wasted effort on plans that might become obsolete. Planning horizons are tiered, with more detail for near-term work and less for the distant future.

Frequent releases enable adaptation. Grouping features into small, marketable releases and delivering them frequently allows the team to get real-world feedback early and often. This feedback is used to adapt the plan, prioritizing features that prove most valuable and de-prioritizing those that are less so. This maximizes the return on investment over the life of the project.

5. Deliver Working Software Frequently

Using simultanous phases, an XP team produces deployable software every week.

Working software is the measure. The primary measure of progress in agile development is working software delivered to stakeholders. XP teams structure their work into short, fixed-length iterations (typically one week) where they analyze, design, code, test, and deploy a subset of features. This ensures tangible progress is made and demonstrated consistently.

"Done Done" means production-ready. A story is not considered complete until it is "done done," meaning it meets all criteria to be production-ready, including coding, testing, integration, building, and installation. This prevents accumulating hidden work that would delay releases and ensures the software is always in a potentially shippable state, even if not released to end-users every week.

Frequent delivery builds trust. Providing a working build to internal stakeholders every week (Iteration Demo) and releasing to real customers frequently builds trust and provides invaluable feedback. It forces the team to maintain a high level of technical readiness and makes the process of releasing a routine, low-stress event rather than a painful, high-risk scramble.

6. Seek Technical Excellence Relentlessly

The best agile projects generate only a few bugs per month.

Quality is not sacrificed. Agile methods, particularly XP, place a strong emphasis on technical excellence as a foundation for agility and sustainable development. High code quality, low defect rates, and a clean, maintainable design are seen as essential enablers for rapid, frequent delivery and the ability to adapt to change.

Generate fewer defects. Instead of relying on extensive testing phases to find and remove bugs, agile teams focus on preventing bugs from being created in the first place. Practices like Test-Driven Development (TDD), Pair Programming, and Simple Design help developers write correct, high-quality code from the outset.

Eliminate technical debt. Technical debt – less-than-perfect design and implementation decisions – breeds bugs and slows down future development. Agile teams are vigilant about paying down technical debt through continuous refactoring and dedicating time (slack) in each iteration to improve existing code. The goal is for the code to get steadily easier to modify over time.

7. Embrace Direct Communication and Trust

We communicate rapidly and accurately.

Communication is paramount. Effective communication is the lifeblood of an agile team. Misunderstandings and delays in information flow are significant sources of waste and risk. Agile methods prioritize direct, face-to-face communication over formal documentation and bureaucratic processes.

Trust enables collaboration. Building strong relationships based on trust is essential for effective collaboration. Team members must trust each other to do their best, ask for help, and provide honest feedback. The organization must trust the team to manage itself and deliver results. Trust allows teams to work without excessive oversight and documentation.

Practices fostering communication and trust:

  • Sit Together: Enables rapid, osmotic communication.
  • Pair Programming: Fosters continuous conversation and knowledge sharing.
  • Stand-Up Meetings: Quick daily syncs keep everyone informed.
  • Ubiquitous Language: Ensures shared understanding of domain concepts.
  • Iteration Demo: Transparent progress sharing builds stakeholder trust.
  • Retrospectives: Safe space for honest feedback and process improvement.

8. Eliminate Waste and Fail Fast

Simplicity is the art of maximizing the work not done.

Lean principles applied. Agile methods draw heavily from Lean manufacturing principles, focusing on identifying and eliminating waste in the software development process. Waste includes anything that consumes resources without adding value, such as unnecessary documentation, waiting time, task switching, and partially done work.

Fail fast to minimize loss. If a project or a specific approach is likely to fail, it's better to discover this as quickly as possible. Agile practices are designed to expose problems and risks early, allowing the team to pivot, adjust the plan, or even cancel the project before significant resources are wasted. Experiments and small steps help reveal issues quickly.

Maximize work not done. The most effective way to eliminate waste is to avoid doing unnecessary work in the first place. This means questioning every feature, every process step, and every piece of code. If it doesn't directly contribute to delivering value now, it's likely waste. Simple Design and the "You Aren't Gonna Need It" (YAGNI) principle are key here.

9. Continuously Improve Your Process

No process is perfect.

Adaptation is key to agility. The ability to respond effectively to change requires the team's process itself to be adaptable. No single process is perfect for all situations, and even a good process needs to evolve as the team, the project, and the environment change. Continuous process improvement is a core tenet of agility.

Retrospectives drive improvement. Regular retrospectives provide a dedicated time for the team to reflect on its recent work, identify what went well, what could be improved, and commit to specific changes in their process for the next iteration. This creates a feedback loop for the process itself, ensuring it gets better over time.

Tune and adapt based on feedback. Use feedback from all sources – code quality metrics, bug rates, stakeholder satisfaction, team morale, velocity stability – to identify areas for improvement. Experiment with small changes to your practices, observe the results, and iterate. This requires courage to try new things and the discipline to follow through and evaluate.

10. Rely on People and Empower Them

Agile methods put people and their interactions at the center of all decisions.

People are the core. Software development is fundamentally a human endeavor. The success of a project depends heavily on the skills, motivation, and interactions of the people involved. Agile methods acknowledge this by focusing on building effective relationships and creating an environment where people can thrive.

Trust and authority. Agile teams are built on trust. The organization trusts the team to manage itself and make decisions about how best to achieve the project's goals. Within the team, members trust each other's expertise and commitment. This trust is backed by giving the team the authority it needs over its process, tools, and technical decisions.

Build process for people. Instead of creating rigid processes designed to control or compensate for perceived human weaknesses, agile processes are built to leverage human strengths like creativity, problem-solving, and the desire to do good work. Practices like Pair Programming and Energized Work support developers in maintaining focus and quality, while Retrospectives empower the team to fix process issues collaboratively.

11. Use Stories and Estimates for Planning

Stories are for planning.

Small, customer-centric units. Stories are simple, short descriptions of desired functionality written from the customer's perspective. They represent small, valuable pieces of work that can typically be completed within an iteration. Stories serve as the primary units for planning, discussion, and tracking progress.

Estimates inform planning. Programmers provide estimates for stories, typically in abstract units like "story points" (representing ideal effort). These estimates, combined with the team's measured velocity (the number of points completed per iteration), allow the team to predict how much work they can reliably complete in a given timeframe.

The Planning Game. The Planning Game is a collaborative process where customers prioritize stories based on value, and programmers estimate them based on cost. This ensures that plans reflect both business needs and technical reality, leading to achievable commitments. Stories and estimates provide the necessary information for this ongoing negotiation and adaptation of the release plan.

Last updated:

Review Summary

3.98 out of 5
Average of 500+ ratings from Goodreads and Amazon.

The Art of Agile Development receives mostly positive reviews, with an average rating of 3.98 out of 5. Readers appreciate its comprehensive coverage of Agile practices, particularly XP. Many find it valuable for teams adopting Agile methodologies. Some criticize its length and writing style, while others praise its detailed explanations. The book is noted for its focus on XP rather than Agile in general, which some reviewers find misleading. Overall, it's considered a useful resource for those interested in Agile development, especially XP practices.

Your rating:
4.31
3 ratings

About the Author

James Shore is an experienced software development expert and author specializing in Agile methodologies. He is best known for his work on Extreme Programming (XP) and his contributions to the Agile community. Shore has written extensively on Agile practices, with "The Art of Agile Development" being his most notable publication. He is recognized for his ability to explain complex concepts in accessible terms and provide practical advice based on real-world experiences. Shore's work often focuses on helping teams implement Agile practices effectively, emphasizing the importance of technical excellence and collaboration. His expertise extends to coaching, consulting, and speaking engagements, where he shares his insights on improving software development processes.

Download EPUB

To read this The Art of Agile Development summary on your e-reader device or app, download the free EPUB. The .epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.
Download EPUB
File size: 2.96 MB     Pages: 14
0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Personalized for you
Ratings: Rate books & see your ratings
100,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on May 12,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →