2. Outline Why do we need Software Craftsmen? Characterization of a Software Craftsman Manifesto of Software Craftsmanship How to become a Software Craftsman
4. “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
5. 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
33. “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
34. 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
35. “An investment in knowledge 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
38. “Knowledge is not the same as having the skills and practical ability to create software” – Pete McBreen, Software Craftsmanship: The New Imperative
39. He has the right attitude towards Software Development
41. 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
47. Start to Practice Code Dojos Code Katas Pair programming with other fellow Craftsmen
48. 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)
49. A special thanks to Corey Haines, for letting me using his slides. http://www.slideshare.net/openagile/the-craftsman-developer-in-an-agile-world http://www.coreyhaines.com