For instance, I've been trolling my usual random selection of Reddit, various blogs, and whatnot, just reading up on stuff. I find it tremendously fascinating and stimulating to read other people's accounts of their experiences, particularly in the realm of software creation. (If I had a djinn/bottle thing going on and just one wish, I'd wish for a complete postmortem analysis of every software product ever created - and enough paid vacation time to read it all. A hammock would be good, too. Oh right - one wish.)
The pattern that's emerged lately is in management. There seems to be some kind of periodic cycle that prompts the writing of a lot of blog entries about management - how to manage IT workers, how to make programmers happy, cubicles were invented by Satan, etc. Every few months or so there's a big rash of these things all over the web, and people post a lot of "yeah, I've had that moron for a boss, too" sort of comments. Naturally, since management doesn't read the Joel Reddit or some random guy's blog, they never see all these great gems of wisdom, and thusly our terrible plight goes on unhindered. (Actually, it's just you sorry bastards in that terrible plight - I finally escaped and now work in utter paradise. Hah, hah! Oh, sorry - my gloat-regulator is on the fritz again.)
Normally, I refrain from adding my own palaver to the mix (mostly because I'm not exactly some kind of highly experienced expert or anything) and just nod my head silently and revel in the fact that I don't work for a Fortune 500 dysfunction-factory. However, my pattern-sniffing turned up something interesting, so I'll break tradition and toss my tuppence into the pot.
What I've noticed is that virtually every single "Make Your Employees Happy" article comes about this close to hitting a really important point, but then chickens out and doesn't actually say it. Since I have no problem with offending people and being utterly blunt, I'll say it for everyone else:
The number one way to make IT workers happy is to give them a tire pump for their egos.
A lot of people beat around the bush, and talk in vagaries about "recognition" and "credit" and "acknowledgement." If you're like me, you have not spent tens of thousands of dollars and several years of your life being processed by some school that grants people Monkey Bureaucracy Awards - which means those words are about as meaningful to you as "formally provable regression detection methodology" is to the nice guy that mows your lawn.
So let me cut away the manager-speak for you and say it plain: programmers like to have their egos stroked, pedicured, inflated, caressed, and generally fondled in ways that some activist groups may consider highly inappropriate in the workplace. If you want your programmers to be happy - and, more importantly, to become fiercely loyal to you and your company - then fuel their pride. Feed the ego.
Few people like to admit to this. Actually, I have a confession to make: I used my readership as guinea pigs to prove this hypothesis a couple of posts ago when I talked about the "making of" documentary thing. As I postulated, nobody stepped out and said "yes I'm a megalomaniac too and I think it's cool for people to drool when they hear my name."
But it's true - about every single last one of us - and we all know it. Deep down, as much as our societally-ingrained principles try to conceal it, we all love the feeling of people admiring us and knowing what we've done.
I think programmers are especially affected by this. Most of the programmers I know enjoy programming for the joy and reward of building a system from scratch, of bending a machine to do your will - sort of like DIY car kits for guys who'd rather be covered in Cheetos dust than engine grease. It's a fundamental human urge (particularly a masculine urge) and people really get a kick out of fulfilling it.
Despite what many of us may say publically, just building it isn't quite enough - we want people to know we built it, too. Even better, we want them to use it, and be in awe of it, and prostrate themselves at our feet mumbling things like "I'm not worthy" and "damn that is a sweet game." We want to be recognized, appreciated, and adored. After investing (quite possibly) years of our lives in a project, nothing is quite as validating and enriching as having people gawk over it in sheer joy when it's finally done.
What I say is not really fashionable in Western society, I think. Modesty and quiet self-esteem are prized; getting credit for one's accomplishments is all well and good, but God help your shriveled, blackened soul if you actually want credit, you arrogant sonofabitch. Honestly, that's unfortunate, because it means we're crippling ourselves - especially in the technology world.
So... being in the spirit of management, and that sort of stuff, I'm going to leave you with an "Action Item" that you can toy with. If you're a manager, try enacting this policy with your team and see how it works. If you're a mere grunt, try explaining The Internet to your boss and link him to this post so he can try this policy with you. If you're a braindead vegetable who lives in a jar, just post this to Reddit or something so other people can benefit.
Policy: credit and acknowledge people for their accomplishments and the participation they have in your project. Be sure your praise fits their actual deeds; if you're too over the top, people will be able to tell that you're a fake, and they will hate you for it. On the flip side, if you leave out something important that someone has done, you can actually make them feel worse. To do this right, you have to be deeply familiar with each of your team members and their roles within the project - and if you're not already there, you'll get plenty of benefit by demonstrating that you care enough about your workers to get to that point.
Now, go forth and make your programmers happy. Oh, and give us free donuts and coffee, too.