The document is a transcript from a presentation titled "The Art of Software Gardening" given by Patroklos Papapetrou at DevTernity 2015. The presentation proposes using the analogy of software development as gardening, where developers are called "software gardeners" and code is treated like plants in a garden. Some key aspects of this analogy include evolving design like a garden, continuous refactoring to remove dead code, treating each line of code with passion, and having skills, best practices, and tools to develop software while withstanding changes like a garden withstands weather. The goal of this analogy is to promote an attitude of care, evolution and passion in software development.
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
The Art of Software Gardening
1. DevTernity 2015 - @softwaregarden
The Art of Software
Gardening
Patroklos Papapetrou
@softwaregarden
Riga, December 2015, @Devternity
2. DevTernity 2015 - @softwaregarden
A talk presented
by Patroklos
Papapetrou, a
Software
Gardener and
Code Quality
Maniac...
3. DevTernity 2015 - @softwaregarden
… and my little
friends who can
do/be
everything just
like us, the
developers!
4. DevTernity 2015 - @softwaregarden
“One of the most
inspiring talks I’ve
ever heard. I think I
will change my title
to software
gardener right
away!”
5. DevTernity 2015 - @softwaregarden
“Might damage the
reputation of software
engineers. I might
make the same
parallel with for
instance a cleaner,
child carer or factory
worker”
6. DevTernity 2015 - @softwaregarden
“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/
7. DevTernity 2015 - @softwaregarden
Software Engineering has
been used to describe
"building of software
systems which are so
large or so complex that
they are built by a team
or teams of engineers"
Fundamentals of Software Engineering
http://www.prenhall.com/ghezzi/
8. DevTernity 2015 - @softwaregarden
Software Engineering has
been used to describe
"building of software
systems which are so
large or so complex that
they are built by a team
or teams of engineers"
Fundamentals of Software Engineering
http://www.prenhall.com/ghezzi/
9. DevTernity 2015 - @softwaregarden
Software engineering
means applying the
principles of engineering
to the software
development field.
IEEE Definition
11. DevTernity 2015 - @softwaregarden
Software Engineer is
the most inaccurate
job description ever
#EpicFail
12. DevTernity 2015 - @softwaregarden
What is the most-
used term in software
development?
BUG
13. DevTernity 2015 - @softwaregarden
Let me tell you a
story about a happy
developer (me) a
long time ago...
14. DevTernity 2015 - @softwaregarden
Suddenly my
whole world
collapsed when a
'senior' developer
looked at my code
15. DevTernity 2015 - @softwaregarden
What was wrong
with me?
I didn't care...
16. DevTernity 2015 - @softwaregarden
Software Gardening
A reality or (why)
another useless
analogy?
17. DevTernity 2015 - @softwaregarden
http://softwaregarden.io/manifesto
The manifesto
18. DevTernity 2015 - @softwaregarden
We treat software systems as gardens and code
as flowers.
We constantly mentor young developers and we
share our knowledge at every opportunity
We treat customers as the people who will walk in
our garden…
…..
19. DevTernity 2015 - @softwaregarden
What about Agile?
Is software
gardening
something else?
20. DevTernity 2015 - @softwaregarden
What about software
as a craft?
Craft is about creating objects
Software is “alive”, organic
You have to be prepared to
interact with to improve all the
time.
22. DevTernity 2015 - @softwaregarden
Evolving design
◦
◦ You don’t just plant
some flower seeds
today and expect to
see them blossom
the next day
23. DevTernity 2015 - @softwaregarden
Continuous Re-factoring
Gardeners just uproot
anything that’s blocking
their design or doesn’t
fit in the garden. Do the
same with your code!
24. DevTernity 2015 - @softwaregarden
Continuous Re-factoring
Throw away any code
that’s not needed
(withered flowers) any
more or is causing too
much troubles
(unwanted plants).
25. DevTernity 2015 - @softwaregarden
Treat code as it's
the last flower in
the earth
26. DevTernity 2015 - @softwaregarden
There's nothing permanent
except change
(Τα πάντα ρει – Panta rhei)
Be ready to change and
adapt on unwanted
external environment
changes (rain/wind/cold)
Heraclitus – Greek Philosopher
27. DevTernity 2015 - @softwaregarden
Fault tolerance
Software systems (like
gardens) expected to be
perfect. Small errors
(bugs) can be disastrous
for a whole company
28. DevTernity 2015 - @softwaregarden
Find the (business) value
Deliver a bug-free (no-
disease), fully-covered by
tests (protected by future
diseases), and well-designed
(correctly irrigated) feature
(flower)
29. DevTernity 2015 - @softwaregarden
Software gardening is not
just a practice, an attitude,
a skill or a special
knowledge.
It’s all of them plus the
passion you have for
software development.
30. DevTernity 2015 - @softwaregarden
And this passion you
should show it
continuously, day by day,
every moment in every
single line of code you
write.
31. DevTernity 2015 - @softwaregarden
What do I need to
become a software
gardener?
36. DevTernity 2015 - @softwaregarden
Software gardening is not
just a practice, an attitude,
a skill or a special
knowledge.
It’s all of them plus the
passion you have for
software development.
37. DevTernity 2015 - @softwaregarden
Shameless slide
https://leanpub.com/art_software_gardening
The Art of Software Gardening
A practical guide to learn how to
treat software systems as
gardens
38. DevTernity 2015 - @softwaregarden
Thank you!
Happy to take
questions