• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Software Craftsmanship - 1 Meeting
 

Software Craftsmanship - 1 Meeting

on

  • 1,616 views

1st Meeting of the Software Craftsmanship in Israel Group

1st Meeting of the Software Craftsmanship in Israel Group

Statistics

Views

Total Views
1,616
Views on SlideShare
1,552
Embed Views
64

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 64

http://blogs.microsoft.co.il 36
http://www.slideshare.net 27
http://www.lmodules.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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)

Software Craftsmanship - 1 Meeting Software Craftsmanship - 1 Meeting Presentation Transcript

  • Software Craftsmanship
    Meeting #1
    http://www.flickr.com/photos/renfield/17375998/in/set-388814/
  • Why?
    Enjoying Coding
    http://www.flickr.com/photos/declanjewell/2687934126/
  • Why?
    Enjoying Constructing
    http://www.flickr.com/photos/cibomahto/2133046342/
  • Why?
    Something Missing
    http://www.flickr.com/photos/ceanandjen/2442627144/
  • Why?
    Time to Market
    http://www.flickr.com/photos/aarongeller/360135019/
  • Why?
    Fire Extinguishing
    http://www.flickr.com/photos/thenationalguard/4443666692/
  • Why?
    Enjoying Constructing?
    http://www.flickr.com/photos/wwworks/2475349116/in/photostream/
  • Why?
    No Mentor, no Coach
    http://www.flickr.com/photos/dirkhansen/3235465927/
  • Software Craftsmanship Group
    • Software Craftsmanship in Israel
    • 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!!!
  • How?
    Long Journey
    http://www.flickr.com/photos/philliecasablanca/2052728068/
  • What?
    Craftsmen
    http://www.flickr.com/photos/34094515@N00/2554591721/
  • Software Craftsmanship
    Principles
    http://www.flickr.com/photos/renfield/351556388/in/photostream/
  • Chaos
    Wreckage
    http://www.flickr.com/photos/bobjagendorf/4122137519/
  • 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.
  • 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.”
  • 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
  • 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
  • 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
  • Short Iterations
    Productive Partnership
    Really Listen
    http://www.flickr.com/photos/renneville/3358544222/in/set-72157612666319208/
  • Short Iterations
    Productive Partnership
    Establish Trust
    http://www.flickr.com/photos/pagedooley/1303402061/
    In God We Trust, All Others Pay Cash
  • Readable Code
    Well-Crafted
    Newspaper Paradigm
    The code should be written as a newspapers’ article
    Reread
    Drafts
    http://www.flickr.com/photos/blackcustard/81680010/
  • TDD
    Well-Crafted
    Validate Expectations
    http://www.flickr.com/photos/nyuhuhuu/4442144329/
    Safety Net
  • 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
  • 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
  • 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
  • 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
  • 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
  • IDE & Tools
    Community of Professionals
    There is a time and situation in which the tools are appropriate
  • Code Review – Important Observation
    Community of Professionals
    Time Restrictions
    http://www.flickr.com/photos/mike-bensalem/3023717032/
  • 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/
  • 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/
  • 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
  • Pair Programming
    Community of Professionals
    http://www.flickr.com/photos/pokerbrit/3468717396/
  • 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
  • Apprenticing
    Community of Professionals
    http://www.flickr.com/photos/mikaelmiettinen/3326060843/
  • Apprenticing
    Community of Professionals
    Define a Roadmap
    Execute
    Explain Loudly and Thoroughly
    Give Examples
    Ask for the Opinion
    +Supervise Projects
    +Point to Educational Materials
  • Exercising
    Community of Professionals
    http://www.flickr.com/photos/deerwooduk/1690299732/
  • 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)
  • 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
  • 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
  • Next Meetings of the Software Craftsmanship Group – A Skeleton
    Gathering
    Descriptive Presentation (~1h)
    Hands On
    Code Reviews
    Pair Programming
    Code Kata
  • Contact Info
    • http://www.linkedin.com/groups?gid=2578449
    • http://www.irefactor.net
    • http://twitter.com/urilavi
    • uri.lavi@hotmail.com
  • 1st Meeting of the Software Craftsmanship Group
    http://www.flickr.com/photos/psd/2086641/