Over the last few months I've been trying to integrate Pyramid, ZODB, relational databases, a payment gateway, a bulk email system, and a plethora of other bits of Python code big and small. Some of the time I've been doing this for customers, other times I've been doing it for open source projects. And I have to admit to you in all cases, after a while, I start to wonder just what in the hell I'm doing, and I daydream about maybe becoming a veterinarian.
That's because it's so damn hard to make systems do what you want them to do. Trying to integrate two or three things together to produce some outcome is always difficult. You have to deal with bad docs, downed servers, bugs, and deployment issues. You have to cope with version control, merging your changes with other people. And you often have to communicate with many people and explain yourself and the system to make sure it all works out ok. It's a real pain in the ass most of the time.
That's why the best software is really, really boring. It has docs that tell you what you need to know on a number of levels: an API guide, and integration examples. It has a mailing list with knowledgeable people who are willing to answer your questions. It has a nice website that doesn't make you want to gouge your eyes out. And that's it!
Pyramid and other Python web frameworks are useful and reliable; and honestly pretty dull. You configure a web framework to answer a request on a set of URLs; your job is to make all of the URLs do the right thing. The best systems will stay out of your way while you get this job done. The worst systems will put you into a rage by injecting themselves at every turn while they make you care about irrelevant things when you're just trying to get things done or by simply not working at all. Reasonable people can disagree about where the line is between useful and annoying, but I am thankful for very boring software.
I encourage everyone to celebrate boring software. Software itself should be dull as dirt. The excitement should come from creating boring software.
How do you create boring software? I'm not totally sure, but here's what seems to work for me:
If you do these things, it will be very difficult to avoid being happy, healthy and wealthy in your job, even if your software is terribly dull. Here's to a great 2013 for Python and web technologies!