Be Wary of High Performers – Odds are far better than good that your high performers are achieving what appears to be high levels of productivity by building technical debt into the application by taking shortcuts whether intentionally or unintentionally.
Encourage Continual Product Improvement – Improve the database schema even if it hurts in the short term. Delete old and unused code…..continual improvement gives them autonomy and a strong sense of making valuable contributions on their own terms. Don’t underestimate the morale boost.
Encourage Code Ownership. – Management likes to reduce risk by treating developers as interchangeable… all developers being expected to be familiar with all areas of the code. That minimizes the pain when any individual developer leaves the team or the company. This is false economy. Your employees like working for you — right? — which means turnover should be low. …giving developers primary ownership of portions of the code base and not allowing other developers to change that code without approval from the primary owner. This results in higher productivity since any given developer is more likely to be familiar with the code in which they will typically be working.
Recognize Leaders – Getting back into the zone takes time. Expect your leaders to take more time to complete their projects — after all, they’re doing two jobs.
Watch Out for Misleading Metrics – Software developers aren’t stupid and some of them will quickly learn how to game the system if counterproductive incentives are visible.
Limit Interruptions – Encourage your team to prefer communication in roughly the following order so that interruptions are minimized: e-mail, chat room (if your team isn’t using a chat room yet, they should be), instant message, phone call/dropping by in person.
Prefer Private Workspaces – Audible and visual distractions should be minimized which means at a minimum each developer should have a cubicle with high cube walls and a small entrance
Encourage Experimentation – Software developers are not devoid of good ideas and have the in-the-trenches experience to have good instincts about how applications may be improved and extended.
Let Employees Leave – Forcing employees to remain in your group can never lead anywhere good. It’ll impact their morale which impacts the morale of the entire group. It’s also likely they’ll become less effective and in extreme circumstances simply leave the company.
Never Turn Down Small Requests – Unless they have a constant stream of requests that never seems to end you should never say no with only one exception: if you believe the entire team will then want the same small request and it really will impact the budget too much. … When compared to their salary and benefits these little requests go a long way toward keeping morale and thus productivity high and they cost peanuts.
Abolish Yearly and Bi-Yearly Performance Reviews – Your employees should never wait six to twelve months to discover what you feel they’ve excelled at and what they need to work on. Communication between managers and employees should be like a river that never stops flowing.
You’re Not Better than Your Employees – Just because your employees report to you doesn’t imply you’re somehow smarter or better.
Don’t Discount Younger or Older Developers
Don’t have Stupid Dress Codes