This blog post made its way through the Twitterverse recently. I tend to save longer items for later reading, and I just now got around to this, thankfully.
I've tried before to articulate what programming and software mean to me, but I've never come close to putting it as well as it is put here. Maybe now I can just forward this link on to those people who really don't get what it is I do all day.
Lucky To Be A Programmer
Under the right conditions, writing software is so intensely pleasurable it should be illegal. Few things are better than spending time in a creative haze, consumed by ideas, watching your work come to life, going to bed eager to wake up quickly and go try things out. The point is that programming is an intense creative pleasure, a perfect mixture of puzzles, writing, and craftsmanship.
A non-math sort of beauty also exists in code, analogous to eloquence in discourse. It’s present in well-factored software that does a lot with little code, in short and crisp methods, in well-done architectures.
...Now for craftsmanship. In a sense software is abstract - where does program behavior exist but in our minds? Yet we call it building software for a reason. Programs are shaped feature by feature, architectures start out as scaffolds and grow, user interfaces come together, bugs are fixed and hotspots are optimized to make things run fast. Software provides a deeply satisfying sense of craft. We build stuff out of pure ideas and then get to watch it working to solve real problems and make people a little better off. Or far better off, as the case may be.