Practices Of An
Agile Developer
Mike Sherov
<insert some joke title here>
Behance Team @ Adobe
History
-
Who:
-
Andy Hunt
-
Signer - Agile Manifesto
-
Author - Pragmatic Programmer
-
-
Dr. Venkat Subramaniam
-
Professor - University of Houston
-
Founder - Agile Developer, Inc.
-
-
-
When: Authored in 2006
-
What: Spiritual Manual, One of the "Most Influential"
-
Why: Software Craftsmanship
Personal History
- Came at pivotal moment in my journey, from individual contributor to team lead.
-
Taught me principles of craftmanship to live by.
-
Suggested transformational systems of development that we take for granted today.
What is Agile Development?
- NOT any specific agile process, like Scrum
- NOT Rigid systems, like Waterfall.
- NOT Helter Skelter systems, like "Startup Scramble"
What is Agile Development?
- A set of development techniques that produce high quality software, capable of responding to shifting needs of the user and market.
- Sounds great, but.... while most agile practices are obvious wins, they are hard to internalize and practice consistently.
How does this book help?
- Institutionalizes knowledge. Essentially the bible
- Reference card for all the practices
- Simple to follow structure:
- A quote from the devil
- 2-3 pages of narrative
- A quote from the angel
- What does it feel like?
- Keeping your balance
Chapters
- Beginning Agility - Agile Mindset
- Feeding Agility - Background Team Practices
- Delivering What Users Want - listening to feedback
- Agile Feedback - Unit Testing Practices
- Agile Coding - Coding Best Practices
- Agile Debugging - Maintaining healthy systems
- Agile Collaboration - How to develop in Teams
- Moving to Agility - How to move orgs to Agile (my fave)
Beginning Agility
-
Work for Outcome
-
Quick Fixes Become Quicksand
-
Criticize Ideas, Not People
-
Damn the Torpedoes, Go Ahead
Feeding Agility
- Keep Up with Change
- Invest in Your Team
- Know When to Unlearn
- Question Until You Understand
- Feel the Rhythm
Delivering What Users Want
-
Let Customers Make Decisions
-
Let Design Guide, Not Dictate
-
Justify Technology Use
-
Keep It Releasable
-
Integrate Early, Integrate Often
-
Automate Deployment Early
-
Get Frequent Feedback Using Demos
-
Use Short Iterations, Release in Increments
-
Fixed Prices Are Broken Promises
Agile Feedback
-
Put Angels on Your Shoulders
-
Use It Before You Build It
-
Different Makes a Difference
-
Automate Acceptance Testing
-
Measure Real Progress
-
Listen to Users
Agile Coding
-
Program Intently and Expressively
-
Communicate in Code
-
Actively Evaluate Trade-Offs
-
Code in Increments
-
Keep It Simple
-
Write Cohesive Code
-
Tell, Don’t Ask
-
Substitute by Contract
Agile Debugging
-
Keep a Solutions Log
-
Warnings Are Really Errors
-
Attack Problems in Isolation
-
Report All Exceptions
-
Provide Useful Error Messages
Agile Collaboration
-
Schedule Regular Face Time
-
Architects Must Write Code
-
Practice Collective Ownership
-
Be a Mentor
-
Allow People to Figure It Out
-
Share Code Only When Ready
-
Review Code
-
Keep Others Informed
Moving to Agility
-
Just One New Practice
-
Rescuing a Failing Project
-
Introducing Agility: The Manager’s Guide
-
Introducing Agility: The Programmer’s Guide
-
The End?
Practices Of An Agile Developer
By mikesherov
Practices Of An Agile Developer
- 1,822