Dealing with customers requires the same type of communications.
- When planning a project, share details and be transparent. However, don't allow your project to be micromanaged by your customer (collaborate and compromise, however - recognize you are the domain expert for the technology).
- There are times when you need to make hard decisions, and there is a customer impact. Don't make short-sighted decisions... know the difference between when you MUST impact your customer to protect them from an immediate threat or imminent failure vs. when you can work around their needs and requirements.
- When something occurs that impacts your customers, then be transparent. It doesn't necessarily mean kicking ass and taking names... pointing fingers... or throwing the Junior Programmer under the bus for a first time mistake. It's accepting responsibility for the team, and providing detailed follow-up that includes details on the incident (a.k.a. and incident report).
- The report should detail the basics...
- Who - was impacted?
- What - was the impact to your customers?
- When - was the impact, and the timeline for service restoration?
- Where - which locations / populations were affected?
- Why - did this happen?
- How - did your recover, and how are you going to prevent this from recurring in the future?
- Look for opportunities to improve your processes and prevent future failures from occurring for the similar circumstances (called Lessons Learned). This can include process changes, additional testing, monitoring, or other improvements that could reduce the likelihood of happening, or improve the response time for recovery.
- If you have internal issues to address, then address them objectively with education, employee development, policy, and process. Communicate this to your customers, remember that sometimes even measured and mitigated risk still result in a failure or process breakdown. Mitigated doesn't mean eliminated.
- There are times when you may need to take personnel actions... and when you do... for the respect of the individual, team, and yourself... follow policy, be discreet, and where possible, look at it as a learning opportunity. If there are too many learning opportunities... maybe you've not properly mitigating risk, have policy problems, or quite possibly, you may not have hired the right person for the position.
I handled the issue internally, it was a learning opportunity for a solid developer, and my response gained respect from the executive... since it demonstrated a sense of departmental ownership. It also gained respect from the developer, since he worked for someone that didn't take his credit and pass blame. (Yeah, I hate to see those people in any organization too!) Give credit where credit is due, take responsibility for properly mitigated risk (not the same as a blatant disregard for rules - that's a train wreck), and work to continually develop your team... and... get their feedback so you can continue to improve your skills as well.