A corollary question is: how does one become a non-crappy boss, particularly of programmers? In my 20+ years of programming for a living, I can count the number of really good managers on, well, on my thumbs. And they couldn't be more different -- one was a University bureaucrat with a history as a radio operator in the Army; and the other was a peer engineer who was promoted over me at a big company.
Is it even possible to manage programmers in a way that doesn't cause one party to develop bleeding ulcers?