Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Art of Software Gardening

The Art of Software Gardening

The Art of Software Gardening

Papapetrou Patroklos

March 18, 2015
Tweet

More Decks by Papapetrou Patroklos

Other Decks in Technology

Transcript

  1. The Art of
    Software
    Gardening

    View Slide

  2. I am here because I love Swedish coffee
    Hello!
    I am Patroklos Papapetrou
    I am here because I love Swedish coffee and I
    am passionate about clean code and software
    gardening
    You can find me at @ppapapetrou76

    View Slide

  3. 97 of conferences
    %
    attendees don't care
    about speakers bio

    View Slide

  4. Art VS Software VS Gardening
    How I came up with this topic?
    1

    View Slide


  5. You are not a Software
    Engineer. You do not build
    skyscrapers. You do not build
    bridges.
    You grow gardens.
    You are a Software Gardener.
    Chris Aithcison, 2011
    http://www.chrisaitchison.com/2011/05/03/you-are-not-a-software-engineer/

    View Slide

  6. Software engineer
    is the most failed
    ever job title
    #EpicFail

    View Slide

  7. Art VS Software VS Gardening

    View Slide

  8. Art VS Software VS Gardening
    So what are we?
    ◦ Artists?
    ◦ Engineers?
    ◦ Gardeners?
    ◦ None of them?
    ◦ All of them?

    View Slide

  9. Writing software is
    about a lot more
    than slinging code

    View Slide

  10. Writing software is about a lot more than
    slinging code
    In the beginning of my career I had only one
    goal : Be the fastest code monkey

    View Slide

  11. Writing software is about a lot more than
    slinging code
    Suddenly my whole world collapsed when a
    'senior' developer looked at my code

    View Slide

  12. What was wrong with me?
    I didn't care about
    ◦ the code I was putting to the
    system
    ◦ who will maintain it in the
    future
    ◦ who will use it
    ◦ Its behavior when new code
    would be added.

    View Slide

  13. What about Agile?
    Is software gardening something else?
    2

    View Slide

  14. Agile principles vs Software
    Gardening
    A software gardener
    ◦ Easier adopts / follows agile
    practices
    ◦ Easier changes his mindset
    ◦ Moves agility to a higher level

    View Slide

  15. Agile principles vs Software
    Gardening
    You can be a brilliant software gardener while
    using waterfall or other monolithic process

    View Slide

  16. What about Software
    Craftsmanship?
    Yet another new fancy term / buzz word?
    3

    View Slide

  17. Craftsmanship vs Gardening
    ◦ Craft is about creating objects
    ◦ Better compare code to
    flowers and software systems
    to gardens

    View Slide

  18. What is software gardening
    4

    View Slide


  19. Software gardening is not a
    practice, an attitude, a skill or a
    special knowledge.
    It’s all of them plus the you
    have for software development.
    And this you should show it
    continuously, day by day, every
    moment in every single line of
    code you write.
    Patroklos Papapetrou, 2014
    http://softwaregarden.io

    View Slide

  20. Why this analogy?
    ◦ Code as flowers, systems as gardens
    ◦ You don’t just plant some flower seeds
    today and expect to see them blossom
    the next day

    View Slide

  21. Why this analogy?
    ◦ Deliver a bug-free (no-disease), fully-
    covered by tests (protected by future
    diseases), and well-designed (correctly
    irritated) feature (flower)

    View Slide

  22. Treat code as it's
    the last flower your
    wife/husband/boyf
    riend/girlfriend will
    ever smell

    View Slide

  23. Why this analogy?
    ◦ Gardeners just uproot anything that’s
    blocking their design or doesn’t fit in the
    garden. Do the same with your code!
    ◦ Throw away any code that’s not needed
    (withered flowers) any more or is causing
    too much troubles (unwanted plants).

    View Slide

  24. Why this analogy?
    ◦ Be ready to adapt on unwanted external
    environment changes (rain/wind/cold)

    View Slide

  25. Why this analogy?
    ◦ Or remove any internal environment
    roadblocks (warms and other bugs)

    View Slide

  26. What do I need to become a
    software gardener?
    5

    View Slide

  27. What it takes to become a
    software gardener
    Skills

    View Slide

  28. The Skills
    Soft
    Patience
    (Do not over-irritate)
    No multi-tasking
    (one flower at a time)
    Proactive / adapt to
    changes
    (snow/wind/bugs)
    Technical
    Write clean code
    (colorful flowers)
    Unit testing
    (fragrant gardens)
    Be polyglot
    (pick the right soil,
    fertilizer)

    View Slide

  29. The Skills
    Technical
    Soft
    Ideal
    Software
    Gardener

    View Slide

  30. What it takes to become a
    software gardener

    View Slide

  31. The Attitude
    ◦ Commitment – Love what you do
    ◦ Share knowledge
    ◦ Be a mentor
    ◦ Accept criticism
    ◦ Self-learner

    View Slide

  32. What it takes to become a
    software gardener

    View Slide

  33. The practices
    ◦ TDD
    ◦ Code reviews
    ◦ Automate-automate-automate
    ◦ Re-factoring
    ◦ Boy-scout approach

    View Slide

  34. What it takes to become a
    software gardener

    View Slide

  35. Don't forget!
    Dear Ladies and Gentlemen,
    you are now welcome to ”Göteborg 1”
    for a lovely lunch that is sponsored by

    View Slide

  36. Thanks!
    ANY QUESTIONS?
    You can find me at
    @ppapapetrou76
    Http://softwaregarden.io
    https://leanpub.com/art_software_gardening
    Rate this presentation at :
    https://www.surveymonkey.com/s/CRQJZ5R

    View Slide