SlideShare a Scribd company logo
1 of 11
Download to read offline
Notes on...
   agile development

October 2012
Matt Griffin @mattpgriffin
Above all...
Make it as quick as reasonably possible to go from code to
production. If it takes weeks, you're in trouble.

Focus developers on end-user value as the overarching
metric for their success. Deliver quality.

Tests. Tests. Tests...
Engineers must write tests. Significantly reduces QA and
number of issues caught late or at integration.
Have fixtures and good tests so people can change code
and know quickly if they broke something.
Do code reviews
The approve/reject/feedback gate for merging branches.

Require two reviews (from anyone) until the team is all
generally similarly competent. Then require one.

Reviews should be small. Look at code, APIs, tests, and
UX. Try limiting branches to a max of 500 lines.
● land code regularly instead of once a week or more
● forces people to think more about how to split up the
  work, shipping value more frequently
● will train other engineers across projects as they review
Open communication
Look mom, no email!

Be effective and open with simple, low cost, real-time tools.
● bug tracker - everyone should be encouraged to submit bugs. be
    transparent and honest with status/progress.
● DVCS - transparent, decentralized development
● wiki - empower everyone to document common tasks
● group chat (irc, HipChat) - open company and team/project rooms
    with browsable logs since the beginning of time
● pastebin/etherpad - quickly share snippets w/ URLs
● Google Hangouts and Apps tools - add secure voice/video chat,
    screen sharing, document collaboration for a low investment
Continuous integration
For web software, have an automated Jenkins instance run
through a series of Selenium tests on a regular basis.

If something fails, send alerts and make sure someone
stops what they're doing and fixes it.

All of the above are to make it easier and faster for people
to change things and have a good safety net.
Environments
Staging environment
● use its own copy of the production DB
● update the code automatically very frequently (Ubuntu
   One is at every 15 minutes atm).

An edge environment with the latest code against the
actual production DB is also very useful.
Frameworks
not really agile-related but here's some advice...

Choose wisely
● fit your current & future needs
● rash decisions or too many frameworks leads to higher
  costs in training, upgrades/maintenance, and ALL
  dependent code
● participate in the community and contribute
  enhancements upstream
Daily
Do daily stand-ups. All the developers have a quick (~15
minutes) meeting letting everyone else know what they did
and what they are going to do... and anything interesting in
their life :)
Periodically
Continuously look at the whole development process, from
starting up a new branch to a user using it and identify
anything that isn't directly adding value (this is what is
called "waste").

Aggressively and boldly cut down on waste. Initially, you
will most likely have to take more drastic changes.
Someone needs to be there pushing!
Releases
Have a regular cadence, something short like 1 or 2 weeks.

Target each piece of work to these releases.
Many thanks to...
@beuno - supplied almost all of the content :)
the entire @ubuntuone team

More Related Content

What's hot

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationPreetam Palwe
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integrationmantripooja
 
Teamleader testcon 2019
Teamleader testcon 2019Teamleader testcon 2019
Teamleader testcon 2019Thomas Noë
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skillsXPeppers
 
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam DanangAgile đây Vietnam
 
Continuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul StackContinuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul StackJAXLondon_Conference
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsRehgan Avon
 
What Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeWhat Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeRobert Stackhouse
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Fatkul Amri
 
Why Do User Research And Usability Testing
Why Do User Research And Usability TestingWhy Do User Research And Usability Testing
Why Do User Research And Usability TestingRobert Stackhouse
 
TLC2018 Shyam Sunder: Legoizing Testing
TLC2018 Shyam Sunder: Legoizing TestingTLC2018 Shyam Sunder: Legoizing Testing
TLC2018 Shyam Sunder: Legoizing TestingAnna Royzman
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides pptMr SMAK
 
Software Quality for Developers
Software Quality for DevelopersSoftware Quality for Developers
Software Quality for DevelopersMaira Bay de Souza
 
Tampere Goes Agile 2013 - Managing a Clean Codebase
Tampere Goes Agile 2013 - Managing a Clean CodebaseTampere Goes Agile 2013 - Managing a Clean Codebase
Tampere Goes Agile 2013 - Managing a Clean CodebaseVincitOy
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven developmentAhmed El-Deeb
 
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressOutside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressJosh Justice
 
Drulenium - Testing Made Easy
Drulenium - Testing Made EasyDrulenium - Testing Made Easy
Drulenium - Testing Made Easynyccamp
 
Introduction to unit testing
Introduction to unit testingIntroduction to unit testing
Introduction to unit testingGil Zilberfeld
 
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...MobileMonday Estonia
 

What's hot (20)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Teamleader testcon 2019
Teamleader testcon 2019Teamleader testcon 2019
Teamleader testcon 2019
 
Improve your TDD skills
Improve your TDD skillsImprove your TDD skills
Improve your TDD skills
 
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang
[Quang nguyen] Continuous Integration XP Day 2015 Vietnam Danang
 
Continuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul StackContinuous Delivery - the missing parts - Paul Stack
Continuous Delivery - the missing parts - Paul Stack
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
What Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeWhat Software Quality Assurance Means to Me
What Software Quality Assurance Means to Me
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)
 
Why Do User Research And Usability Testing
Why Do User Research And Usability TestingWhy Do User Research And Usability Testing
Why Do User Research And Usability Testing
 
TLC2018 Shyam Sunder: Legoizing Testing
TLC2018 Shyam Sunder: Legoizing TestingTLC2018 Shyam Sunder: Legoizing Testing
TLC2018 Shyam Sunder: Legoizing Testing
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides ppt
 
Software Quality for Developers
Software Quality for DevelopersSoftware Quality for Developers
Software Quality for Developers
 
Tampere Goes Agile 2013 - Managing a Clean Codebase
Tampere Goes Agile 2013 - Managing a Clean CodebaseTampere Goes Agile 2013 - Managing a Clean Codebase
Tampere Goes Agile 2013 - Managing a Clean Codebase
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
Outside-in Testing in Vue with Cypress
Outside-in Testing in Vue with CypressOutside-in Testing in Vue with Cypress
Outside-in Testing in Vue with Cypress
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Drulenium - Testing Made Easy
Drulenium - Testing Made EasyDrulenium - Testing Made Easy
Drulenium - Testing Made Easy
 
Introduction to unit testing
Introduction to unit testingIntroduction to unit testing
Introduction to unit testing
 
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
 

Similar to Notes On Agile Development

Agile Engineering
Agile EngineeringAgile Engineering
Agile EngineeringJohn Lewis
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsMohamed Samy
 
Agile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches SlidesAgile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches Slidesguesta1c5d7
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsLinards Liep
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringSibel Kuzgun AKIN
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile ME
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Moss Drake
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)Mike Subelsky
 
DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)Nitin Bhide
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationJoseph Wang
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopWajih Aslam
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectivelyAshutosh Agarwal
 
DevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsDevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsNitin Bhide
 

Similar to Notes On Agile Development (20)

Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
Agile
AgileAgile
Agile
 
Agile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches SlidesAgile Development Brown Bag Lunches Slides
Agile Development Brown Bag Lunches Slides
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019Technical Practices for Agile Engineering - PNSQC 2019
Technical Practices for Agile Engineering - PNSQC 2019
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)
 
DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)DevOps - Understanding Core Concepts (Old)
DevOps - Understanding Core Concepts (Old)
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loop
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectively
 
DevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsDevOps - Understanding Core Concepts
DevOps - Understanding Core Concepts
 

Notes On Agile Development

  • 1. Notes on... agile development October 2012 Matt Griffin @mattpgriffin
  • 2. Above all... Make it as quick as reasonably possible to go from code to production. If it takes weeks, you're in trouble. Focus developers on end-user value as the overarching metric for their success. Deliver quality. Tests. Tests. Tests... Engineers must write tests. Significantly reduces QA and number of issues caught late or at integration. Have fixtures and good tests so people can change code and know quickly if they broke something.
  • 3. Do code reviews The approve/reject/feedback gate for merging branches. Require two reviews (from anyone) until the team is all generally similarly competent. Then require one. Reviews should be small. Look at code, APIs, tests, and UX. Try limiting branches to a max of 500 lines. ● land code regularly instead of once a week or more ● forces people to think more about how to split up the work, shipping value more frequently ● will train other engineers across projects as they review
  • 4. Open communication Look mom, no email! Be effective and open with simple, low cost, real-time tools. ● bug tracker - everyone should be encouraged to submit bugs. be transparent and honest with status/progress. ● DVCS - transparent, decentralized development ● wiki - empower everyone to document common tasks ● group chat (irc, HipChat) - open company and team/project rooms with browsable logs since the beginning of time ● pastebin/etherpad - quickly share snippets w/ URLs ● Google Hangouts and Apps tools - add secure voice/video chat, screen sharing, document collaboration for a low investment
  • 5. Continuous integration For web software, have an automated Jenkins instance run through a series of Selenium tests on a regular basis. If something fails, send alerts and make sure someone stops what they're doing and fixes it. All of the above are to make it easier and faster for people to change things and have a good safety net.
  • 6. Environments Staging environment ● use its own copy of the production DB ● update the code automatically very frequently (Ubuntu One is at every 15 minutes atm). An edge environment with the latest code against the actual production DB is also very useful.
  • 7. Frameworks not really agile-related but here's some advice... Choose wisely ● fit your current & future needs ● rash decisions or too many frameworks leads to higher costs in training, upgrades/maintenance, and ALL dependent code ● participate in the community and contribute enhancements upstream
  • 8. Daily Do daily stand-ups. All the developers have a quick (~15 minutes) meeting letting everyone else know what they did and what they are going to do... and anything interesting in their life :)
  • 9. Periodically Continuously look at the whole development process, from starting up a new branch to a user using it and identify anything that isn't directly adding value (this is what is called "waste"). Aggressively and boldly cut down on waste. Initially, you will most likely have to take more drastic changes. Someone needs to be there pushing!
  • 10. Releases Have a regular cadence, something short like 1 or 2 weeks. Target each piece of work to these releases.
  • 11. Many thanks to... @beuno - supplied almost all of the content :) the entire @ubuntuone team