Download pptx - The Software Craftsman

Transcript
Page 1: The Software Craftsman

The Software Craftsman

Gøran HansenAspiring Software Craftsman Senior Consultant @ Capgemini

http://[email protected]

http://twitter.com/goeran

Page 2: The Software Craftsman

Outline

• Why do we need Software Craftsmen?• Characterization of a Software Craftsman• Manifesto of Software Craftsmanship• How to become a Software Craftsman

Page 3: The Software Craftsman

Why do we need Software Craftsmen?

Page 4: The Software Craftsman

“The best processes in the world will not save a project from failure if the people involved do not have the necessary skills to execute the process; conversely, really good developers can make any process work”

– Pete McBreen, Software Craftsmanship: The New Imperative

Page 5: The Software Craftsman

The Total Cost of owning a Mess

“As the mess builds, the productivity of the team continues to decrease, asymptotically approaching zero. As productivity decreases, management does the only thing they can; they add more staff to the project in hopes of increasing productivity.”

“Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity. So they all make more and more messes, driving the productivity ever further toward zero”

- Robert C. Martin, Clean Code

“You have probably been slowed down by messy code. The degree of the slowdown can be significant. Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail's pace.”

“Over time the mess becomes so big and so deep and so tall, they can not clean it up. There is no way at all”

Page 6: The Software Craftsman

How Scrum Can Fail

Page 7: The Software Craftsman

“Agilists assume craftsmanshipOnly few people pursue craftsmanship”

- Jurgen Appelo

http://www.noop.nl/2009/05/agile-wrongfully-assumes-craftsmanship.html

Page 8: The Software Craftsman

Why do we need Software Craftsmen…?

Page 9: The Software Craftsman

… Because crappy code amplify the risk of failure – even for agile projects!

Page 10: The Software Craftsman

When do we write crappy code?

Page 11: The Software Craftsman

Pressure

Page 12: The Software Craftsman

When we have to “Get It Done”!

Page 13: The Software Craftsman

”Get It Done”vs.

”Get It Right”

Page 14: The Software Craftsman

An idea

Page 15: The Software Craftsman

Constant Pressure

Page 16: The Software Craftsman

Every Week

Page 17: The Software Craftsman

Pressure

Page 18: The Software Craftsman

Every Month

Page 19: The Software Craftsman

Pressure

Page 20: The Software Craftsman

Every Year

Page 21: The Software Craftsman

Pressure

Page 22: The Software Craftsman
Page 23: The Software Craftsman

What differentiate between making the choice of “Get It Done” vs. “Get It Right”?

Page 24: The Software Craftsman

Skill deficiency

Page 25: The Software Craftsman

A Software Craftsman will choose “Get It Right”

Page 26: The Software Craftsman

Because he has the skills to do so…

Page 27: The Software Craftsman

Not only will he “Dot It Right”, he will also do it for the right reasons…

Page 28: The Software Craftsman

The characterization of a Software Craftsman

Page 29: The Software Craftsman

He will “Do It Right” – also under pressure

Page 30: The Software Craftsman

He takes responsibility

Page 31: The Software Craftsman

He takes pride in his work. Both the end product and the process towards it

Page 32: The Software Craftsman

He signs his work

Page 33: The Software Craftsman

“Software Craftsmanship is all about putting responsibility and pride back into the software development process. As Hunt and Thomas (The Pragmatic Programmer) state, we need to start ‘signing our work’ again, just as other craftsmen do”

– Pete McBreen, Software Craftsmanship: The New Imperative

Page 34: The Software Craftsman

He is a continuous learner. When he doesn’t work, he spends his time studying, to find new methods and tools can refine him as a Software

Craftsman

Page 35: The Software Craftsman

“An investment in knowledge always pays the best interest”

- Benjamin Franklin

Page 36: The Software Craftsman

He practice deliberately, and understands the difference between practice and work. He

practices in order to be prepared for work

Page 37: The Software Craftsman

He writes code

Page 38: The Software Craftsman

“Knowledge is not the same as having the skills and practical ability to create software”

– Pete McBreen, Software Craftsmanship: The New Imperative

Page 39: The Software Craftsman

He has the right attitude towards Software Development

Page 40: The Software Craftsman

He contribute to the community

Page 41: The Software Craftsman

Characterization of a Software Craftsman

• Will “Do It Right”• Take responsibility• Take pride in his work• Signs his work• Continuous learner• Practice deliberately• Write code• The right attitude • Contribute to the community

Page 42: The Software Craftsman
Page 43: The Software Craftsman

How to become a Software Craftsman…

Page 44: The Software Craftsman

Tips from The Pragmatic Programmer:1. Care about your craft

2. Think about your work

Page 45: The Software Craftsman

Start learning

Page 46: The Software Craftsman

Take responsibility for your professional career and apply what you’ve learned

Page 47: The Software Craftsman

Start to Practice

• Code Dojos• Code Katas• Pair programming with other fellow Craftsmen

Page 48: The Software Craftsman

What to practice?

• TDD – can be applied to all languages• Functional, dynamic and statically typed languages

– learn the different paradigms• Refactoring – learn how to change your code

efficiently• Design patterns• Tools (ReSharper, Visual Studio, Ndepend, Pex etc)• Frameworks (Nhibernate, Mongo db etc)

Page 49: The Software Craftsman

A special thanks toCorey Haines, for letting me using his slides.

http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-world

http://www.coreyhaines.com

Page 50: The Software Craftsman

The Software Craftsman

Gøran HansenAspiring Software Craftsman Senior Consultant @ Capgemini

http://[email protected]

http://twitter.com/goeran