Introduction to
Agile Engineering Practices

           Yuval Yeret
    Agile Coach @ Agilesparks
     yuval@agilesparks.c...
What’s missing?
What is technical debt?
Henrik Kniberg
Driving Force - Change
Iterate / Inspect & Adapt
BIG Features
Longer iterations?
Agile Architecture/Design
                                Prepare for
                                 the future




Focu...
Share the work


• Reach a Shared Understanding

• Courage to work outside comfort
  zone

• Make it Easy to work anywhere...
Continuous
Collective Code  Coding Standards
                Refactoring
Design Patterns
Ownership (CI)
 Integration




 ...
45

         41.33

    40



    35

                 31.03
    30



%   25
                                            ...
Next Steps

Learn more about the engineering practices. Ask your teams questions
that will engage them in this learning as...
XP and Scrum
Ask us how!




                     info@agilesparks.com
                    yuval@agilesparks.com
Get the slides at http...
Go on, Jump into the details!
Continuous Integration
Agile Testing
Cost per cycle should be minimal  Automate Automate Automate!!!
 Unit / Integration / Acceptance / Regress...
Test-Driven Development/Design

TDD is a method of designing software, not
merely an approach to testing.
Over a period ...
Refactoring
 Refactoring increases
  flexibility and the
  product lifetime by
  allowing and
  encouraging
  developers ...
Design Patterns
 Knowledge
  Management - Avoid
  reinventing the wheel
 Improves Refactoring
  / TDD / Design
 Decidin...
Simplicity / Just in Time


Simplicity - the art of
 maximizing the amount of
 work not done - is essential.
How to evolve Design/Work


• Simple Design
• Design Patterns
• Agile Modeling
Simple Design
Start Simple

Evolve JUST IN TIME

YAGNI –
You Ain’t Going to Need it
Agile Modeling
 Just enough Modeling/Documentation
 Use the relevant model/artifact for the situation
 Only keep models...
Coding Standards


 Code must be formatted
  to agreed coding
  standards.
 Coding standards keep
  the code consistent
...
Collective Ownership
Collective Code Ownership
 encourages everyone to
 contribute new ideas to all
 segments of the proje...
Pair Programming
Two team
 members
 working on the
 same code base
 and working
 side-by-side
 (Also applicable
 to tests/...
Pair Programming ROI
Pair Programming ROI
Pair Programming ROI
Pair Programming ROI
Pair Programming
 Very effective, if a good cultural fit for the team.
    Hard to adopt, mainly due to personal space a...
Iterate / Inspect & Adapt

Our highest priority is to satisfy the
 customer through early and continuous
 delivery of valu...
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Agile Eng Practices Agilesparks
Upcoming SlideShare
Loading in …5
×

Agile Eng Practices Agilesparks

2,016 views

Published on

Why Agile engineering practices are key to having a highly successful Agile project, and what exactly are they

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,016
On SlideShare
0
From Embeds
0
Number of Embeds
71
Actions
Shares
0
Downloads
2
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • Scrum/Agile Projects introduce several challenges/forces that are easier to deal with when leveraging agile engineering practicesEngineering practices are key to getting high ROI on Agile adoption, and to continued improvement of the product development organization.  Scrum is an agile Project management frameworkIn Scrum, Engineering practices are up to the team to defineSince Scrum is a light-weight framework, it is easy to plug agile engineering practices into it.
  • Compressed Cycle compared to waterfallSymptom:everything slows down (“we don’t have time to develop anything, we test 50% of the time”)Done is not really Done. PSP==Potentially S#!*ty ProductNeed to minimize cost of stuff repeated per iteration – enable effective small batches
  • Symptoms:Our features/user stories are too big to fit into one iteration – we need LONGER iterations..We need a long time to nail down the design for this. Our PSP for this iteration is a high-level design…Solution?Effective User Story Analysis to create Minimum Marketable Features (MMF)DesignEither do all design up frontOr have a growing evolutionary designEveryone works on highest priority – EVEN if outside comfort zoneNeed to improve collective code ownershipDevelopers need to feel safe to work everywhere in the team’s codebase
  • Symptoms:Our features/user stories are too big to fit into one iteration – we need LONGER iterations..We need a long time to nail down the design for this. Our PSP for this iteration is a high-level design…Solution?Effective User Story Analysis to create Minimum Marketable Features (MMF)DesignEither do all design up frontOr have a growing evolutionary designEveryone works on highest priority – EVEN if outside comfort zoneNeed to improve collective code ownershipDevelopers need to feel safe to work everywhere in the team’s codebase
  • Symptoms:Our features/user stories are too big to fit into one iteration – we need LONGER iterations..We need a long time to nail down the design for this. Our PSP for this iteration is a high-level design…Solution?Effective User Story Analysis to create Minimum Marketable Features (MMF)DesignEither do all design up frontOr have a growing evolutionary designEveryone works on highest priority – EVEN if outside comfort zoneNeed to improve collective code ownershipDevelopers need to feel safe to work everywhere in the team’s codebase
  • Agile Eng Practices Agilesparks

    1. 1. Introduction to Agile Engineering Practices Yuval Yeret Agile Coach @ Agilesparks yuval@agilesparks.com Mobile: 054-4802458
    2. 2. What’s missing?
    3. 3. What is technical debt?
    4. 4. Henrik Kniberg
    5. 5. Driving Force - Change
    6. 6. Iterate / Inspect & Adapt
    7. 7. BIG Features
    8. 8. Longer iterations?
    9. 9. Agile Architecture/Design Prepare for the future Focus on the NOW / Just in Time
    10. 10. Share the work • Reach a Shared Understanding • Courage to work outside comfort zone • Make it Easy to work anywhere in the code
    11. 11. Continuous Collective Code Coding Standards Refactoring Design Patterns Ownership (CI) Integration Test Driven Design/Development Pair Programming Agile Testing
    12. 12. 45 41.33 40 35 31.03 30 % 25 Total 20 17.88 15 10 5.8 5 2.29 1.73 0 PSPsm XP Agile Scrum ISO9001 CMMI®
    13. 13. Next Steps Learn more about the engineering practices. Ask your teams questions that will engage them in this learning as well. Evaluate how YOUR engineering practices/level are affecting your agile environment Pay attention to Technical Debt, Batch cost, knowledge silos as part of your Inspect and Adapt cycle – Leverage your Scrum retrospectives Encourage teams to establish an engineering level backlog and assign capacity to work on it. Setup the right measures, communicate the right message. Consider carefully whether to pick and choose practices or adopt a methodology like Extreme Programming
    14. 14. XP and Scrum
    15. 15. Ask us how! info@agilesparks.com yuval@agilesparks.com Get the slides at http://www.slideshare.net/yyeret/agile-eng-practices- agilesparks-v2
    16. 16. Go on, Jump into the details!
    17. 17. Continuous Integration
    18. 18. Agile Testing Cost per cycle should be minimal  Automate Automate Automate!!!  Unit / Integration / Acceptance / Regression Lean test documentation –  Consider Exploratory Testing where applicable.  Focus on outline, elaborate details verbally as you go, or trust testers to do the right thing. QA Measurements should drive Agile Testing Minimize freeze/stabilization time  Aim for shorter length, and consider it a maturity sign  How? • Maximize quality delivered for regular sprints • Maximize efficiency of manual test work • Did we mention Automate?
    19. 19. Test-Driven Development/Design TDD is a method of designing software, not merely an approach to testing. Over a period of time, as a side effect, TDD will lead to suite of automated unit tests.
    20. 20. Refactoring  Refactoring increases flexibility and the product lifetime by allowing and encouraging developers to change the design of the system as needed.  Quality to market and costs are reduced because continuous Refactoring keeps the design from degrading over time and thus making it harder to modify the product correctly”
    21. 21. Design Patterns  Knowledge Management - Avoid reinventing the wheel  Improves Refactoring / TDD / Design  Deciding when to use – Experience/Skill of professional developers
    22. 22. Simplicity / Just in Time Simplicity - the art of maximizing the amount of work not done - is essential.
    23. 23. How to evolve Design/Work • Simple Design • Design Patterns • Agile Modeling
    24. 24. Simple Design Start Simple Evolve JUST IN TIME YAGNI – You Ain’t Going to Need it
    25. 25. Agile Modeling  Just enough Modeling/Documentation  Use the relevant model/artifact for the situation  Only keep models you REALLY need to maintain. Its ok to model and throw away later
    26. 26. Coding Standards  Code must be formatted to agreed coding standards.  Coding standards keep the code consistent and easy for the entire team to read and refactor.
    27. 27. Collective Ownership Collective Code Ownership encourages everyone to contribute new ideas to all segments of the project. Any developer can change any line of code to add functionality, fix bugs, or refactor. No one person becomes a bottle neck for changes.
    28. 28. Pair Programming Two team members working on the same code base and working side-by-side (Also applicable to tests/etc. – not just code)
    29. 29. Pair Programming ROI
    30. 30. Pair Programming ROI
    31. 31. Pair Programming ROI
    32. 32. Pair Programming ROI
    33. 33. Pair Programming  Very effective, if a good cultural fit for the team.  Hard to adopt, mainly due to personal space and lack of privacy issues, as well as individuality.  Try and Buy - on writing User Stories, debugging of difficult defects/code areas, for Code reviews of critical production code, etc.
    34. 34. Iterate / Inspect & Adapt Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. BUT - iterating is HARD and expensive?

    ×