1) Flex time, when appropriate. If I am working on some kind of deep core system where I just code and code and code and the only person I’m interacting with is a manager, why should I be on a 9-5 schedule? If it really doesn’t matter so long as I get my shit done, let me come in at times where I can get my shit done most effectively.
2) Meeting issues. There are 3 kinds of meetings, in my mind: Meetings that are productive and important for me, meetings that are productive and important to other people, and meetings where upper management wants to whack off in public. The first kind of meeting I’ll go to gladly. The second kind of meeting I’d like to always be optional. The third kind – you know, where upper management gets up and talks about shit like the direction the company is heading – well, they can email me a powerpoint presentation… I promise, I’ll read it… Yeah… If I want to know about some big initiative the company is having, I’ll print out a letter from the CEO and read it while I’m on the crapper, ok? I don’t need to have some special ed like encounter group where we all blow smoke up each other’s asses.
3) Respect. I don’t mean people praising what I do or telling me I’m great. I mean respect like not treating me like some kind of half-functional asocial asshole because I happen to have technology skills. I really hate being treated like some kind of pet nerdling, to be brought out and questioned by the marketing people when they need the opinion of someone who, like, knows how to do math.
4) Respect. Really! Again, this is important. Just because *some* geeks are proud of their Autistic-like behavior doesn’t mean we all are. Don’t speak to me like I’m a child, and I’ll be happy.
5) Privacy. Or, rather, a lack of frequent interruptions. There’s a well known study that shows that most people can remember +/- 7 things simultaneously. Programmers frequently come in WAY on the right hand side of that particular bell curve because, one of the things we have to do is keep stuff in ready memory – highly specific, exact stuff. It isn’t like we’re writing a letter and we just need to remember the gist of something for later – we need to remember every damn bit of the thing we’re working on (at least, I do) in order to accomplish stuff.
6) Little things. The best motivator I ever got came at the end of a 3 week crunch. I was taken aside by my last manager, given an attaboy, told not to bother coming in on Friday because I would be expected to be enjoying the day off. Cost to them? 1 day’s pay for me, but they had a motivated person coming back to work on Monday.
7) Managers who can manage. A boss’s job is broken into two parts: supervising me and protecting me. Supervising means getting work to me and letting me know what’s expected on it. I take a lot of initiative, but when I am handed a task, I would like to know what I’m supposed to do, when I’m supposed to have it done by, and (if applicable) what methods I’m required to use to do it (if I don’t have a choice). Protecting me means keeping assholes like Phil in business development from swinging by and talking my ear off for a half hour in the afternoon. It means not scheduling me for meetings that are a complete and absolute waste of my time. Basically, doing all those helpful things that allow me to do what I can do.
8) Be realistic. Let’s face it – at least 10% of my time is spent on shit like reading slashdot and other such stuff – let me do it without having to fear that I’m going to lose my job because I need a mental floss break. I’m going to do it anyway, so why not let me do it without stress? Even better – FAR BETTER – let me work on something that is blue-sky stuff for 10% of my time.
That’s just me, maybe other people are different.