September 13, 2021
The Importance of Company Culture

TLDR;If your company has rules and guidelines in place which encourage flexibility the better off everyone in the company will be.
Variety is the spice of life, but consistency makes for the best code. I often find myself trying to strike a balance between being a better teammate and writing better code. That’s not necessarily a bad thing. We all have differences with our co-workers, but as professionals, we find ways to work through them.
At the time of writing we’re about a year and a half into the Covid-19 pandemic, and it’s been… a less than pleasant time for all of us. Tensions are high and people just don’t want to put in the effort to be cordial with those they disagree with, which I completely understand. But even putting politics aside, many of us are letting the stress of the last year and half affect our working relationships.
An ex-coworker once told me “the best thing you can be is flexible”, not smart, not clever. Flexible.
Why? It almost seems counterintuitive. Why would you “flex” to meet someone who wants to write “worse code”? Well… (HOT TAKES INCOMING)
No Code is Perfect
No code is perfect, and it’s better to work as a unit with your team than it is to write what your current self believes might be better code. You don’t know until you try it.
“Wow, that’s some good code I wrote 2 years ago!”
- Absolutely no one ever
Am I suggesting that you should let your teammates walk all over you? No, of course not. But you need to way the outcomes of your actions. The name of a single variable should not be the fight you attach your reputation to.
Flexibility Begets Cohesion
The better you are able to reconcile your particular coding style with your coworkers, the more consistent your team’s code will be. And the only thing better than consistent code, is consistently consistent code… Which you will write…. if you are flexible.
Company Culture
So what does company culture have to do with this? Well flexibility is compounding, meaning the more people in your company try to be accommodating to others, the harder it is for someone to mess that up. If your company has rules and guidelines in place which encourage flexibility the better off everyone in the company will be.
So what “rules and guidelines” will encourage flexibility?
1. Pair or Mob Programming
This one’s obvious, so I won’t spend too much time explaining. Basically, if you’re forced to work directly on the code with others, instead of passively (like in a code-review) you’re going to have to work together. Speaking with someone face to face (or at least in real time) decreases the likelihood of people acting “toxic” for lack of a better word.
2. Increase Inner-sourcing & Decrease Code-ownership
“Inner-source” is a term I’ve recently become familiar with, and I think it’s a succinct way of describing what I’m talking about. Basically, it’s like “open-source”, but just within the company. People naturally get defensive when they feel like they “own” the code, so by removing the sense of code “ownership”, you can remove a lot of that defensiveness.
The main counter-argument to inner-sourcing is that it can lead to inconsistent code if no one is at the helm calling the shots. This is a problem open-sourcing has as well and can easily be compensated for. There are lots of ways to ensure consistency even without code ownership.
There are a ton of articles on how to do this, but I really like this digital ocean tutorial.
3. Allow for Natural Selection
Team bonding activities are great, but if I’m being honest, they don’t really do all that much to foster collaboration. Either your team already gets along and you’re basically just slacking off, or they don’t and playing ping-pong with Gerald isn’t going to make me forgive the fact that he called me an idiot earlier for defending PHP. But you know what will fix that? Letting Gerald go. This sounds harsh, but there are those who just simply will not or cannot play nicely with others. A company needs to have processes in place to drop these people from the roster, because the fact of the matter is if Gerald sticks around, the rest of the team will leave and now you’ve incentivized exactly the wrong behavior. Soon you’ll have a whole company full of “Gerald"s.
Side Note: I sincerely apologize if you’re reading this and your name is Gerald. I’m sure you’re a good person, you clearly have great taste in blogs. I just needed a name that didn’t belong to anyone I’ve previously worked with.
Conclusion
This is probably the single most important thing you can do as a company to set your employees up for success. Yet, I seem to see so many companies get this so wrong. Company culture is the silent killer; you won’t see the consequences of your bad decisions right away, which can make them easy to ignore when they do eventually arise.
Even if you’re not in charge of the company and don’t have the power to make any of the changes above a reality at your company, you can still improve the culture around you and your team. Remember, the best thing you can be is flexible.