Follow @RoyOsherove on Twitter

Great Coders Deserve Great Managers

I totally agree with Johanna on this one: Great coders do need great managers. I know I've often wanteddemended of my workplace to invest in me just as much as I invest in my work.
There are several points:
  • Professional developers are craftsmen, and just like any craftsmen, they need good tools to do their job. In this case good tools can be a good mouse and keyboard,  a reasonable sized screen (but two screens or a big screen is a better tool and leads to better productivity - there are facts on this one), good hardware, knowledge sources,(books, internal knowledge base, good technical team or team lead..), productivity Add-ins for Visual Studio and other things like that. So - if you're a manager and your best coder comes over and asks for a mouse that has four buttons - trust them. they. if they say that their machine is too slow for them to do debug and build efficiently, listen to them. If they ask for that add-in that helps them do that "refactoring" work you have no idea what it means, listen to them, and ask them to show it to you and explain. They are (usually) not spoiled - they are flagging you that you have a chance to improve your worker's productivity with a small investment - and generate (or save) lots of money off of that. 
  • Great coders know what to do once they have a target in sight. Learn to leave them alone and not check over their shoulder every few minutes. Just help them be productive, remove any obstacles that are in their way (they may be right when they say that they'd rather code than go to the 10th meeting today about the product..) and get out of their way.
  • Great coders need to have unlimited knowledge resources: The Internet is one - but a lot of times books and magazines are a great way to keep them in mental shape. Don't worry if books disappear every once in a while, either. Take it as a complement and purchase more. Or maybe make a library. In any case - let them learn what they need to. And let them learn it on *your* time, not their's. they are probably learning on their own time anyway. Respect their quest for knowledge - and you'll get respect and a boost of productivity and loyalty in return.
  • Great coders need respect. When they say something, listen to them. They may have a point you didn't think about. They may have sat all of last night researching that little corner of the area you're talking about and eve though they may sound a bit crazy - listen to them.
  • Spoil them. Really. Make them feel important. But them stuff. Give them a small club room to relax. They maybe spoiled but good people are really *really* hard to find.
  • Share them in decisions that affect them. either tell them exactly why some of the hard decisions were made .don't hold back - they can smell fear and lies. If you give them the truth - they will understand. or maybe they'll have a better alternative... If you can - share them in the decision making process as people who can influence the decision.
  • Let them decide how to build the damn feature you requested - unless you have a specific way you think is best. In that case - confer with them and make the design decision together.
  • Make them review each other's code. they will learn a lot and you'll benefit from better knowledge dispersed through out your team.
I bet there are more things I just can't think about right now will update as needed.
 
Update:
In my view, a great manager is also a good enough politician and will "convince" IT on the needs of the developers. in other words - he's there to do fighting for those who can' speak - his/her team.
Sometimes that won't work. As a purist I'd say - "Don't stay where they don't trust you enough to listen to your expert advice". Not too realistic - but a good point to think about when you find out there's just no way in hell that anyone's is going to spend 2$ more for each of your 10 devs to get a mouse that actually has a scroll wheel *shudder*.

attach a debugger to a service automatically at startup

Testing GUIs and customer tests using FIT