“For me, the purpose of life is, at least partly, to have joy. Programmers often feel joy when they can concentrate on the creative side of programming, so Ruby is designed to make programmers happy.” - Yukihiro Matsumoto
This is a pretty famous quote from the creator of Ruby that’s often referenced as motivation for choosing a particular tool or language. I think it’s a insightful, useful approach that programmers constantly apply incorrectly.
If we look at Matz’s design approach, he’s thinking about what makes programmers happy. His chief concern is not what makes him, the language designer, happy. In essence, programmers are his customers and their needs and desires are the chief guiding principle in his design.
We take the wrong lesson away from the quote because we read “programmer happiness” (i.e. my happiness) instead of “customer happiness”.
Who are our customers and what do they care about? Our customers are often accountants, customer service reps, and business owners. They have a job to do, and practically every time they consciously think about software, it is incidental complexity. Awesome software does not make our customers happy; software that makes our customers awesome makes our customers happy1. Our customers literally do not care one single bit about the tools we use or our “clean code” except for how it will affect budget, risk, and actually getting something useful for their efforts.
I’m a firm believer that people perform better when they are happy and having fun, so the takeaway isn’t that programmer happiness doesn’t matter. However, programmers need to find more enjoyment in making our customers happy and successful and spend less time optimizing for our own happiness.
1 Kathy Sierra is the best I’ve seen at enumerating this. Her book Badass: Making Users Awesome is highly recommended.