Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Craftsmanship - 1 Meeting

1,562 views

Published on

1st Meeting of the Software Craftsmanship in Israel Group

Published in: Technology, Sports
  • Be the first to comment

  • Be the first to like this

Software Craftsmanship - 1 Meeting

  1. 1. Software Craftsmanship<br />Meeting #1<br />http://www.flickr.com/photos/renfield/17375998/in/set-388814/<br />
  2. 2. Why?<br />Enjoying Coding<br />http://www.flickr.com/photos/declanjewell/2687934126/<br />
  3. 3. Why?<br />Enjoying Constructing<br />http://www.flickr.com/photos/cibomahto/2133046342/<br />
  4. 4. Why?<br />Something Missing<br />http://www.flickr.com/photos/ceanandjen/2442627144/<br />
  5. 5. Why?<br />Time to Market<br />http://www.flickr.com/photos/aarongeller/360135019/<br />
  6. 6. Why?<br />Fire Extinguishing<br />http://www.flickr.com/photos/thenationalguard/4443666692/<br />
  7. 7. Why?<br />Enjoying Constructing?<br />http://www.flickr.com/photos/wwworks/2475349116/in/photostream/<br />
  8. 8. Why?<br />No Mentor, no Coach<br />http://www.flickr.com/photos/dirkhansen/3235465927/<br />
  9. 9. Software Craftsmanship Group<br /><ul><li>Software Craftsmanship in Israel
  10. 10. http://www.linkedin.com/groups?gid=2578449</li></li></ul><li>1st Meeting of the Software Craftsmanship Group<br />Introduce Software Craftsmanship GroupObjectives<br />Software Craftsmanship Manifesto<br />What is “Software Craftsmanship”?<br />Principles<br />Hands On<br />Code Kata<br />There shall be code!!!<br />
  11. 11. How?<br />Long Journey<br />http://www.flickr.com/photos/philliecasablanca/2052728068/<br />
  12. 12. What?<br />Craftsmen<br />http://www.flickr.com/photos/34094515@N00/2554591721/<br />
  13. 13. Software Craftsmanship<br />Principles<br />http://www.flickr.com/photos/renfield/351556388/in/photostream/<br />
  14. 14. Chaos<br />Wreckage<br />http://www.flickr.com/photos/bobjagendorf/4122137519/<br />
  15. 15. Software Craftsmanship<br />Agile Manifesto<br />http://agilemanifesto.org/<br />Manifesto:<br />That is, while there is value in the items on the right, we value the items on the left more.<br />
  16. 16. Software Craftsmanship<br />“The Book of Five Rings” talks about mastership in martial arts.<br />Surprising, but:<br />“People usually think that all warriors think about is being ready to die…”<br />“The martial way of life practiced by warriors is based on excelling in anything and everything.”<br />
  17. 17. Software Craftsmanship<br />“The Book of Five Rings” talks about mastership in martial arts by comparing a master warier to master carpenter.<br />Master Carpenter has:<br />A duty to understand in state and local laws<br />A knowledge of different measurements, designs and all sort of structures<br />A knowledge of the materials being used for a construction<br />A knowledge of different tools of work<br />An essential habit to “sharpen” the tools and exercise on small scale the habits of his work <br />
  18. 18. Software Craftsmanship<br />Software Craftsmanship Manifesto<br />http://manifesto.softwarecraftsmanship.org/<br />Manifesto:<br />>comprehensive documentation<br />> following a plan<br />> processes <br />& tools<br />> contract negotiation<br />That is, in pursuit of the items on the left we have found the items on the right to be indispensable<br />
  19. 19. Software Craftsmanship<br />How?<br />Short Iterations<br />Readable Code (OOP Best Practices)<br />Test Driven Development (TDD), Unit Testing & Acceptance Tests<br />Iterative Design (SOLID & OOD Best Practices)<br />Refactoring<br />Automatic Builds / Continuous Integration<br />Automate Every Possible Process<br />IDE & Tools<br />Code Reviews / Pair Programming <br />Apprenticing <br />Exercising <br />Deliberate Practice<br />Learning Techniques<br />Code Katas<br />Productive Partnership<br />Well-crafted<br />Steadily adding value<br />Community of Professionals<br />
  20. 20. Short Iterations<br />Productive Partnership<br />Really Listen<br />http://www.flickr.com/photos/renneville/3358544222/in/set-72157612666319208/<br />
  21. 21. Short Iterations<br />Productive Partnership<br />Establish Trust<br />http://www.flickr.com/photos/pagedooley/1303402061/<br />In God We Trust, All Others Pay Cash<br />
  22. 22. Readable Code<br />Well-Crafted<br />Newspaper Paradigm<br />The code should be written as a newspapers’ article<br />Reread<br />Drafts<br />http://www.flickr.com/photos/blackcustard/81680010/<br />
  23. 23. TDD<br />Well-Crafted<br />Validate Expectations<br />http://www.flickr.com/photos/nyuhuhuu/4442144329/<br />Safety Net<br />
  24. 24. Iterative Design<br />Well-Crafted<br />Steadily adding value<br />Software Development isn’t a Jenga game<br />http://www.lostechies.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derickbailey/SOLID_5F00_6EC97F9C.jpg<br />
  25. 25. Refactoring<br />Refactoring<br />(Noun) – A change made to internal structure of software to make it easier to understand and modifywithout changing its observable behavior.<br />(Verb) – to structuresoftware by applying a series of refactorings without changing its observable behavior<br />Well-Crafted<br />Steadily adding value<br />
  26. 26. Refactoring<br />Well-Crafted<br />Steadily adding value<br />Refactoring in nutshell is a method to adjust changes, reuse the code that was developed in previous iterations and add new functionality to existing code without “breaking” software's external behavior<br />
  27. 27. Continuous Integration<br />What is Continuous Integration?<br />Integrates source code and runs unit tests after each commit of code to the source repository<br />Near-immediate feedback to the developer from the authoritative source, the system itself<br />Well-Crafted<br />Community of Professionals<br />
  28. 28. Continuous Integration<br />Well-Crafted<br />Community of Professionals<br />Continuous Integration<br />Continuous Integration builds don’t need durable build products to be beneficial. They are a way for a developer to have a conversation with the system to gain reassurance that they have done their part<br />Daily Builds<br />Daily builds generate deliverables. They result in something tangible: something for QA to test, something for product managers to review, and something to reassure team members that they are in fact building a product. Because of the external audience, the daily build is a formal event, a mini-milestone that your team should hit without fail. Breaking the daily build is something that generates blame and often consequences, such as becoming the build mother or being awarded a dunce cap<br />Use them BOTH<br />
  29. 29. IDE & Tools<br />Community of Professionals<br />There is a time and situation in which the tools are appropriate<br />
  30. 30. Code Review – Important Observation<br />Community of Professionals<br />Time Restrictions<br />http://www.flickr.com/photos/mike-bensalem/3023717032/<br />
  31. 31. Code Review – Psychological Barrier - I<br />Community of Professionals<br />Hard to concentrate<br />Focusing for more than <br />a few dozens of minutes<br />without any recession<br />is hardly possible<br />http://www.flickr.com/photos/txd/2681183845/<br />
  32. 32. Code Review – Psychological Barrier - II<br />Community of Professionals<br />Hard to understand<br />To read and to interpret<br />somebody else’s logic (code)<br />http://www.flickr.com/photos/dhammza/91435718/<br />
  33. 33. Effective Code Review<br />Community of Professionals<br />How?<br />Descriptive Abstract<br />Focus<br />Top-Down Overview<br />Bottom-Up Review<br />Read & Communicate<br />“Drive” the code<br />“Understand” the code<br />Search for: <br />Code Smells<br />Violations of OOD and OOP<br />Violations of Code Conventions<br />Comprehension<br />
  34. 34. Pair Programming<br />Community of Professionals<br />http://www.flickr.com/photos/pokerbrit/3468717396/<br />
  35. 35. Roles<br />Driver<br />Types commands or writes the code<br />Explains actions taken<br />Consults Navigator<br />Navigator<br />Watches & navigates the driver<br />Ask questions<br />Consults Driver<br />Community of Professionals<br />
  36. 36. Apprenticing<br />Community of Professionals<br />http://www.flickr.com/photos/mikaelmiettinen/3326060843/<br />
  37. 37. Apprenticing<br />Community of Professionals<br />Define a Roadmap<br />Execute<br />Explain Loudly and Thoroughly<br />Give Examples<br />Ask for the Opinion<br />+Supervise Projects<br />+Point to Educational Materials<br />
  38. 38. Exercising<br />Community of Professionals<br />http://www.flickr.com/photos/deerwooduk/1690299732/<br />
  39. 39. Exercising<br />Community of Professionals<br />Deliberate Practice<br />Musicians (Craftsmen)<br />Open Source Projects<br />Learning Techniques<br />Podcasts<br />www.reversim.com<br />www.se-radio.com<br />http://softwarecraftsmanship.libsyn.com/index.php<br />. . .<br />Blogs<br />... <br />Books<br />Read at least 2-3 books each year<br />Languages<br />Principles<br />Breakable Toys<br />Write your own projects (probably supervised)<br />
  40. 40. Code Kata<br />Kata<br />A Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs.<br />Most commonly known for the presence in the martial arts.<br />Code Kata<br />Was first introduced by Dave Thomas (http://www.codekata.com/)<br />Practice of the same methods, solutions and activities to a perfection. <br />Practice of the same problem, tackling it each time from a different angle or with a different solution<br />Community of Professionals<br />
  41. 41. Software Craftsmanship<br />How?<br />Short Iterations<br />Readable Code (OOP Best Practices)<br />Test Driven Development (TDD), Unit Testing & Acceptance Tests<br />Iterative Design (SOLID & OOD Best Practices)<br />Refactoring<br />Automatic Builds / Continuous Integration<br />Automate Every Possible Process<br />IDE & Tools<br />Code Reviews / Pair Programming <br />Apprenticing <br />Exercising <br />Deliberate Practice<br />Learning Techniques<br />Code Katas<br />Productive Partnership<br />Well-crafted<br />Steadily adding value<br />Community of Professionals<br />
  42. 42. Next Meetings of the Software Craftsmanship Group – A Skeleton<br />Gathering<br />Descriptive Presentation (~1h)<br />Hands On<br />Code Reviews<br />Pair Programming<br />Code Kata<br />
  43. 43. Contact Info<br /><ul><li>http://www.linkedin.com/groups?gid=2578449
  44. 44. http://www.irefactor.net
  45. 45. http://twitter.com/urilavi
  46. 46. uri.lavi@hotmail.com</li></li></ul><li>1st Meeting of the Software Craftsmanship Group<br />http://www.flickr.com/photos/psd/2086641/<br />

×