Agile Engineering: What the heck is that? - 3Back › ... › Agile-Engineering_V2a.pdf · Agile...
Transcript of Agile Engineering: What the heck is that? - 3Back › ... › Agile-Engineering_V2a.pdf · Agile...
Agile Transformation Summit 2015
Agile Engineering: What the heck is that?
Presenters: Rick Regueira and Marcelo R. Lopez, Jr.
May 28th, 2015
Do not reproduce without permission.
Who are these guys?
Rick Regueira- [email protected] Co-Founder/South Florida Agile Association
Marcelo Lopez - [email protected] Agile Coach/Trainer
K.T.S.S.
• Intro
• Agile Engineering?
• Q/A
Quick Survey
● How many of us are Developers?
● Agile Development >1Yr?
● Agile Engineering?
Drop in your video here
● Definitions?
● Practices?
● Ideas?
Agile Engineering
Waterfall
· Known Aliases o SDLC o BUFR/BUFD o V-‐Model
So what does that mean? • You choose what’s most valuable.
• Focus on what you chose.
• Active collaboration wins over “Follow the Plan”.
• Communicate. Get that feedback.
Modern Agile is drawing
from many disciplines
• War Theory
• Science
• Philosophy
• Cognitive Science
• Neuroscience
• Behavioral Economics
• Systems Thinking
• Software Development
Agility: Adapting to reality, versus predicting the future.
Software Craftsmanship Manifesto
http://manifesto.softwarecraftsmanship.org/
If it’s so OBVIOUS, why don’t we do it? ...or half-heartedly?
DISCUSS FRANKLY
• Collaboration • Team doesn’t mean coders
• Delivery means it’s in the customers hands
• Sustain your teams pace
• Working Out Loud Circles
Agile Engineering Culture
Visibility, Visibility, Visibility - If I can’t see it, it doesn’t exist.
Collaboration, Collaboration, Collaboration If the brains didn’t talk it out, it never happened.
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
eXtreme Programming
DISCUSS FRANKLY
Extreme Pain? Paired Suffering? Test until it hurts?
Designs, and Patterns and Principles?
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
The 800Lb “Legacy” in the room
What is Legacy Code?
� “Legacy code as code without tests, which reflects the perspective of legacy code being difficult to work with in part due to a lack of automated regression tests.” – Michael Feathers
Test “Driven” Development
“Code just enough to make it pass”
Code Coverage Tests.
User-‐Acceptance TesHng.
Automate, Automate, Automate.
eXtreme Programming
“Refactoring *is* design *is* maintainability.
Maintainability *provides* productivity.
Don't cut productivity in favor of "productivity"!
– Rob Myers, @agilecoach
TDD - Why does it matter?
Where defect was introduced
Time to correct Time Factor
Requirements Negligible
Design 5 minutes 1x
Implementation 15 minutes 3x(Design)
Integration Testing 35 minutes 7x(Design) 2.3x (Implementation)
System Test 70 minutes 14x (Design) 7.25x (Implementation) 2x (Integration)
Customer Found it! 1405 hours >16000x (Design)
Source: Software Engineering Institute/Xerox - 1999
Why do I care about catching defects early?
Test “Driven” Development - Thoughts...
“Tests should be designed with great care. Business people, rather than programmers, should design most funcHonal tests. Unit tests should be limited to those that can be held up against some “third-‐party” success criteria.” -‐ James Coplien
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
Behavior Driven Development (Executable Specifications)
As A... I want... So that I can...
Given... When…[And] Then…[And]
Behavior Driven Development (Executable Specifications)
User Story format: As a Shopper I want to put items in my cart So I can manage my purchase
Scenario: User adds items to cart Given I'm a logged-in User When I go to the Item page And I click "Add item to cart" Then the quantity of items in my cart should increase And my subtotal should increase And the warehouse inventory should decrease
Behavior Driven Development (Executable Specifications)
So where do Executable Specifications come into play?
Stories
Acceptance Criteria
Specification by examples
Code
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
Engineering Quality Code
Know your tools
● Static Analysis ○ Cyclomatic Complexity ○ Memory Integrity ○ Cohesion & Coupling
Visual Studio
Klocwork Insight
Coverity Advisor
Quality Code Engineering
● Who’s looked at your code lately?
○ Code Reviews ○ Team Inspections
● Is your code all that’s reviewed?
• XP - eXtreme Programming (Pairing, White/Black Box Testing)
• TDD - Test Driven Development • BDD - Behavior Driven Development • Static Code Analysis ? • Code Reviews / Team Inspections ? • CI/CD - Continuous Integration/Deployment
Agile Engineering Practices
Continuous Integration
When do I integrate?
What do I integrate?
How do I integrate?
Meet your tools – Jenkins, MSBuild, Buildbot
Continuous Deployment
When do I deploy?
What do I deploy?
How do I deploy?
Meet your tools – Chef, Puppet, Werker
Jumpstarting Agile Engineering
Certified Scrum Developer® =
Scrum Framework Training &
Agile Engineering Skills Training
● TDD ● Pairing ● Continuous Integration/Delivery ● Software Craftsmanship
Tie it up in a ribbon
� Agile Engineering is about…Well Formed Teams® � Professional accountability to each other.
� Standard of Care – i.e. QUALITY � Swarming around your work to get to done.
� And of course, Technical Aptitude.
� Read more at:
http://goo.gl/RhnsBh
Respect the rights
Copyrights © & Registered Trademarks ®
� 3Back LLC, (http:/www.3back.com) � IPC Subway, (http://www.ipcoop.com) � Michael Feathers, @michaelfeathers � Rob Myers, @agilecoach � James Coplien, @jcoplien � Software Craftsmanship Manifesto
(softwarecraftsmanship.org) � Dr. Winston W. Royce � Scrum Alliance, scrumalliance.com
Session Retrospective
Don’t forget join the South Florida Agile Association on Meetup.com! (Look for the sign-up sheet)
What did we do well? What could we have done better?