essential elements of distributed agile

36
Essential Elements of Distributed Agile November 18, 2009

Upload: vernon-stinebaker

Post on 13-Apr-2017

1.819 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Essential Elements Of Distributed Agile

Essential Elements of Distributed Agile

November 18, 2009

Page 2: Essential Elements Of Distributed Agile

2

Agenda

Purpose and expected outcomes About the presenter About Perficient Agile – concepts and methodologies How Agile concepts and methodologies address the

challenges that result in failed projects

Page 3: Essential Elements Of Distributed Agile

3

Purpose and Outcomes Purpose:

– Familiarize you with:• Perficient• Agile concepts and methodologies• Successfully applying agile concepts to distributed projects

Outcomes:– Recognize the challenges (distributed) projects face– Gain familiarity with key agile concepts and methodologies– Understand how agile principles and associated tools can

be applied to deliver successful projects in a distributed environment

Page 4: Essential Elements Of Distributed Agile

4

Thank you

Special note of thanks to Mr. Bill Li - UPerform

Page 5: Essential Elements Of Distributed Agile

5

About Me

Vernon Stinebaker (史文林)http://www.linkedin.com/in/vernonstinebaker– Director of Technology/Principal Architect– 20+ years software development and process experience

• CMMI, SDLC/waterfall, and agile methodologies– Almost 10 years agile experience– Certified ScrumMaster/Certified Scrum Practitioner– Founder of the open source FDDTools project

Page 6: Essential Elements Of Distributed Agile

6

Perficient Fast Facts Founded in 1997 Publicly traded (NASDAQ: PRFT) with @$240

million in annual revenues 1,500 employees, 1,400+ certified business

and technology consultants Over 600 blue chip clients with 80% repeat

business rate Strong partnerships six of the major vendors:

IBM, Microsoft, TIBCO, Documentum, Oracle-Siebel and webMethods

20 locations in North America, Offshore Development Centers in Hangzhou and Macedonia and a technology consulting recruiting office in India

Page 7: Essential Elements Of Distributed Agile

7

2009 IBM Information Agenda Partner of the Year 2009 Forbes 200 Best Small Companies in America 2008 Fortune American Fastest Growth Companies 2008 IBM Lotus Distinguished Partner Award for

North America 2007 IBM Information Management North American

Distinguished Partner 2007 Business 2.0 100 Fastest Growing Tech

Companies — #6 2007 Fortune Small Business America’s Fastest-

Growing Small Public Businesses — #9 2007 Fortune 100 Fastest-Growing Companies —

#15

Perficient Recent Recognition & Awards

Page 8: Essential Elements Of Distributed Agile

8

About Perficient China

Perficient (Hangzhou) Co., Ltd. 博克软件(杭州)有限公司http://www.perficient.com– Established 2004 as BoldTech Systems (Hangzhou) Co., Ltd.– WOFE of Perficient Inc. (NASAQ: PRFT)– Agile Enable-M Methodology– 2008 - CMMI 5– 20 Agile Certified Project Managers– 20+ projects successfully delivered– Currently running 17 concurrent projects

• Some multi-year• Some with large teams (@50)• Many repeat business

Page 9: Essential Elements Of Distributed Agile

9

32% of projects are successful (on time, on budget) 44% of projects are challenged (late, over budget) 24% of project fail (cancelled or never used)

[The Chaos Report 2009]

Project Failure Statistics

Page 10: Essential Elements Of Distributed Agile

10

Lack of User Input Requirements & Specifications Lack of Executive Support Technology Issues Unrealistic Expectations or Time Frames Unclear Objectives

[Abridged list from the Standish Group – Chaos Report - 2005]

Why Projects Fail

Page 11: Essential Elements Of Distributed Agile

11

Distributed Agile

How does performing work in distributed locations effect these challenges?

They become even more acute!

Page 12: Essential Elements Of Distributed Agile

12

How do we address these challenges?

Agile!

Page 13: Essential Elements Of Distributed Agile

13

Agile Manifesto

Page 14: Essential Elements Of Distributed Agile

14

Agile Manifesto Principles Our highest priority is to satisfy the customer through early and continuous

delivery of valuable software. Welcome changing requirements, even late in development. Agile processes

harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of

months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and

support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a

development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and

users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity -- the art of maximizing the amount of work not done -- is essential. The best architectures, requirements, and designs emerge from self-

organizing teams. At regular intervals, the team reflects on how to become more effective, then

tunes and adjusts its behavior accordingly.

Page 15: Essential Elements Of Distributed Agile

15

Modularity - Modularity allows a process to be broken into activities. Iterative - Things change. Short iterations allow us to adapt and respond

to change. Time-bound - Iterations are a perfect unit for planning the software

development project. Parsimony - Agile process focus on parsimony: they require the minimum

number of activities necessary to mitigate risks and achieve their goals. Adaptive - The agile process adapts to attack new risks. Incremental - We don’t try to build the entire system at once. Instead we

partition it into increments which can be developed in parallel. Convergent - We actively attack all risks worth attacking. People Oriented - Agile processes favor people over process and

technology. People are empowered. Collaborative - Agile processes foster communication among team

members.

Frequent, Tangible, Working Results - Peter Coad

Characteristics of Agile

Miller, Granville G, “The Characteristics of Agile Software Processes”,http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/Agile/12510385.pdf

Page 16: Essential Elements Of Distributed Agile

16

Perficient’s Enable-M Methodology

Page 17: Essential Elements Of Distributed Agile

17

Initially based on XP Kent Beck was a consultant on initial implementation Scrum and other agile frameworks, methodologies,

and practices incorporated Enhanced to support distributed projects Additional rigor as required

by clients to satisfy CMMI Level 5 practices

Enable-M

Page 18: Essential Elements Of Distributed Agile

18

Lack of User Input Requirements & Specifications Issues Lack of Executive Support Technology Issues Unrealistic Expectations or Time Frames Unclear Objectives

[Abridged list from the Standish Group – Chaos Report - 2005]

Why Projects Fail

Page 19: Essential Elements Of Distributed Agile

19

How do we use agile to address these issues?

Page 20: Essential Elements Of Distributed Agile

20

On-site Customer Dedicated Project/Product Owner Collaboration/Communication

– Onshore/offshore Test-driven Requirements

– Preferably customer developed acceptance tests(but not all that common)

Daily Stand-up Meetings Daily e-communications Iterative delivery DEMO!!!!

Lack of User Input

Page 21: Essential Elements Of Distributed Agile

21

Tools– Project Wiki’s– Audio/video conferencing

(recording when appropriate) Web conference

– Live DEMO!!!

Lack of User Input

Page 22: Essential Elements Of Distributed Agile

22

Test Driven Requirements– INVEST

Iterative development producing “Frequent, tangible, working results” (aka “Potentially Shippable Product) every iteration – coupled with demo

Iterative requirement discovery Embrace change (No scope creep) Onshore Business Analysts

– No ‘over the wall’ projects Demo, Demo, Demo

Requirements & Specifications Issues

Page 23: Essential Elements Of Distributed Agile

23

Tools– Low-fidelity (planning board, burn-down charts)– High-fidelity

• GreenHopper• JIRA• Internal requirements coverage tool

– Integrated with CI process Communications

Requirements & Specifications Issues

Page 24: Essential Elements Of Distributed Agile

24

Lack of Executive Support

Communications– Planned communications

• Clear communications channels• Clear escalation paths and procedures

– Weekly Project Management Office Report• Green, Yellow, Red

Tools– Wiki– Big, visible charts

Demos

Page 25: Essential Elements Of Distributed Agile

25

Technology Issues

Build a solid foundation in advance Just-in-time training

– Initial travel onsite (one location or the other) to bring team up-to-speed

Clear support channels Building and leveraging outstanding partnerships

Page 26: Essential Elements Of Distributed Agile

26

Unrealistic Expectations or Time Frames

Collaborative planning– Client participates in planning process– Agile ‘planning poker’ process when possible– Team commits to schedule – commitment driven iterations

Knowing to say No– Factoring in quality– Support from historical data

Transparency and Trust– Initial on-site work, especially with new clients

Page 27: Essential Elements Of Distributed Agile

27

Unclear Objectives

(Limited) Up-front Requirements analysis and Design– Big picture view

Test Driven Work Embracing change

– Detailed objectives may change with time Inspect and Adapt

– Provide frequent opportunities to make minor course adjustments

Page 28: Essential Elements Of Distributed Agile

28

Some answers can be found in a report delivered at the Agile 2006 International Conference

Distributed Scrum: Agile Project Management with Outsourced Development TeamsAgile 2006 International ConferenceJeff Sutherland, Anton Viktorov, Jack Blount

They advocate:– Cross functional teams that are relatively

autonomous– Daily stand-up meetings help break down cultural

barriers and disparities in work styles– Scrum-of-Scrums where team representatives

meet regularly (from all locations)

Distributed teams best practices

Page 29: Essential Elements Of Distributed Agile

29

Daily meetings of all developers from multiple sites

Augmented e-communications (Wiki, recordings, web-conferences, etc.)

Frequent, automated builds from a single repository

No distinction between developers at different sites on the same team

Seamless integration of XP practices

Distributed teams best practices (continued)

Page 30: Essential Elements Of Distributed Agile

30

What are the most important Agile characteristics required for a successful project?

Page 31: Essential Elements Of Distributed Agile

31

Great people!

Page 32: Essential Elements Of Distributed Agile

32

Communication

Page 33: Essential Elements Of Distributed Agile

33

Quality

Test Driven RequirementsTest Driven Development

Automated/CI integrated Unit and Functional Testing

Page 34: Essential Elements Of Distributed Agile

34

Delivery!

Delivering “Frequent, tangible, working results” every iteration.

Page 35: Essential Elements Of Distributed Agile

35

Does it work?

Yes!

30+ satisfied clients, many with repeat business can’t be wrong.

Page 36: Essential Elements Of Distributed Agile

36

Q&A