SlideShare a Scribd company logo
1 of 38
Download to read offline
DevTernity 2015 - @softwaregarden
The Art of Software
Gardening
Patroklos Papapetrou
@softwaregarden
Riga, December 2015, @Devternity
DevTernity 2015 - @softwaregarden
A talk presented
by Patroklos
Papapetrou, a
Software
Gardener and
Code Quality
Maniac...
DevTernity 2015 - @softwaregarden
… and my little
friends who can
do/be
everything just
like us, the
developers!
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!”
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”
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/
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/
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/
DevTernity 2015 - @softwaregarden
Software engineering
means applying the
principles of engineering
to the software
development field.
IEEE Definition
DevTernity 2015 - @softwaregarden
DevTernity 2015 - @softwaregarden
Software Engineer is
the most inaccurate
job description ever
#EpicFail
DevTernity 2015 - @softwaregarden
What is the most-
used term in software
development?
BUG
DevTernity 2015 - @softwaregarden
Let me tell you a
story about a happy
developer (me) a
long time ago...
DevTernity 2015 - @softwaregarden
Suddenly my
whole world
collapsed when a
'senior' developer
looked at my code
DevTernity 2015 - @softwaregarden
What was wrong
with me?
I didn't care...
DevTernity 2015 - @softwaregarden
Software Gardening
A reality or (why)
another useless
analogy?
DevTernity 2015 - @softwaregarden
http://softwaregarden.io/manifesto
The manifesto
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…
…..
DevTernity 2015 - @softwaregarden
What about Agile?
Is software
gardening
something else?
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.
DevTernity 2015 - @softwaregarden
Why THIS analogy?
DevTernity 2015 - @softwaregarden
Evolving design
◦
◦ You don’t just plant
some flower seeds
today and expect to
see them blossom
the next day
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!
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).
DevTernity 2015 - @softwaregarden
Treat code as it's
the last flower in
the earth
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
DevTernity 2015 - @softwaregarden
Fault tolerance
Software systems (like
gardens) expected to be
perfect. Small errors
(bugs) can be disastrous
for a whole company
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)
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.
DevTernity 2015 - @softwaregarden
And this passion you
should show it
continuously, day by day,
every moment in every
single line of code you
write.
DevTernity 2015 - @softwaregarden
What do I need to
become a software
gardener?
DevTernity 2015 - @softwaregarden
SKILLS
DevTernity 2015 - @softwaregarden
ATTITUDE
DevTernity 2015 - @softwaregarden
BEST PRACTICES
DevTernity 2015 - @softwaregarden
TOOLS
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.
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
DevTernity 2015 - @softwaregarden
Thank you!
Happy to take
questions

More Related Content

What's hot

Framework-less Applications
Framework-less ApplicationsFramework-less Applications
Framework-less ApplicationsOsvaldas Grigas
 
Get Your Productivity Game On!
Get Your Productivity Game On!Get Your Productivity Game On!
Get Your Productivity Game On!Brian Sjoberg
 
Partner or Perish by Jellybooks at Digital Book World 2014
Partner or Perish by Jellybooks at Digital Book World 2014Partner or Perish by Jellybooks at Digital Book World 2014
Partner or Perish by Jellybooks at Digital Book World 2014Jellybooks Ltd
 
Taking it to the Top: How to Speak Digital with the Board of Directors
Taking it to the Top: How to Speak Digital with the Board of DirectorsTaking it to the Top: How to Speak Digital with the Board of Directors
Taking it to the Top: How to Speak Digital with the Board of DirectorsApigee | Google Cloud
 
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...Thiago de Faria
 
PHP-WVL: Why programmers (we) never manage to make a product
PHP-WVL: Why programmers (we) never manage to make a productPHP-WVL: Why programmers (we) never manage to make a product
PHP-WVL: Why programmers (we) never manage to make a productAndreas - Creten
 

What's hot (7)

Framework-less Applications
Framework-less ApplicationsFramework-less Applications
Framework-less Applications
 
Get Your Productivity Game On!
Get Your Productivity Game On!Get Your Productivity Game On!
Get Your Productivity Game On!
 
Android from zero
Android from zero Android from zero
Android from zero
 
Partner or Perish by Jellybooks at Digital Book World 2014
Partner or Perish by Jellybooks at Digital Book World 2014Partner or Perish by Jellybooks at Digital Book World 2014
Partner or Perish by Jellybooks at Digital Book World 2014
 
Taking it to the Top: How to Speak Digital with the Board of Directors
Taking it to the Top: How to Speak Digital with the Board of DirectorsTaking it to the Top: How to Speak Digital with the Board of Directors
Taking it to the Top: How to Speak Digital with the Board of Directors
 
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
devopsdays Riga 2018 - Chaos while deploying AI and making sure it doesn’t hu...
 
PHP-WVL: Why programmers (we) never manage to make a product
PHP-WVL: Why programmers (we) never manage to make a productPHP-WVL: Why programmers (we) never manage to make a product
PHP-WVL: Why programmers (we) never manage to make a product
 

Viewers also liked

Donne e telefonia. 15 anni di pubblicità.
Donne e telefonia. 15 anni di pubblicità.Donne e telefonia. 15 anni di pubblicità.
Donne e telefonia. 15 anni di pubblicità.MelaniaMauri
 
Container gardening keys to using potted plants successfully
Container gardening keys to using potted plants successfullyContainer gardening keys to using potted plants successfully
Container gardening keys to using potted plants successfullyJorge Cortez
 
Introduction To Plants
Introduction To PlantsIntroduction To Plants
Introduction To Plantsjrohara
 
Vertical Urban Gardening - An Introduction
Vertical Urban Gardening - An IntroductionVertical Urban Gardening - An Introduction
Vertical Urban Gardening - An Introductionpiyush belchandan
 
Facts about Vertical Growing
Facts about Vertical GrowingFacts about Vertical Growing
Facts about Vertical GrowingRob Smart
 
Green Home - Plants and Home Gardening Accessories
Green Home - Plants and Home Gardening AccessoriesGreen Home - Plants and Home Gardening Accessories
Green Home - Plants and Home Gardening AccessoriesJNBGreenHome
 
Bill Adams: Rock Gardening Plants from Near and Far
Bill Adams: Rock Gardening Plants from Near and FarBill Adams: Rock Gardening Plants from Near and Far
Bill Adams: Rock Gardening Plants from Near and FarEva Montane
 
Introduction To Plants
Introduction To PlantsIntroduction To Plants
Introduction To Plantsmlong24
 
Know your basic gardening tools for proper landscaping
Know your basic gardening tools for proper landscapingKnow your basic gardening tools for proper landscaping
Know your basic gardening tools for proper landscapingsteven hasting
 
Urban Gardening For Dummies
Urban Gardening For DummiesUrban Gardening For Dummies
Urban Gardening For DummiesCharlie Nardozzi
 
Place, Purpose, Plants: Urban Gardening with Native Plants
Place, Purpose, Plants: Urban Gardening with Native PlantsPlace, Purpose, Plants: Urban Gardening with Native Plants
Place, Purpose, Plants: Urban Gardening with Native PlantsFlatbush Gardener
 
Introduction to Plants - Basic Overview
Introduction to Plants - Basic OverviewIntroduction to Plants - Basic Overview
Introduction to Plants - Basic OverviewCatherine Patterson
 
Japanese Landscape
Japanese Landscape Japanese Landscape
Japanese Landscape Sai Yaswanth
 
Introduction to plants
Introduction to plantsIntroduction to plants
Introduction to plantsjdrinks
 
M simmons db3_ip3
M simmons db3_ip3M simmons db3_ip3
M simmons db3_ip3mitchniya
 

Viewers also liked (20)

Gardening on the Move
Gardening on the MoveGardening on the Move
Gardening on the Move
 
Donne e telefonia. 15 anni di pubblicità.
Donne e telefonia. 15 anni di pubblicità.Donne e telefonia. 15 anni di pubblicità.
Donne e telefonia. 15 anni di pubblicità.
 
Container gardening keys to using potted plants successfully
Container gardening keys to using potted plants successfullyContainer gardening keys to using potted plants successfully
Container gardening keys to using potted plants successfully
 
Introduction To Plants
Introduction To PlantsIntroduction To Plants
Introduction To Plants
 
Vertical Urban Gardening - An Introduction
Vertical Urban Gardening - An IntroductionVertical Urban Gardening - An Introduction
Vertical Urban Gardening - An Introduction
 
Facts about Vertical Growing
Facts about Vertical GrowingFacts about Vertical Growing
Facts about Vertical Growing
 
Green Home - Plants and Home Gardening Accessories
Green Home - Plants and Home Gardening AccessoriesGreen Home - Plants and Home Gardening Accessories
Green Home - Plants and Home Gardening Accessories
 
Native plant gardening for all seasons
Native plant gardening for all seasonsNative plant gardening for all seasons
Native plant gardening for all seasons
 
Bill Adams: Rock Gardening Plants from Near and Far
Bill Adams: Rock Gardening Plants from Near and FarBill Adams: Rock Gardening Plants from Near and Far
Bill Adams: Rock Gardening Plants from Near and Far
 
Introduction To Plants
Introduction To PlantsIntroduction To Plants
Introduction To Plants
 
Know your basic gardening tools for proper landscaping
Know your basic gardening tools for proper landscapingKnow your basic gardening tools for proper landscaping
Know your basic gardening tools for proper landscaping
 
Introduction to Plants PPT
Introduction to Plants PPTIntroduction to Plants PPT
Introduction to Plants PPT
 
Urban Gardening For Dummies
Urban Gardening For DummiesUrban Gardening For Dummies
Urban Gardening For Dummies
 
Place, Purpose, Plants: Urban Gardening with Native Plants
Place, Purpose, Plants: Urban Gardening with Native PlantsPlace, Purpose, Plants: Urban Gardening with Native Plants
Place, Purpose, Plants: Urban Gardening with Native Plants
 
Introduction to Plants - Basic Overview
Introduction to Plants - Basic OverviewIntroduction to Plants - Basic Overview
Introduction to Plants - Basic Overview
 
Japanese Landscape
Japanese Landscape Japanese Landscape
Japanese Landscape
 
Japanese Gardens Study
Japanese Gardens StudyJapanese Gardens Study
Japanese Gardens Study
 
Introduction to plants
Introduction to plantsIntroduction to plants
Introduction to plants
 
Types of gardens
Types of gardensTypes of gardens
Types of gardens
 
M simmons db3_ip3
M simmons db3_ip3M simmons db3_ip3
M simmons db3_ip3
 

Similar to The Art of Software Gardening

AI with a DevOps Mindset - Experimentation, sharing & easy ML deployment
AI with a DevOps Mindset - Experimentation, sharing & easy ML deploymentAI with a DevOps Mindset - Experimentation, sharing & easy ML deployment
AI with a DevOps Mindset - Experimentation, sharing & easy ML deploymentThiago de Faria
 
From desktop to the cloud, cutting costs with Virtual kubelet and ACI
From desktop to the cloud, cutting costs with Virtual kubelet and ACIFrom desktop to the cloud, cutting costs with Virtual kubelet and ACI
From desktop to the cloud, cutting costs with Virtual kubelet and ACIAdi Polak
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Lauren Hayward Schaefer
 
So you want to be a Software Engineer
So you want to be a Software EngineerSo you want to be a Software Engineer
So you want to be a Software EngineerindikaMaligaspe
 
Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Bill Scott
 
The Death and Rise of Enterprise DevOps
The Death and Rise of Enterprise DevOpsThe Death and Rise of Enterprise DevOps
The Death and Rise of Enterprise DevOpsDevOps Indonesia
 
New Farming Methods in the Epistemological Wasteland of Application Security
New Farming Methods in the Epistemological Wasteland of Application SecurityNew Farming Methods in the Epistemological Wasteland of Application Security
New Farming Methods in the Epistemological Wasteland of Application SecurityJames Wickett
 
Introduction to Software Craftsmanship
Introduction to Software CraftsmanshipIntroduction to Software Craftsmanship
Introduction to Software CraftsmanshipRajat Singla
 
WSO2Con USA 2015: Keynote - Helping You Connect the World
WSO2Con USA 2015: Keynote - Helping You Connect the WorldWSO2Con USA 2015: Keynote - Helping You Connect the World
WSO2Con USA 2015: Keynote - Helping You Connect the WorldWSO2
 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application SecurityJames Wickett
 
Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)VMware Tanzu
 
Transform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsTransform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsGaurav Sharma
 
Cultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupCultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupGil Tayar
 
Evolving to Cloud-Native - Nate Schutta 1/2
Evolving to Cloud-Native - Nate Schutta 1/2Evolving to Cloud-Native - Nate Schutta 1/2
Evolving to Cloud-Native - Nate Schutta 1/2VMware Tanzu
 
Customer Ops: DevOps <3 customer support
Customer Ops: DevOps <3 customer supportCustomer Ops: DevOps <3 customer support
Customer Ops: DevOps <3 customer supportDatadog
 
5 Level of AI Assistants from the Chatbot Conference
5 Level of AI Assistants from the Chatbot Conference5 Level of AI Assistants from the Chatbot Conference
5 Level of AI Assistants from the Chatbot ConferenceStefan Kojouharov
 
Strategies for Mobile eLearning
Strategies for Mobile eLearningStrategies for Mobile eLearning
Strategies for Mobile eLearningeaselsolutions
 

Similar to The Art of Software Gardening (20)

AI with a DevOps Mindset - Experimentation, sharing & easy ML deployment
AI with a DevOps Mindset - Experimentation, sharing & easy ML deploymentAI with a DevOps Mindset - Experimentation, sharing & easy ML deployment
AI with a DevOps Mindset - Experimentation, sharing & easy ML deployment
 
Eating Our Own Dog Food
Eating Our Own Dog FoodEating Our Own Dog Food
Eating Our Own Dog Food
 
From desktop to the cloud, cutting costs with Virtual kubelet and ACI
From desktop to the cloud, cutting costs with Virtual kubelet and ACIFrom desktop to the cloud, cutting costs with Virtual kubelet and ACI
From desktop to the cloud, cutting costs with Virtual kubelet and ACI
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
 
So you want to be a Software Engineer
So you want to be a Software EngineerSo you want to be a Software Engineer
So you want to be a Software Engineer
 
Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)
 
The Death and Rise of Enterprise DevOps
The Death and Rise of Enterprise DevOpsThe Death and Rise of Enterprise DevOps
The Death and Rise of Enterprise DevOps
 
New Farming Methods in the Epistemological Wasteland of Application Security
New Farming Methods in the Epistemological Wasteland of Application SecurityNew Farming Methods in the Epistemological Wasteland of Application Security
New Farming Methods in the Epistemological Wasteland of Application Security
 
Introduction to Software Craftsmanship
Introduction to Software CraftsmanshipIntroduction to Software Craftsmanship
Introduction to Software Craftsmanship
 
WSO2Con USA 2015: Keynote - Helping You Connect the World
WSO2Con USA 2015: Keynote - Helping You Connect the WorldWSO2Con USA 2015: Keynote - Helping You Connect the World
WSO2Con USA 2015: Keynote - Helping You Connect the World
 
Epistemological Problem of Application Security
Epistemological Problem of Application SecurityEpistemological Problem of Application Security
Epistemological Problem of Application Security
 
Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)
 
Transform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsTransform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOps
 
User Experience For Wearables
User Experience For WearablesUser Experience For Wearables
User Experience For Wearables
 
Cultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupCultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startup
 
Evolving to Cloud-Native - Nate Schutta 1/2
Evolving to Cloud-Native - Nate Schutta 1/2Evolving to Cloud-Native - Nate Schutta 1/2
Evolving to Cloud-Native - Nate Schutta 1/2
 
Customer Ops: DevOps <3 customer support
Customer Ops: DevOps <3 customer supportCustomer Ops: DevOps <3 customer support
Customer Ops: DevOps <3 customer support
 
5 Level of AI Assistants from the Chatbot Conference
5 Level of AI Assistants from the Chatbot Conference5 Level of AI Assistants from the Chatbot Conference
5 Level of AI Assistants from the Chatbot Conference
 
Strategies for Mobile eLearning
Strategies for Mobile eLearningStrategies for Mobile eLearning
Strategies for Mobile eLearning
 

More from Patroklos Papapetrou (Pat)

More from Patroklos Papapetrou (Pat) (9)

Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller
Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller
Voxxed Days Thessaloniki 2016 - JDK 9 : Big Changes To Make Java Smaller
 
Boost your development speed - ITAKE Unconference
Boost your development speed - ITAKE UnconferenceBoost your development speed - ITAKE Unconference
Boost your development speed - ITAKE Unconference
 
ITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with SonarqubeITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with Sonarqube
 
Thessaloniki rb-24
Thessaloniki rb-24Thessaloniki rb-24
Thessaloniki rb-24
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQube
 
Continous integration with jenkins
Continous integration with jenkinsContinous integration with jenkins
Continous integration with jenkins
 
Sonar platform
Sonar platformSonar platform
Sonar platform
 
Thessaloniki through history with images
Thessaloniki through history with imagesThessaloniki through history with images
Thessaloniki through history with images
 
J2EE Introduction
J2EE IntroductionJ2EE Introduction
J2EE Introduction
 

Recently uploaded

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 

Recently uploaded (20)

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
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
  • 10. DevTernity 2015 - @softwaregarden
  • 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.
  • 21. DevTernity 2015 - @softwaregarden Why THIS analogy?
  • 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?
  • 32. DevTernity 2015 - @softwaregarden SKILLS
  • 33. DevTernity 2015 - @softwaregarden ATTITUDE
  • 34. DevTernity 2015 - @softwaregarden BEST PRACTICES
  • 35. DevTernity 2015 - @softwaregarden TOOLS
  • 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