The Software CraftsmanGøran HansenAspiring Software Craftsman Senior Consultant @ Capgeminihttp://goeran.nomail@goeran.no http://twitter.com/goeran
OutlineWhy do we need Software Craftsmen?Characterization of a Software CraftsmanManifesto of Software CraftsmanshipHow to become a Software Craftsman
Why do we need Software Craftsmen?
“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
The Total Costofowning a Mess“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”“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
How Scrum Can Fail
“Agilists assume craftsmanshipOnly few people pursue craftsmanship”JurgenAppelohttp://www.noop.nl/2009/05/agile-wrongfully-assumes-craftsmanship.html
Why do we need Software Craftsmen…?
… Because crappy code amplify the risk of failure – even for agile projects!
When do we write crappy code?
Pressure
When we have to “Get It Done”!
”Get It Done”vs.”Get It Right”
An idea
ConstantPressure
Every Week
Pressure
Every Month
Pressure
Every Year
Pressure
What differentiate between making the choice of “Get It Done” vs. “Get It Right”?
Skill deficiency
A Software Craftsman will choose “Get It Right”
Because he has the skills to do so…
Not only will he “Dot It Right”, he will also do it for the right reasons…
The characterization of a Software Craftsman
He will “Do It Right” – also under pressure
He takes responsibility
He takes pride in his work. Both the end product and the process towards it
He signs his work
“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
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
“An investment in knowledge always pays the best interest”- Benjamin Franklin
He practice deliberately, and understands the difference between practice and work. He practices in order to be prepared for work
He writes code
“Knowledge is not the same as having the skills and practical ability to create software” – Pete McBreen, Software Craftsmanship: The New Imperative
He has the right attitude towards Software Development
He contribute to the community
Characterization of a Software CraftsmanWill “Do It Right”Take responsibilityTake pride in his workSigns his workContinuous learnerPractice deliberatelyWrite codeThe right attitude Contribute to the community
How to become a Software Craftsman…
Tips from The Pragmatic Programmer:Care about your craftThink about your work
Start learning
Take responsibility for your professional career and apply what you’ve learned
Start to PracticeCode DojosCode KatasPair programming with other fellow Craftsmen
What to practice?TDD – can be applied to all languagesFunctional, dynamic and statically typed languages – learn the different paradigmsRefactoring – learn how to change your code efficientlyDesign patternsTools (ReSharper, Visual Studio, Ndepend, Pex etc)Frameworks (Nhibernate, Mongo db etc)
A special thanks toCorey Haines, for letting me using his slides.http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-worldhttp://www.coreyhaines.com
The Software CraftsmanGøran HansenAspiring Software Craftsman Senior Consultant @ Capgeminihttp://goeran.nomail@goeran.no http://twitter.com/goeran

The Software Craftsman

  • 1.
    The Software CraftsmanGøranHansenAspiring Software Craftsman Senior Consultant @ Capgeminihttp://goeran.nomail@goeran.no http://twitter.com/goeran
  • 2.
    OutlineWhy do weneed Software Craftsmen?Characterization of a Software CraftsmanManifesto of Software CraftsmanshipHow to become a Software Craftsman
  • 3.
    Why do weneed Software Craftsmen?
  • 4.
    “The best processesin 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
  • 5.
    The Total Costofowninga Mess“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”“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
  • 6.
  • 7.
    “Agilists assume craftsmanshipOnlyfew people pursue craftsmanship”JurgenAppelohttp://www.noop.nl/2009/05/agile-wrongfully-assumes-craftsmanship.html
  • 8.
    Why do weneed Software Craftsmen…?
  • 9.
    … Because crappycode amplify the risk of failure – even for agile projects!
  • 10.
    When do wewrite crappy code?
  • 11.
  • 12.
    When we haveto “Get It Done”!
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 23.
    What differentiate betweenmaking the choice of “Get It Done” vs. “Get It Right”?
  • 24.
  • 25.
    A Software Craftsmanwill choose “Get It Right”
  • 26.
    Because he hasthe skills to do so…
  • 27.
    Not only willhe “Dot It Right”, he will also do it for the right reasons…
  • 28.
    The characterization ofa Software Craftsman
  • 29.
    He will “DoIt Right” – also under pressure
  • 30.
  • 31.
    He takes pridein his work. Both the end product and the process towards it
  • 32.
  • 33.
    “Software Craftsmanship isall 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
  • 34.
    He is acontinuous learner. When he doesn’t work, he spends his time studying, to find new methods and tools can refine him as a Software Craftsman
  • 35.
    “An investment inknowledge always pays the best interest”- Benjamin Franklin
  • 36.
    He practice deliberately,and understands the difference between practice and work. He practices in order to be prepared for work
  • 37.
  • 38.
    “Knowledge is notthe same as having the skills and practical ability to create software” – Pete McBreen, Software Craftsmanship: The New Imperative
  • 39.
    He has theright attitude towards Software Development
  • 40.
    He contribute tothe community
  • 41.
    Characterization of aSoftware CraftsmanWill “Do It Right”Take responsibilityTake pride in his workSigns his workContinuous learnerPractice deliberatelyWrite codeThe right attitude Contribute to the community
  • 43.
    How to becomea Software Craftsman…
  • 44.
    Tips from ThePragmatic Programmer:Care about your craftThink about your work
  • 45.
  • 46.
    Take responsibility foryour professional career and apply what you’ve learned
  • 47.
    Start to PracticeCodeDojosCode KatasPair programming with other fellow Craftsmen
  • 48.
    What to practice?TDD– can be applied to all languagesFunctional, dynamic and statically typed languages – learn the different paradigmsRefactoring – learn how to change your code efficientlyDesign patternsTools (ReSharper, Visual Studio, Ndepend, Pex etc)Frameworks (Nhibernate, Mongo db etc)
  • 49.
    A special thankstoCorey Haines, for letting me using his slides.http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-worldhttp://www.coreyhaines.com
  • 50.
    The Software CraftsmanGøranHansenAspiring Software Craftsman Senior Consultant @ Capgeminihttp://goeran.nomail@goeran.no http://twitter.com/goeran