Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
3/28/2016
1
1
Take Your Software Beyond Legacy Code
Welcome.Thank you!
http://[email protected]
© Copyright 2012-2016 To Be Agile DB20160328
http://BeyondLegacyCode.com
2
David Scott Bernstein
Software developer since 1980
Trained 8,000 developers since 1990
Published author since 2015
Website: http://ToBeAgile.com
3/28/2016
2
3
Nine Essential Practices
1. Say What, Why, and for Whom before How: With a Product Owner defining the next mostimportant features to build, the need for upfront requirements goes away.
2. Build in Small Batches: Building incrementally increases feedback, helps simplify theconstruction of complex systems, and reduces risks.
3. Integrate Continuously: Sets up the infrastructure for incremental development.
4. Collaborate: Spiking, pairing, and swarming as a team to solve problems and radiateknowledge throughout an organization.
5. Create CLEAN Code: Share standards and practices for building software with code qualitiesthat support testability.
6. Write the Test First: Drops the cost of building and maintaining software dramatically.
7. Specify Behaviors with Tests: Uses tests to define and document behaviors.
8. Implement the Design Last: Paying technical debt can pay back dividends in the short term aswell as the long term.
9. Refactor Legacy Code: Incorporate learning and pay off technical debt.
Integrate Continuously
Practice 3
3/28/2016
3
The Heartbeat of a Project
Three Kinds of Done
3/28/2016
4
Continuous Deployability
Automate the Build
3/28/2016
5
Integrate Early and Often
Take the First Step
3/28/2016
6
Collaborate
Practice 4
Extreme Programming
3/28/2016
7
Communicate and Collaborate
Pair Program
3/28/2016
8
Buddy Program
Spike, Swarm, and Mob
3/28/2016
9
Time Box Unknowns
Code Reviews, Retrospectives
3/28/2016
10
Amplify Learning
Be Mentoring and Mentored
3/28/2016
11
Create CLEAN Code
We can infer good development principles andpractices through five key code qualities:
CohesiveLoosely CoupledEncapsulatedAssertiveNonredundant
Practice 5
Quality Code is Cohesive
3/28/2016
12
Quality Code is Loosely Coupled
Quality Code is Encapsulated
3/28/2016
13
Quality Code is Assertive
Quality Code is Non-Redundant
3/28/2016
14
Code Qualities Guide Us
Increase Quality Today…
3/28/2016
15
Write the Test First
Practice 6
The Things We Call Tests
3/28/2016
16
Quality Assurance
Write Good Tests
3/28/2016
17
TDD Gives Rapid Feedback
TDD Supports Refactoring
3/28/2016
18
Write Testable Code
TDD Can Fail
3/28/2016
19
Introducing TDD to a Team
Become Test Infected
“Warning:Promiscuouspairing can leadto becoming testinfected.”
3/28/2016
20
Refactor Legacy Code
Practice 9
Investment or Debt?
3/28/2016
21
Become a “Deadbeat”
When Code Needs to Change
3/28/2016
22
Refactoring Techniques
Refactor to Accommodate Change
3/28/2016
23
Refactor to the Open-Closed
Refactor to Support Changeability
3/28/2016
24
Do it Right the Second Time
48
Thank You!
We have just scratched the surface, to learn more:
– Read my blog: http://ToBeAgile.com/blog
– Sign up for my newsletter: http://ToBeAgile.com/signup
– Follow me on Twitter (@ToBeAgile)
– Read my book:
– Beyond Legacy Code: Nine Practices to Extend the Life (and Value) ofYour Software (available from http://BeyondLegacyCode.com)
– Attend my one of my Certified Scrum Developer trainings
– See http://ToBeAgile.com/training for my public class schedule
– Or contact me to arrange a private class for your organization
– Visit http://ToBeAgile.com for more information