Development team culture doesn’t come from top-down, but rather from a collective agreement.
That said, I’ve found it both handy and important to make that culture concrete by writing it down.
What follows is not only my most-recent team’s - it’s mine.
Care. Everything starts with this. We care about our work, our reputation and each other. We bring a level of care to everything we do.
Frankly: We give a shit.
Constant improvement: Nothing we do is ever perfect; this is a fact of life when it comes to development.
More so, how we work can never be perfect. There will always be ways to improve both the work we do and how we do it. And we will always keep an eye on ways to make those improvements.
Because, if we are not improving, we’re getting worse.
- Mutual respect: We are all adults here. When we have issues with another member of the team, a project, the environment or anything at all, we have open and honest discussions about them - with an eye to Item No. 2. We ask the Five Whys to get to the bottom of these issues rather than assigning blame and devolving to finger-pointing.
Transparency: We strive to be as open with each other as we can possibly be. Some sensitive and HR-related topics will of course remain private, but everything from code to strategy to even the goals and philosophy expressed here is available to each and every team member for discussion, revision or even derision.
But the key thing is that we do all this in the open. As much as possible, we keep everyone in the loop on everything we can.
Balance: It is our belief that the best thinking and ideas we have are actually in times when we’re not at work. Furthermore, our work productivity is frankly better when well-rested, recharged and energized from outside experiences.
As such, we strive to keep our work/life balance as much in balance as possible. There will come times when that balance will become off-kilter, but this will always be our goal.
A bit more about the above
I wrote the first draft of the above while at my most-recent job. I passed it around to the team, we discussed it and then it went up on a special GitHub repo that was just for team-related documents. Anyone could fork. Anyone could edit. Anyone could submit a pull request.
The next step as a manager is to back that philosophy up with action. It’s one thing to have all the pretty words and quite another to believe that philosophy - especially when you’re part of a larger organization that may not always share the same values.
I didn’t keep secrets unless I absolutely had to - or, toward the end when they directly reflected my own status.
I maintained a very liberal work from home policy - basically, if you need to, do so.
I encouraged disagreements - even if they were personally painful for me. It was more important that they happened at all. The worst thing that can happen for developer morale is to let things fester and build without release.
If you have a problem, say something.
We made sure to make time for monthly over-lunch meetings on not just team processes and postmortems, but continued learning.
I treated everybody like an adult and expected everybody to act like an adult. To the very end, no one on that team disappointed me in that regard.
Managing that team was the most rewarding part of that job and the part I will sorely miss for years to come.