Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Why do lazy developers write beautiful code?

477 views

Published on

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.

Published in: Technology
  • Be the first to comment

Why do lazy developers write beautiful code?

  1. 1. Why do lazy developers write beautiful code?
  2. 2. Why lazy developers write beautiful code?
  3. 3. Who is this guy? @javier_arilos / Javier Arias Losada
  4. 4. Programming as building construction CASE - Computer-Aided Software Engineering
  5. 5. Software development is a wicked problem "wicked": a problem whose solution can be defined only by solving it*.
  6. 6. Engineering essence: elegant efficiency best engineering is born out of an imperative to use the minimum amount of materials
  7. 7. Is software development like science?
  8. 8. Art the expression or application of human creative skill and imagination producing works to be appreciated primarily for their beauty
  9. 9. Programming and painting
  10. 10. How Picasso paints a woman https://youtu.be/V1UmPiUlFis
  11. 11. Programming and painting ● sketching ● gradual refinement
  12. 12. Beauty a combination of qualities, such as shape, colour, or form, that pleases the aesthetic senses, especially the sight.
  13. 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. 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. 15. Yukihiro Matsumoto (Ruby Creator) Brevity & no redundancy Familiarity Simplicity Flexibility Balance
  16. 16. >>> 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!
  17. 17. Kent Beck (XP/agile) Passes the tests Reveals intention No duplication Fewest elements
  18. 18. Clean code - Uncle Bob The only valid measurement of code quality: WTFs/minute
  19. 19. Laziness the quality of being unwilling to work or use energy; idleness.
  20. 20. Tips for lazy developers
  21. 21. Tip 1. Use the right tools Optimise for development time, not execution time
  22. 22. Tip 2. Be pragmatic
  23. 23. Tip 3. automate all the things
  24. 24. Tip 4. Fast feedback is king
  25. 25. Law 5. Write beautiful code
  26. 26. Inspired by...
  27. 27. 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
  28. 28. 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
  29. 29. Done. Now I think I can use some rest. @javier_arilos / Javier Arias Losada
  30. 30. 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
  31. 31. 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.

×