What in the heck is delightful software? If you'd asked me a week ago, I would've said it's either the code used by Santa's elves to produce candy canes or the OS on Spongebob Squarepants' cell phone. At first glance, the term is slightly ridiculous.

Think about this, though: software can be fun to make and use. The code can be well-designed, covered thoroughly by unit tests, and utterly devoid of broken windows; the codebase can actually be a treat to contribute to. The team working on the code can be upbeat and helpful. When the users spend time with the product, they might feel just a little bit of life's stress melt away, knowing that this product will do something useful for the user without making the user think. The software, in short, is a delight.
The delight doesn't come from the project itself. After all, who giggles with glee when they're thinking about a billing system? No, I think the pleasure here comes from attitudes and practices that we and our teams can adopt towards our craft. Once adopted, the mere act of creating and using software becomes both more fun and more meaningful.
That's what we're going to talk about here. We're going to talk about a scalable, fruitful, and rewarding way to build both software and a life in the software industry. Once we cover that, we will then and only then investigate who wrote the OS on Spongebob Squarepants' cell phone. (Preliminary guess: Nokia?)

I was talking to someone about this whole idea of delightful software, and he said, "Who cares?" We as developers spend potentially tens of thousands of hours building software in our lives; why wouldn't someone want that to be fun and meaningful?
Software development is too cool a career to trudge through it like a coal miner.