Your SlideShare is downloading. ×
0
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Software Craftsmanship - 1 Meeting

1,144

Published on

1st Meeting of the Software Craftsmanship in Israel Group

1st Meeting of the Software Craftsmanship in Israel Group

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,144
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Always enjoyed coding.“Piece of the mind” when writing a “well” piece of code.You probably understand a “well” piece of code, because when you see such one you recognize it.
  • Moreover, enjoyed even more to construct things and to see them connecting together.
  • But, something was missing: It’s like having you breakfast's cornflakes with a milk, just without the cornflakes.It’s a feeling / struggle
  • When “entering” a real job the “Time to Market” presence confused all the perception of the software engineering.Though it was always wrapped with a real beautiful context (like the watch here) the purpose still was to constraint almost any action to a very limited time.Well it pays the bills – what we need here is something working, not a well crafted == beautiful softwareThe problem is that the business mistakes and calls a well crafted software as a beautiful software.a) In some places, like the web a non “beautiful” site actually means less revenuesb) In most of the other places, the “internal beauty” is the one that really importantIt’s similar to buying a hardware tools – you don’t need your hammer to be beautiful – just robust, easy to work with and long living.
  • Needless to say, that I found myself doing somebody else job…
  • Did I say, enjoying constructing? Most of the time I did crate a “lego”, though I am not sure I succeeded in combining it.
  • But most importantly – I couldn’t find a mentor that could teach and instruct me.The “Manager” as a mentor?“Let’s bust their heads” and we will for sure succeedNext, most of the people decide on their own promotion - after 2 years the people start calling themselves “Consultants”Finally, technical people are promoted to be managers, but don’t know how to motivate and drive Or politicians are promoted to be managers, but they don’t know the technical staffHow many Systems did you see during your lives?How many architectures, designs and truly successful solutions did you apply?How technical you are? Even if you do know how to apply an architecture, without coding each day and solving day to day problems you will have only a very superficial overview. A mentor is needed. Once who teaches Once who cares Once who doesn’t blame
  • If we combine together, time to market + understanding of what is the good practices, patterns and solutions and having mentors  this will drive the Group I wanted to establish
  • This meeting’s objectives are to layout the future meetings that will allow us to become Software Craftsman.Therefore, the current meeting will be short and won’t be the rule.There shell be code!We will review the Software Craftsmanship Manifesto and discuss what does it mean in general terms.We will finish with a Code Kata (more in the future)
  • In order to be truly great in our profession – there is a real need of hard and long work
  • The purpose is to make us craftsmen – ones that really understand in the software construction process, ones that give the best values to the customers, ones that will build the best “product” based on customer’s need
  • There is a book called “The book of Five Rings”.The book is taught in the Business Schools in US. (Explain why)What is surprising, though, that the book starts by:“People usually think that all warriors think about is being ready to die… The martial way of life practiced by warriors is based on excelling others in anything and everything.”
  • There is a book called “The book of Five Rings”.The book is taught in the Business Schools in US. (Explain why)What is surprising, though, that the book starts by:“People usually think that all warriors think about is being ready to die… The martial way of life practiced by warriors is based on excelling others in anything and everything.”
  • During our meetings we will dive deeper in each and every item.
  • One step after anotherYour clients also your managers, proving them that it is possible to meet deadlines but also quality builds the trust for the future.Visibility – be visible on what you are doing.
  • Jenga - During the game, players take turns to remove a block from a tower and balance it on top, creating a taller and increasingly unstable structure as the game progresses.
  • During our meetings we will dive deeper in each and every item.
  • This meeting’s objectives are to layout the future meetings that will allow us to become Software Craftsman.Therefore, the current meeting will be short and won’t be the rule.There shell be code!We will review the Software Craftsmanship Manifesto and discuss what does it mean in general terms.We will finish with a Code Kata (more in the future)
  • Transcript

    • 1. Software Craftsmanship<br />Meeting #1<br />http://www.flickr.com/photos/renfield/17375998/in/set-388814/<br />
    • 2. Why?<br />Enjoying Coding<br />http://www.flickr.com/photos/declanjewell/2687934126/<br />
    • 3. Why?<br />Enjoying Constructing<br />http://www.flickr.com/photos/cibomahto/2133046342/<br />
    • 4. Why?<br />Something Missing<br />http://www.flickr.com/photos/ceanandjen/2442627144/<br />
    • 5. Why?<br />Time to Market<br />http://www.flickr.com/photos/aarongeller/360135019/<br />
    • 6. Why?<br />Fire Extinguishing<br />http://www.flickr.com/photos/thenationalguard/4443666692/<br />
    • 7. Why?<br />Enjoying Constructing?<br />http://www.flickr.com/photos/wwworks/2475349116/in/photostream/<br />
    • 8. Why?<br />No Mentor, no Coach<br />http://www.flickr.com/photos/dirkhansen/3235465927/<br />
    • 9. Software Craftsmanship Group<br /><ul><li>Software Craftsmanship in Israel
    • 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. How?<br />Long Journey<br />http://www.flickr.com/photos/philliecasablanca/2052728068/<br />
    • 12. What?<br />Craftsmen<br />http://www.flickr.com/photos/34094515@N00/2554591721/<br />
    • 13. Software Craftsmanship<br />Principles<br />http://www.flickr.com/photos/renfield/351556388/in/photostream/<br />
    • 14. Chaos<br />Wreckage<br />http://www.flickr.com/photos/bobjagendorf/4122137519/<br />
    • 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. 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. 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. Software Craftsmanship<br />Software Craftsmanship Manifesto<br />http://manifesto.softwarecraftsmanship.org/<br />Manifesto:<br />&gt;comprehensive documentation<br />&gt; following a plan<br />&gt; processes <br />&amp; tools<br />&gt; 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. Software Craftsmanship<br />How?<br />Short Iterations<br />Readable Code (OOP Best Practices)<br />Test Driven Development (TDD), Unit Testing &amp; Acceptance Tests<br />Iterative Design (SOLID &amp; OOD Best Practices)<br />Refactoring<br />Automatic Builds / Continuous Integration<br />Automate Every Possible Process<br />IDE &amp; 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. Short Iterations<br />Productive Partnership<br />Really Listen<br />http://www.flickr.com/photos/renneville/3358544222/in/set-72157612666319208/<br />
    • 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. 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. TDD<br />Well-Crafted<br />Validate Expectations<br />http://www.flickr.com/photos/nyuhuhuu/4442144329/<br />Safety Net<br />
    • 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. 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. 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&apos;s external behavior<br />
    • 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. 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. IDE &amp; Tools<br />Community of Professionals<br />There is a time and situation in which the tools are appropriate<br />
    • 30. Code Review – Important Observation<br />Community of Professionals<br />Time Restrictions<br />http://www.flickr.com/photos/mike-bensalem/3023717032/<br />
    • 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. 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. Effective Code Review<br />Community of Professionals<br />How?<br />Descriptive Abstract<br />Focus<br />Top-Down Overview<br />Bottom-Up Review<br />Read &amp; 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. Pair Programming<br />Community of Professionals<br />http://www.flickr.com/photos/pokerbrit/3468717396/<br />
    • 35. Roles<br />Driver<br />Types commands or writes the code<br />Explains actions taken<br />Consults Navigator<br />Navigator<br />Watches &amp; navigates the driver<br />Ask questions<br />Consults Driver<br />Community of Professionals<br />
    • 36. Apprenticing<br />Community of Professionals<br />http://www.flickr.com/photos/mikaelmiettinen/3326060843/<br />
    • 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. Exercising<br />Community of Professionals<br />http://www.flickr.com/photos/deerwooduk/1690299732/<br />
    • 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. 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. Software Craftsmanship<br />How?<br />Short Iterations<br />Readable Code (OOP Best Practices)<br />Test Driven Development (TDD), Unit Testing &amp; Acceptance Tests<br />Iterative Design (SOLID &amp; OOD Best Practices)<br />Refactoring<br />Automatic Builds / Continuous Integration<br />Automate Every Possible Process<br />IDE &amp; 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. 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. Contact Info<br /><ul><li>http://www.linkedin.com/groups?gid=2578449
    • 44. http://www.irefactor.net
    • 45. http://twitter.com/urilavi
    • 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 />

    ×