agile for me- codestock 2009

53
Agile: Agile: What’s in it for me? What’s in it for me? CodeStock 2009 CodeStock 2009

Upload: adrian-carr

Post on 10-May-2015

666 views

Category:

Technology


0 download

DESCRIPTION

A talk I gave at CodeStock 2009.

TRANSCRIPT

Page 1: Agile for Me- CodeStock 2009

Agile:Agile:

What’s in it for me?What’s in it for me?CodeStock 2009CodeStock 2009

Page 2: Agile for Me- CodeStock 2009

Adrian CarrAdrian Carr

•Software Developer for 10 yearsSoftware Developer for 10 years

•Currently work for Jewelry Television in KnoxvilleCurrently work for Jewelry Television in Knoxville

•Worked for Fidelity Information Systems in AtlantaWorked for Fidelity Information Systems in Atlanta

•Worked for Alltel Information Systems in AtlantaWorked for Alltel Information Systems in Atlanta

•Worked for a large non-profit in Boone, NCWorked for a large non-profit in Boone, NC

•Founder and Organizer of Knoxville Agile Founder and Organizer of Knoxville Agile Practitioner’s Group (Practitioner’s Group (http://http://agileknoxville.comagileknoxville.com))

Page 3: Agile for Me- CodeStock 2009

DisclaimerDisclaimer

• Be skeptical, but open minded.Be skeptical, but open minded.

• This is how I develop software. Take the parts This is how I develop software. Take the parts that make sense to you. Ignore the rest.that make sense to you. Ignore the rest.

– Ron JeffriesRon Jeffries

• If you currently have a high rate of success on If you currently have a high rate of success on your projects, then this may not be the best your projects, then this may not be the best thing for you.thing for you.

Page 4: Agile for Me- CodeStock 2009

What Agile is Not Supposed to What Agile is Not Supposed to BeBe

Page 5: Agile for Me- CodeStock 2009

Some Agile MythsSome Agile Myths

• No documentationNo documentation

• Cowboy codingCowboy coding

• No up-front designNo up-front design

• Agile is a silver bullet.Agile is a silver bullet.

Page 6: Agile for Me- CodeStock 2009

What is Agile Software What is Agile Software Development?Development?

•project management processproject management process that that encourages frequent inspection and encourages frequent inspection and adaptation, adaptation,

•a leadership philosophya leadership philosophy that encourages that encourages teamwork, self-organization and teamwork, self-organization and accountability, accountability,

•a set of engineering best practicesa set of engineering best practices that that allow for rapid delivery of high-quality allow for rapid delivery of high-quality software, software,

•a business approacha business approach that aligns that aligns development with customer needs and development with customer needs and company goals company goals

http://en.wikipedia.org/wiki/Agile_software_development

Page 7: Agile for Me- CodeStock 2009

Agile PracticesAgile Practices

• Scrum- Scrum- – Small, self-organizing, cross-functional teamsSmall, self-organizing, cross-functional teams– Defined roles within a team.Defined roles within a team.– Defined rules, based on project management.Defined rules, based on project management.– Work in short iterations, or “sprints”Work in short iterations, or “sprints”– Demo progress at the end of every iteration.Demo progress at the end of every iteration.– Re-plan for the next iteration, always doing Re-plan for the next iteration, always doing

the highest value things first.the highest value things first.

Page 8: Agile for Me- CodeStock 2009

Agile MethodologiesAgile Methodologies

• XPXP– Very disciplined.Very disciplined.– Onsite customer Onsite customer – Pair programmingPair programming– Unit testingUnit testing– RefactoringRefactoring– Frequent deliveryFrequent delivery– Continuous integrationContinuous integration– Test-Driven DevelopmentTest-Driven Development– SimplicitySimplicity

Page 9: Agile for Me- CodeStock 2009

The Agile ManifestoThe Agile Manifesto

•Individuals and interactionsIndividuals and interactions over processes over processes and tools and tools •Working softwareWorking software over comprehensive over comprehensive documentation documentation •Customer collaborationCustomer collaboration over contract over contract negotiationnegotiation•Responding to changeResponding to change over following a plan over following a plan

That is, while there is value in the items on That is, while there is value in the items on the right, we value the items on the left more. the right, we value the items on the left more.

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

Through this work we have come to value:Through this work we have come to value:

Page 10: Agile for Me- CodeStock 2009

Traditional ProjectsTraditional Projects

http://www.total-quality-management-software.com/gantt-chart-examples.asp

Page 11: Agile for Me- CodeStock 2009

Traditional Projects:Traditional Projects:

http://www.projectcartoon.com

Page 12: Agile for Me- CodeStock 2009

http://www.projectcartoon.com

Page 13: Agile for Me- CodeStock 2009

http://www.projectcartoon.com

Page 14: Agile for Me- CodeStock 2009

IT has an Image ProblemIT has an Image Problem

• Typically, we’re seen as a Typically, we’re seen as a roadblock. When we do succeed, roadblock. When we do succeed, we're viewed as too slow, too we're viewed as too slow, too expensive, or delivering poor expensive, or delivering poor quality. quality.

Page 15: Agile for Me- CodeStock 2009

What’s in it for Me?What’s in it for Me?

Page 16: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• What is the #1 killer of projects?What is the #1 killer of projects?– Answer: TimeAnswer: Time

• In traditional projects, we often run out of In traditional projects, we often run out of time and something has to go. What is it?time and something has to go. What is it?

• Quality, documentation, testing.Quality, documentation, testing.

• In agile projects, testing and quality is a In agile projects, testing and quality is a part of every iteration. What get cut is part of every iteration. What get cut is features, and that’s not necessarily a bad features, and that’s not necessarily a bad thing.thing.

Page 17: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• ROIROI

• There's a reason why you're paying these There's a reason why you're paying these expensive people to do this work for you. expensive people to do this work for you. – You want your stuff.You want your stuff.– You want it as soon as possible. You want it as soon as possible. – You'd rather not pay more for it than you have to. You'd rather not pay more for it than you have to.

• Or, since you’re going to have to pay for it, Or, since you’re going to have to pay for it, you at least want to get the most for your you at least want to get the most for your money.money.– A team of 8 -10 people costs about a million A team of 8 -10 people costs about a million

dollars a year.dollars a year.

Page 18: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• Traditional Projects and the Cost of ChangeTraditional Projects and the Cost of Change– Feature bloat. You’re paying for unused or rarely Feature bloat. You’re paying for unused or rarely

used features.used features.

• Idea> Idea> AnalysisAnalysis> > DevelopmentDevelopment> > TestingTesting> > Deployment> Return on Investment Deployment> Return on Investment – Most of the costs are in the Analysis, Most of the costs are in the Analysis,

Development, and Testing.Development, and Testing.

• Reduced time to market.Reduced time to market.– Agile teams will do the most important things Agile teams will do the most important things

first, and deploy them in production as soon as first, and deploy them in production as soon as possible.possible.

Page 19: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• Reduced risk. You get to assess it and Reduced risk. You get to assess it and decide on it every few weeks. decide on it every few weeks. – If you want to stop, you can.If you want to stop, you can.

• Changes after deployment: Agile Changes after deployment: Agile teams can respond more quickly, teams can respond more quickly, assuming they have unit tests and assuming they have unit tests and quality code.quality code.

Page 20: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• Everything is just fine…..Everything is just fine…..

http://cargolaw.com/2007nightmare_ital.florida.html

Page 21: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• Reality always wins in the end, so get Reality always wins in the end, so get there sooner.there sooner.

http://cargolaw.com/2007nightmare_ital.florida.html

Page 22: Agile for Me- CodeStock 2009

I Own or Run This Business-I Own or Run This Business-What’s in it for Me?What’s in it for Me?

• What if the project is doomed to fail?What if the project is doomed to fail?– If you are going to fail, do it fast.If you are going to fail, do it fast.

http://www.cargolaw.com/2007nightmare_msc.napoli.html

Page 23: Agile for Me- CodeStock 2009

I’m a Project Manager-I’m a Project Manager-What’s in it for Me?What’s in it for Me?

• Project Manager’s job is to create a Project Manager’s job is to create a schedule, monitor progress, control schedule, monitor progress, control the risks, and keep people the risks, and keep people informed.informed.

• This is very difficult to do. Especially This is very difficult to do. Especially when people are afraid to tell the truth.when people are afraid to tell the truth.

• How does a project get to be a year How does a project get to be a year behind schedule?behind schedule?

– Answer: One day at a time.Answer: One day at a time.

Page 24: Agile for Me- CodeStock 2009

I’m a Project Manager-I’m a Project Manager-What’s in it for Me?What’s in it for Me?

• You can have people get started earlier. You can have people get started earlier. – Typically, you don't give the green light for Typically, you don't give the green light for

developers to actually get started developing developers to actually get started developing anything until we know all the requirements. anything until we know all the requirements. With Agile, you don't assume that you ever With Agile, you don't assume that you ever know all the requirements until you are done. know all the requirements until you are done. You do need to know enough to get started, You do need to know enough to get started, but you don't need the entire picture in detail.but you don't need the entire picture in detail.

– When you don’t know enough about a project, When you don’t know enough about a project, you may want to go ahead and get started. you may want to go ahead and get started. Have very short sprints and get feedback early Have very short sprints and get feedback early and often.and often.

Page 25: Agile for Me- CodeStock 2009

I’m a Project Manager-I’m a Project Manager-What’s in it for Me?What’s in it for Me?

• Instead of managing risk with lots of Instead of managing risk with lots of documents and contracts that documents and contracts that create an "us vs. them" create an "us vs. them" environment, you manage risk with environment, you manage risk with real, working software, and real, working software, and contracts that encourage contracts that encourage collaboration between different collaboration between different parties. parties.

Page 26: Agile for Me- CodeStock 2009

Typical Scrum Team BoardTypical Scrum Team Board

Transparency is more evident.

Page 27: Agile for Me- CodeStock 2009

Multi-Team Project BoardMulti-Team Project Board

Big, Visible Charts

Page 28: Agile for Me- CodeStock 2009

I’m a Project Manager-I’m a Project Manager-What’s in it for Me?What’s in it for Me?

• The culture of transparency makes it The culture of transparency makes it easier for you to provide visibility easier for you to provide visibility and a more realistic status up the and a more realistic status up the chain. chain.

• Unknowns should be known much Unknowns should be known much earlier in the process. earlier in the process.

Page 29: Agile for Me- CodeStock 2009

I’m a Project Manager-I’m a Project Manager-What’s in it for Me?What’s in it for Me?

• Managing Risk:Managing Risk:– There are known knowns. These are things we There are known knowns. These are things we

know that we know. There are known unknowns. know that we know. There are known unknowns. That is to say, there are things that we know we That is to say, there are things that we know we don't know. But there are also unknown don't know. But there are also unknown unknowns. There are things we don't know we unknowns. There are things we don't know we don't know.don't know. --Donald Rumsfeld Donald Rumsfeld

• When problems pop up early, we have When problems pop up early, we have lots of options. lots of options. When problems pop up at When problems pop up at the end of a project, our options are very the end of a project, our options are very limited; work more, cut quality, etc.limited; work more, cut quality, etc.

Page 30: Agile for Me- CodeStock 2009

I’m a Tester-I’m a Tester-What’s in it for Me?What’s in it for Me?

• How is QA viewed today on most How is QA viewed today on most traditional projects?traditional projects?– Often viewed as a roadblock, or second Often viewed as a roadblock, or second

class citizen.class citizen.– If bugs get into production, who gets the If bugs get into production, who gets the

blame? blame? – Are you ever told "Are you ever told "Don't talk to the Don't talk to the

developers while they are working. They developers while they are working. They are too busy, and I don't want you to are too busy, and I don't want you to waste their time."waste their time." ? ?

Page 31: Agile for Me- CodeStock 2009

I’m a Tester-I’m a Tester-What’s in it for Me?What’s in it for Me?

• Agile teams elevate the role of testing. Agile teams elevate the role of testing.

• Quality becomes essential when teams Quality becomes essential when teams are repeatedly deploying software.are repeatedly deploying software.

• You will be working on a close-knit team.You will be working on a close-knit team.

Page 32: Agile for Me- CodeStock 2009

I’m a Tester-I’m a Tester-What’s in it for Me?What’s in it for Me?

• Inspection to find defects is waste. Inspection to find defects is waste. Inspection to prevent defects is essential. Inspection to prevent defects is essential.

• A quality process builds quality into the A quality process builds quality into the product. If you routinely find defects during product. If you routinely find defects during verification, your process is defective. verification, your process is defective.

• If you have test and fix cycles, you are If you have test and fix cycles, you are testing too late. This is churn, and wasteful. testing too late. This is churn, and wasteful.

Move QA people from end of process to Move QA people from end of process to beginning and middle of process. Find beginning and middle of process. Find defects as soon as they are created.defects as soon as they are created.

http://www.poppendieck.com/

Page 33: Agile for Me- CodeStock 2009

I’m a Developer-I’m a Developer-What’s in it for Me?What’s in it for Me?

• ROIROI– Developers often don't think about ROI. They view this Developers often don't think about ROI. They view this

as a business term, and often don't care. Well, here's a as a business term, and often don't care. Well, here's a revelation: Your salary is calculated as ROI. You, your revelation: Your salary is calculated as ROI. You, your benefits, your computer, are all calculated as ROI. You benefits, your computer, are all calculated as ROI. You are being paid to do something. The people paying you are being paid to do something. The people paying you want a return on their investment. The better want a return on their investment. The better investment you provide, the better you will be viewed. investment you provide, the better you will be viewed.

• A better way of working. Support vs. control. A better way of working. Support vs. control. – Imagine a work situation where your manager says Imagine a work situation where your manager says

““What can I do to help youWhat can I do to help you?”, instead of saying “?”, instead of saying “do this, do this, now do that, and do it this waynow do that, and do it this way.”.”

• Trust vs. micromanagementTrust vs. micromanagement– The team decides the best way to reach the goals put The team decides the best way to reach the goals put

forth in front of them. forth in front of them.

Page 34: Agile for Me- CodeStock 2009

I’m a Developer-I’m a Developer-What’s in it for Me?What’s in it for Me?

• You will be working on You will be working on a close-knit team. a close-knit team.

• Can get more done Can get more done together than you can together than you can separately. separately.

• Collaboration, support Collaboration, support system. system.

Page 35: Agile for Me- CodeStock 2009

I’m a Developer-I’m a Developer-What’s in it for Me?What’s in it for Me?

• Increased communication.Increased communication.

• Everyone on the team is working Everyone on the team is working toward the same goals. toward the same goals.

• Laughing. Laughing.

• Sense of community.Sense of community.

• Sense of ownership.Sense of ownership.

Page 36: Agile for Me- CodeStock 2009

I’m a Developer- I’m a Developer- What’s in it for Me?What’s in it for Me?

• You should gain skills you didn’t have You should gain skills you didn’t have before.before.

• Less useless documentation. Less useless documentation.

• Those obstacles that you tolerate Those obstacles that you tolerate now? They should become more now? They should become more obvious, and some of them will go obvious, and some of them will go away if your management is doing away if your management is doing their job.their job.

Page 37: Agile for Me- CodeStock 2009

I’m a Developer-I’m a Developer-What’s in it for Me?What’s in it for Me?

• Freedom to pick tasks. No one Freedom to pick tasks. No one assigns tasks, and you have assigns tasks, and you have ownership over your tasks.ownership over your tasks.

• Great feeling of accomplishment.Great feeling of accomplishment.

• Food is often involved.Food is often involved.

• Almost always results in higher Almost always results in higher morale.morale.

Page 38: Agile for Me- CodeStock 2009

From: “The Principles Behind From: “The Principles Behind the Agile Manifesto”the Agile Manifesto”

• Build projects around motivated Build projects around motivated individuals. Give them the individuals. Give them the environment and support they need, environment and support they need, and trust them to get the job done.and trust them to get the job done.

Page 39: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• Our highest priority is to satisfy the Our highest priority is to satisfy the customer through early and customer through early and continuous delivery of valuable continuous delivery of valuable software. software.

• Welcome changing requirements, Welcome changing requirements, even late in development. Agile even late in development. Agile processes harness change for the processes harness change for the customer's competitive advantage.customer's competitive advantage.

• Working software is the primary Working software is the primary measure of progress.measure of progress.

Page 40: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• Deliver working software frequently, Deliver working software frequently, from a couple of weeks to a couple of from a couple of weeks to a couple of months, with a preference to the months, with a preference to the shorter timescale.shorter timescale.

• Business people and developers Business people and developers must work together daily throughout must work together daily throughout the project.the project.

Page 41: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• Build projects around motivated Build projects around motivated individuals. Give them the individuals. Give them the environment and support they need, environment and support they need, and trust them to get the job done.and trust them to get the job done.

• The most efficient and effective The most efficient and effective method of conveying information to method of conveying information to and within a development team is and within a development team is face-to-face conversation.face-to-face conversation.

Page 42: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• Agile processes promote sustainable Agile processes promote sustainable development. The sponsors, development. The sponsors, developers, and users should be able developers, and users should be able to maintain a constant pace to maintain a constant pace indefinitely.indefinitely.

Page 43: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• Continuous attention to technical Continuous attention to technical excellence and good design excellence and good design enhances agility.enhances agility.

• Simplicity--the art of maximizing the Simplicity--the art of maximizing the amount of work not done--is amount of work not done--is essential.essential.

Page 44: Agile for Me- CodeStock 2009

Principles behind the Agile Principles behind the Agile ManifestoManifesto

• The best architectures, The best architectures, requirements, and designs emerge requirements, and designs emerge from self-organizing teams.from self-organizing teams.

• At regular intervals, the team reflects At regular intervals, the team reflects on how to become more effective, on how to become more effective, then tunes and adjusts its behavior then tunes and adjusts its behavior accordingly.accordingly.

Page 45: Agile for Me- CodeStock 2009

How Do I Start?How Do I Start?

• Ideally, get support from the top, and Ideally, get support from the top, and jump in with both feet.jump in with both feet.– Hire a good consultant.Hire a good consultant.– Get your people trained. Make sure they Get your people trained. Make sure they

understand the principles as well as the understand the principles as well as the practices.practices.

• Do it “by the book” for a year, and Do it “by the book” for a year, and then change parts of it only if it really then change parts of it only if it really makes sense.makes sense.

Page 46: Agile for Me- CodeStock 2009

How Do I Start?How Do I Start?1.1. Start with Scrum.Start with Scrum.

– Fairly easy to implement.Fairly easy to implement.– Quick winsQuick wins– Improved MoraleImproved Morale

2.2. Add XP development practicesAdd XP development practices– Continuous integrationContinuous integration– Unit testingUnit testing

3.3. Transition to Lean (After a year of Transition to Lean (After a year of successful Scrum)successful Scrum)– One piece flowOne piece flow– Optimizing the wholeOptimizing the whole

Page 47: Agile for Me- CodeStock 2009

How Do I Start If I can’t get How Do I Start If I can’t get support from on top?support from on top?

• Stealth agile.Stealth agile.– Don’t mention the words “agile”, Don’t mention the words “agile”,

“scrum”, or anything else that would “scrum”, or anything else that would make people nervous. The last thing you make people nervous. The last thing you want is for people to freak out.want is for people to freak out.

– Talk to end users and stakeholders Talk to end users and stakeholders yourself. Establish a relationship with yourself. Establish a relationship with your customers.your customers.

– Ask people what they intend to do with Ask people what they intend to do with all that documentation. all that documentation.

Page 48: Agile for Me- CodeStock 2009

How Do I Start If I can’t get How Do I Start If I can’t get support from on top?support from on top?

• Stealth Agile Continued….Stealth Agile Continued….– Get your team to have short daily Get your team to have short daily

meetings.meetings.– Talk your team into working together for Talk your team into working together for

one hour or more every day in a one hour or more every day in a conference room.conference room.

– Invite people to a demo every few weeks.Invite people to a demo every few weeks.– Prove the results and earn respect.Prove the results and earn respect.– Be patient. Change takes time. Don’t get Be patient. Change takes time. Don’t get

frustrated.frustrated.

Page 49: Agile for Me- CodeStock 2009

Either Way….Either Way….• Work towards a culture of continuous Work towards a culture of continuous

improvement. improvement. – Work to improve your skills, your company, your delivery Work to improve your skills, your company, your delivery

of software.of software.• Reduce complexity whenever possible.Reduce complexity whenever possible.

– No one ever goes to bed thinking “No one ever goes to bed thinking “Gosh, I hope my work Gosh, I hope my work gets a lot more complicated tomorrowgets a lot more complicated tomorrow.”.”

• Try to make it fun. Be a part of the solution.Try to make it fun. Be a part of the solution.• ““Don’t let your doubts tell you what you can’t do. This works Don’t let your doubts tell you what you can’t do. This works

against change. If you really can’t do that, you can probably against change. If you really can’t do that, you can probably do something similar. Figure it out and do it.”-do something similar. Figure it out and do it.”- Bob SchatzBob Schatz

• Or, as Brian Prince said not long ago…Or, as Brian Prince said not long ago…““You can change your company or you can change your You can change your company or you can change your

company.”company.”

Page 50: Agile for Me- CodeStock 2009

Random Thoughts for Random Thoughts for Managers:Managers:

• Create a culture of trust and Create a culture of trust and transparency.transparency.

• Good leadership will establish and Good leadership will establish and communicate common goals. communicate common goals.

• At the beginning of any project, and At the beginning of any project, and when new team members come on when new team members come on board, the vision should be set. They board, the vision should be set. They should know why they are doing the should know why they are doing the work they are doing. work they are doing.

• Be a coach, not a policeman.Be a coach, not a policeman.

Page 51: Agile for Me- CodeStock 2009

More Random Thoughts for More Random Thoughts for ManagersManagers

• The time to negotiate is before you say “yes” to a The time to negotiate is before you say “yes” to a project.project.– What? Scope, cost, and time are not negotiable? They What? Scope, cost, and time are not negotiable? They

will be later when the project is failing. will be later when the project is failing.

• Ask your teams what you can do to help them Ask your teams what you can do to help them deliver software better, faster, more efficiently, deliver software better, faster, more efficiently, then do it.then do it.

• Be relentless about eliminating waste in the Be relentless about eliminating waste in the process. process. – Tools, technologies, people that stand in the way, arcane Tools, technologies, people that stand in the way, arcane

rules, bureaucracy, etc.rules, bureaucracy, etc.

• Do more of what works and less of what doesn’t, Do more of what works and less of what doesn’t, but get these from your people.but get these from your people.

Page 52: Agile for Me- CodeStock 2009

AcknowledgmentsAcknowledgments

• Many of the ideas presented here are Many of the ideas presented here are from:from:– Bob Schatz of Agile InfusionBob Schatz of Agile Infusion– Jean Tabaka of Rally SoftwareJean Tabaka of Rally Software

Page 53: Agile for Me- CodeStock 2009

Questions?Questions?

[email protected]@gmail.com

865-924-6319865-924-6319

http://adriancarr.comhttp://adriancarr.com

http://agileknoxville.comhttp://agileknoxville.com