SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Why do lazy developers
write beautiful code?
Why lazy developers write beautiful code?
Who is this guy?
@javier_arilos / Javier Arias Losada
Programming as building construction
CASE - Computer-Aided
Software Engineering
Software development is a wicked problem
"wicked": a problem
whose solution can be
defined only by
solving it*.
Engineering essence: elegant efficiency
best
engineering is
born out of an
imperative to
use the
minimum amount
of materials
Is software development like science?
Art
the expression or application of human creative skill and
imagination
producing works to be appreciated primarily for their beauty
Programming and painting
How Picasso paints a woman
https://youtu.be/V1UmPiUlFis
Programming and painting
● sketching
● gradual refinement
Beauty
a combination of qualities, such as shape, colour, or form, that
pleases the aesthetic senses, especially the sight.
"The Magical Number Seven,
Plus or Minus Two: Some
Limits on Our Capacity for
Processing Information" -
George A. Miller, 1956
The Magic Number Seven, +/- Two
"beautiful code" is not an abstract virtue
beautiful code must help the
programmer be happy and
productive
beautiful code is easy to
understand
Yukihiro Matsumoto (Ruby Creator)
Brevity & no redundancy
Familiarity
Simplicity
Flexibility
Balance
>>> import this, The Zen of Python
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Although practicality beats purity.
If the implementation is hard to
explain, it's a bad idea.
If the implementation is easy to
explain, it may be a good idea.
Namespaces are one honking great idea --
let's do more of those!
Kent Beck (XP/agile)
Passes the tests
Reveals intention
No duplication
Fewest elements
Clean code - Uncle Bob
The only
valid
measurement
of code
quality:
WTFs/minute
Laziness
the quality of being unwilling to work or use energy; idleness.
Tips for lazy developers
Tip 1. Use the right tools
Optimise for development time, not execution time
Tip 2. Be pragmatic
Tip 3. automate all the things
Tip 4. Fast feedback is king
Law 5. Write beautiful code
Inspired by...
Lazy person
"I will always choose a lazy
person to do a difficult job
because a lazy person will
find an easy way to do it."
Bill Gates
Laziness
“The quality that makes you go to
great effort to reduce overall energy
expenditure. It makes you write
labor-saving programs that other
people will find useful, and document
what you wrote so you don't have to
answer so many questions about it.
Hence, the first great virtue of a
programmer.”
Larry Wall - Perl author
Done. Now I think I can use some rest.
@javier_arilos / Javier Arias Losada
references
Jeff Atwood - Development is Inherently Wicked https://blog.codinghorror.com/development-is-inherently-wicked/
Jeff Atwood - Good Programmers get off their butts https://blog.codinghorror.com/good-programmers-get-off-their-butts/
Yukihiro Matsumoto - Treating Code As an Essay https://www.safaribooksonline.com/library/view/beautiful-code/9780596510046/ch29.html
Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell: http://a.co/exQvydH
Bartosz Milewski - Category: The Essence of Composition: https://bartoszmilewski.com/2014/11/04/category-the-essence-of-composition/
Joe Armstrong - Why programming is difficult http://joearms.github.io/2014/02/07/why-programming-is-difficult.html
Martin Fowler - Beck Design Rules https://martinfowler.com/bliki/BeckDesignRules.html
Rob C. Martin - Clean Code https://www.amazon.com/dp/0132350882/ref=cm_sw_r_tw_dp_x_g-JXzbJT5GS7X
Abstract
There has been a lot of discussion during the last 50 years about the nature of
programming: Is it an art like poetry? Is it craftsmanship like pottery? Is it an
exact science like physics? Or a non exact science like medicine? Is it engineering
like bridge building?
Whatever the nature of software development is: during this time, a lot of tools and
techniques have appeared to make your lazy-developer life more difficult: Coding
conventions, OOP, FP, SOLID, Design Patterns, Tests, TDD, UML, Use-cases, CASE tools,
Refactoring, RUP, Agile, SCRUM, Continuous Integration, Code Complexity Metrics,
Emergent Architecture, DevOps, SCM... and whatnot!
But, sometimes, being a lazy developer makes you do things that seemed
counterintuitive, in order to pursue your main objective: WORK LESS.

Weitere ähnliche Inhalte

Was ist angesagt?

Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteChristian Heilmann
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteChristian Heilmann
 
UX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceUX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceRaj Lal
 
Session on mockups
Session on mockupsSession on mockups
Session on mockupsAbdul Dibosh
 
Lean prototyping for entrepreneurs
Lean prototyping for entrepreneursLean prototyping for entrepreneurs
Lean prototyping for entrepreneursAmir Khella
 
Sculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserSculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserStephen Hay
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobileMemi Beltrame
 
Mobile User Experience - Inductive Design Process
Mobile User Experience - Inductive Design ProcessMobile User Experience - Inductive Design Process
Mobile User Experience - Inductive Design ProcessJennifer Shurley
 
Designers & Developers
Designers & DevelopersDesigners & Developers
Designers & DevelopersAndré Luís
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devicesmwbrooks
 
Wireframes for the Wicked
Wireframes for the WickedWireframes for the Wicked
Wireframes for the WickedNick Finck
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDKmwbrooks
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)goeran
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsmangoeran
 
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...Bruno Capuano
 
Crash Course in Wireframing
Crash Course in WireframingCrash Course in Wireframing
Crash Course in WireframingMarcel
 
Ubercool, pixel perfct & slick design… that just doesn't work
Ubercool, pixel perfct & slick design… that just doesn't workUbercool, pixel perfct & slick design… that just doesn't work
Ubercool, pixel perfct & slick design… that just doesn't workSamuel Bednar
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedJamil Goheer
 
Pavel Nikolov: Inspire
Pavel Nikolov: InspirePavel Nikolov: Inspire
Pavel Nikolov: InspirePavel Nikolov
 

Was ist angesagt? (20)

Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynote
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynote
 
UX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceUX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experience
 
Session on mockups
Session on mockupsSession on mockups
Session on mockups
 
Lean prototyping for entrepreneurs
Lean prototyping for entrepreneursLean prototyping for entrepreneurs
Lean prototyping for entrepreneurs
 
Sculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the BrowserSculpting Text: Easing the Pain of Designing in the Browser
Sculpting Text: Easing the Pain of Designing in the Browser
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobile
 
Mobile User Experience - Inductive Design Process
Mobile User Experience - Inductive Design ProcessMobile User Experience - Inductive Design Process
Mobile User Experience - Inductive Design Process
 
Designers & Developers
Designers & DevelopersDesigners & Developers
Designers & Developers
 
Dawn of the Devices
Dawn of the DevicesDawn of the Devices
Dawn of the Devices
 
Wireframes for the Wicked
Wireframes for the WickedWireframes for the Wicked
Wireframes for the Wicked
 
Your Browser is Your SDK
Your Browser is Your SDKYour Browser is Your SDK
Your Browser is Your SDK
 
The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)The Software Craftsman (2nd edition)
The Software Craftsman (2nd edition)
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...
2021 04 21 Azure Sydney User Group - Scaling a POC to an Enterprise using Azu...
 
Crash Course in Wireframing
Crash Course in WireframingCrash Course in Wireframing
Crash Course in Wireframing
 
Ubercool, pixel perfct & slick design… that just doesn't work
Ubercool, pixel perfct & slick design… that just doesn't workUbercool, pixel perfct & slick design… that just doesn't work
Ubercool, pixel perfct & slick design… that just doesn't work
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid Javed
 
Pavel Nikolov: Inspire
Pavel Nikolov: InspirePavel Nikolov: Inspire
Pavel Nikolov: Inspire
 
CV_Abdul
CV_AbdulCV_Abdul
CV_Abdul
 

Ähnlich wie Why do lazy developers write beautiful code?

Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
Wireframes & More
Wireframes & MoreWireframes & More
Wireframes & MoreSV.CO
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature CreatureChristian Heilmann
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st CenturyHenry Jacob
 
API Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesAPI Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesTom Johnson
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential SkillsJohn Choi
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Mozaic Works
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Jorge López-Lago
 
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}Mumbai B.Sc.IT Study
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
 
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
 
Test Driven Development: Part 2
Test Driven Development: Part 2Test Driven Development: Part 2
Test Driven Development: Part 2CodeAndroid
 
When the Developer Must Design
When the Developer Must DesignWhen the Developer Must Design
When the Developer Must DesignAndrew Malek
 
Boris Krstović - Building Product 101
Boris Krstović - Building Product 101Boris Krstović - Building Product 101
Boris Krstović - Building Product 101Startap Akademija
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Nick Galbreath
 
What is Club Project 2020?
What is Club Project 2020?What is Club Project 2020?
What is Club Project 2020?OASIS STEM
 
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Skills Matter
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotesEudris Cabrera
 

Ähnlich wie Why do lazy developers write beautiful code? (20)

Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
Wireframes & More
Wireframes & MoreWireframes & More
Wireframes & More
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
The Value of Software Design
The Value of Software DesignThe Value of Software Design
The Value of Software Design
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
API Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesAPI Workshop: Deep dive into code samples
API Workshop: Deep dive into code samples
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)
 
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}
Project Management (October - 2014) [CBSGS - Paper Solution] {Mumbai University}
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developer
 
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
 
Test Driven Development: Part 2
Test Driven Development: Part 2Test Driven Development: Part 2
Test Driven Development: Part 2
 
Going Pro
Going ProGoing Pro
Going Pro
 
When the Developer Must Design
When the Developer Must DesignWhen the Developer Must Design
When the Developer Must Design
 
Boris Krstović - Building Product 101
Boris Krstović - Building Product 101Boris Krstović - Building Product 101
Boris Krstović - Building Product 101
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
 
What is Club Project 2020?
What is Club Project 2020?What is Club Project 2020?
What is Club Project 2020?
 
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotes
 

Mehr von Javier Arias Losada

Europython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonEuropython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonJavier Arias Losada
 
Pybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonPybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonJavier Arias Losada
 
OSCON - ES6 metaprogramming unleashed
OSCON -  ES6 metaprogramming unleashedOSCON -  ES6 metaprogramming unleashed
OSCON - ES6 metaprogramming unleashedJavier Arias Losada
 
Elastically scalable architectures with microservices. The end of the monolith?
Elastically scalable architectures with microservices. The end of the monolith?Elastically scalable architectures with microservices. The end of the monolith?
Elastically scalable architectures with microservices. The end of the monolith?Javier Arias Losada
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsJavier Arias Losada
 
Rabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsRabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsJavier Arias Losada
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingJavier Arias Losada
 
From Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeFrom Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeJavier Arias Losada
 

Mehr von Javier Arias Losada (9)

Europython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonEuropython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with Python
 
Pybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonPybcn machine learning for dummies with python
Pybcn machine learning for dummies with python
 
OSCON - ES6 metaprogramming unleashed
OSCON -  ES6 metaprogramming unleashedOSCON -  ES6 metaprogramming unleashed
OSCON - ES6 metaprogramming unleashed
 
ES6 metaprogramming unleashed
ES6 metaprogramming unleashedES6 metaprogramming unleashed
ES6 metaprogramming unleashed
 
Elastically scalable architectures with microservices. The end of the monolith?
Elastically scalable architectures with microservices. The end of the monolith?Elastically scalable architectures with microservices. The end of the monolith?
Elastically scalable architectures with microservices. The end of the monolith?
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.js
 
Rabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsRabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging Patterns
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
 
From Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeFrom Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndrome
 

Kürzlich hochgeladen

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Kürzlich hochgeladen (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Why do lazy developers write beautiful code?

  • 1. Why do lazy developers write beautiful code?
  • 2. Why lazy developers write beautiful code?
  • 3. Who is this guy? @javier_arilos / Javier Arias Losada
  • 4. Programming as building construction CASE - Computer-Aided Software Engineering
  • 5. Software development is a wicked problem "wicked": a problem whose solution can be defined only by solving it*.
  • 6. Engineering essence: elegant efficiency best engineering is born out of an imperative to use the minimum amount of materials
  • 7. Is software development like science?
  • 8. Art the expression or application of human creative skill and imagination producing works to be appreciated primarily for their beauty
  • 10. How Picasso paints a woman https://youtu.be/V1UmPiUlFis
  • 11. Programming and painting ● sketching ● gradual refinement
  • 12. Beauty a combination of qualities, such as shape, colour, or form, that pleases the aesthetic senses, especially the sight.
  • 13. "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information" - George A. Miller, 1956 The Magic Number Seven, +/- Two
  • 14. "beautiful code" is not an abstract virtue beautiful code must help the programmer be happy and productive beautiful code is easy to understand
  • 15. Yukihiro Matsumoto (Ruby Creator) Brevity & no redundancy Familiarity Simplicity Flexibility Balance
  • 16.
  • 17. >>> import this, The Zen of Python Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Although practicality beats purity. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  • 18. Kent Beck (XP/agile) Passes the tests Reveals intention No duplication Fewest elements
  • 19. Clean code - Uncle Bob The only valid measurement of code quality: WTFs/minute
  • 20.
  • 21. Laziness the quality of being unwilling to work or use energy; idleness.
  • 22. Tips for lazy developers
  • 23. Tip 1. Use the right tools Optimise for development time, not execution time
  • 24. Tip 2. Be pragmatic
  • 25. Tip 3. automate all the things
  • 26. Tip 4. Fast feedback is king
  • 27. Law 5. Write beautiful code
  • 29. Lazy person "I will always choose a lazy person to do a difficult job because a lazy person will find an easy way to do it." Bill Gates
  • 30. Laziness “The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.” Larry Wall - Perl author
  • 31. Done. Now I think I can use some rest. @javier_arilos / Javier Arias Losada
  • 32. references Jeff Atwood - Development is Inherently Wicked https://blog.codinghorror.com/development-is-inherently-wicked/ Jeff Atwood - Good Programmers get off their butts https://blog.codinghorror.com/good-programmers-get-off-their-butts/ Yukihiro Matsumoto - Treating Code As an Essay https://www.safaribooksonline.com/library/view/beautiful-code/9780596510046/ch29.html Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell: http://a.co/exQvydH Bartosz Milewski - Category: The Essence of Composition: https://bartoszmilewski.com/2014/11/04/category-the-essence-of-composition/ Joe Armstrong - Why programming is difficult http://joearms.github.io/2014/02/07/why-programming-is-difficult.html Martin Fowler - Beck Design Rules https://martinfowler.com/bliki/BeckDesignRules.html Rob C. Martin - Clean Code https://www.amazon.com/dp/0132350882/ref=cm_sw_r_tw_dp_x_g-JXzbJT5GS7X
  • 33. Abstract There has been a lot of discussion during the last 50 years about the nature of programming: Is it an art like poetry? Is it craftsmanship like pottery? Is it an exact science like physics? Or a non exact science like medicine? Is it engineering like bridge building? Whatever the nature of software development is: during this time, a lot of tools and techniques have appeared to make your lazy-developer life more difficult: Coding conventions, OOP, FP, SOLID, Design Patterns, Tests, TDD, UML, Use-cases, CASE tools, Refactoring, RUP, Agile, SCRUM, Continuous Integration, Code Complexity Metrics, Emergent Architecture, DevOps, SCM... and whatnot! But, sometimes, being a lazy developer makes you do things that seemed counterintuitive, in order to pursue your main objective: WORK LESS.