Your SlideShare is downloading. ×
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,124

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

    ×