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

More Decks by Papapetrou Patroklos

Other Decks in Technology


  1. 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
  2. “ 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/
  3. Art VS Software VS Gardening So what are we? ◦

    Artists? ◦ Engineers? ◦ Gardeners? ◦ None of them? ◦ All of them?
  4. 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
  5. Writing software is about a lot more than slinging code

    Suddenly my whole world collapsed when a 'senior' developer looked at my code
  6. 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.
  7. Agile principles vs Software Gardening A software gardener ◦ Easier

    adopts / follows agile practices ◦ Easier changes his mindset ◦ Moves agility to a higher level
  8. Agile principles vs Software Gardening You can be a brilliant

    software gardener while using waterfall or other monolithic process
  9. Craftsmanship vs Gardening ◦ Craft is about creating objects ◦

    Better compare code to flowers and software systems to gardens
  10. “ 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
  11. 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 ◦
  12. Why this analogy? ◦ Deliver a bug-free (no-disease), fully- covered

    by tests (protected by future diseases), and well-designed (correctly irritated) feature (flower)
  13. 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).
  14. Why this analogy? ◦ Be ready to adapt on unwanted

    external environment changes (rain/wind/cold)
  15. 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)
  16. The Attitude ◦ Commitment – Love what you do ◦

    Share knowledge ◦ Be a mentor ◦ Accept criticism ◦ Self-learner
  17. Don't forget! Dear Ladies and Gentlemen, you are now welcome

    to ”Göteborg 1” for a lovely lunch that is sponsored by
  18. 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