Agile Programming

Download Report

Transcript Agile Programming

Advanced C++ Programming Seminar

Anton Kaiser, Summer Term 2012

1.

2.

3.

4.

5.

1.

2.

1.

2.

3.

4.

1.

2.

3.

4.

5.

6.

Overview Agile Manifest Agile Methods Extreme Programming Values Principles Rules and Practices Lifecycle Scrum Backlogs Sprints Daily Scrum Review and Retrospective Summary Common Mistakes Remarks and Conclusions Sources 2

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:     Individuals and interactions Working software over over processes and tools comprehensive documentation Customer collaboration Responding to change over contract negotiation over following a plan 3

         Extreme Programming (XP) Scrum Agile Unified Process (AUP) Crystal Clear Feature Driven Development (FDD) GSD Kanban (development) Open Unified Process (OpenUP) … 4

1.

2.

3.

4.

5.

1.

2.

1.

2.

3.

4.

1.

2.

3.

4.

5.

6.

Overview Agile Manifest Agile Methods Extreme Programming Values Principles Rules and Practices Lifecycle Scrum Backlogs Sprints Daily Scrum Review and Retrospective Summary Common Mistakes Remarks and Conclusions Sources 5

  ◦ ◦ Extreme Programming is based on ◦ ◦ ◦ ◦ ◦ Simplicity Communication Feedback Courage Respect Extreme Programming Brings the whole team together with simple practices Gives feedback to the team and enables it to tune the practices to their unique situations 6

  ◦ ◦ ◦ Communication ◦ ◦ ◦ ◦ ◦ On-site customer User Stories Pair Programming Collective Ownership Daily Standup Meetings Simplicity KISS – „Keep it simple, stupid“ YAGNI – „You ain‘t gonna need it“ DTSTTCPW – „Do the simplest thing that could already work“ 7

  ◦ ◦ ◦ Feedback ◦ ◦ ◦ ◦ Feedback from code by unit-testing regularily Short iteration cycles for continuous feedback Integrating the customer for important feedback The more feedback on all levels the better Courage Open communication with all team members, including the customer Prototypes shall be thrown away Refactoring 8

    ◦ Embrace change It is better to learn how to react to changes than to predict the future Incremental Changes ◦ Small steps are faster and easier Quality ◦ ◦ The team has to be proud of its work Communication Use the collective knowledge of the whole team 9

10

 ◦ ◦ ◦ ◦ ◦ ◦ Managing Provide a dedicated open work space Set a sustainable pace Start the day with a stand up meeting Measure the project‘s velocity Move people around Fix XP when if breaks 11

12

 ◦ ◦ ◦ ◦ ◦ ◦ ◦ Coding The customer is always available Code the unit tests first Agree on collective ownership Code must be written to agreed standards All production code is Integrate often pair programmed Refactor whenever and wherever possible 13

 ◦ ◦ ◦ ◦ Designing Simplicity Choose a system metaphor  A vision for the whole system  Also means choosing appropriate names and locations for functions Write class-responsibility-collaboration cards (CRC cards) for brainstorming No functionality is added early 14

 ◦ ◦ ◦ ◦ Testing All code must have unit tests All code must pass all unit tests before it can be released When a bug is found, tests are created Acceptance tests are run often 15

16

17

18

19

1.

2.

3.

4.

5.

1.

2.

1.

2.

3.

4.

1.

2.

3.

4.

5.

6.

Overview Agile Manifest Agile Methods Extreme Programming Values Principles Rules and Practices Lifecycle Scrum Backlogs Sprints Daily Scrum Review and Retrospective Summary Common Mistakes Remarks and Conclusions Sources 20

  ◦ Scrum Is an empirical process control theory (EPC)  Iterative, incremental approach ◦ ◦ ◦ ◦  Optimize predictability and control risk Can be seen as a framework within which you can employ various processes and techniques The three legs that uphold EPC are Transparency Inspection Adaption 21

22

23

 The daily scrum ◦ Takes 15 minutes at the start of each day ◦ Every team member answers to three questions:  What have I accomplished since the last daily scrum?

  What got in my way?

What will I do until the next daily scrum?

24

25

26

   Changing the basics ◦ „Let‘s make each sprint last 6 Weeks for the next 5 months“ ◦ ◦ ◦ Keeping distance from the Product Owner ◦ „He is too busy for our daily scrum“ ◦ „Daily scrum will be every second day“ „All features have first priority to me!“ Prolonging the daily scrum into endless technical discussions Switching and merging roles  Product owner + scrum master = project manager Team ◦ Creating huge teams (> 9 developers) ◦ ◦ Tools instead of oral communication Let the „rock stars“ do the whole work 27

 ◦ ◦ ◦ Tools „I don‘t need to understand scrum, my tool will manage everything for me“ „Why use flipcharts? We have expensive tools for communication!“ Not making use of scrum tools at all 28

 ◦ ◦ ◦ Artifacts Product Backlog    No preparation for sprint planning meetings User stories without any statement  Stories are too big Sprint Backlog Not visible in the daily scrum     Too many tasks „in progress“ Burndown Chart Not visible in the daily scrum Used as management control instrument instead of a helping instrument to the team Not drawing consequences from unfavorable progress chart 29

1.

2.

3.

4.

5.

1.

2.

1.

2.

3.

4.

1.

2.

3.

4.

5.

6.

Overview Agile Manifest Agile Methods Extreme Programming Values Principles Rules and Practices Lifecycle Scrum Backlogs Sprints Daily Scrum Review and Retrospective Summary Common Mistakes Remarks and Conclusions Sources 30

      Agile programming = common sense!

Easier and faster reaction to changes Always having a compiling and running program is great!

Less bugs thanks to constant testing Satisfaction with both programmers and customers Heavy focus on communication  Hard to apply with offshore development 31

2.

3.

4.

5.

1.

6.

7.

Agile Principles, Patterns, and Practices in C#, Martin C. Robert, Prentice Hall, 2006 http://www.XProgramming.com

http://www.it-agile.de

http://www.agile-process.org

Presentation „Überblick über XP“ by Dr. Martin Geier, methodpark AG, 2011 Presentation „Anleitung zum Ruinieren eines Scrum-Teams“, Udo Wiegärtner, .NET day Franken 2012 Video „Explaining Scrum in less than 120 seconds“ ( http://youtu.be/WxiuE-1ujCM ) 32