I was talking to a friend about how he’s unhappy working at his company. Why, I asked? They apparently hired a new junior developer who wasn’t a strong coder. What bothered my friend was how the senior developers started making jokes about the new hire’s code. Tough shit, right? Growing a thick skin to all sorts of criticism is part of learning to be better, right? Well, no. And here’s why in a neat little cliche: a chain is only as strong as its weakest link. This isn’t about not being able to take a joke and toughening up and learning to do better; it’s about an attitude that’s sadly too pervasive throughout the tech and development workspace. An attitude that needs to change if the tech industry is going to really mature.
This “fuck you, I’m better than you” rockstar attitude is pervasive because of the misconception that to develop a great product you have to have rockstar coders on your team to do all the heavy lifting. That may have been the case at one point, in the industry’s infancy, but we’re way beyond that. Nowadays, I’ll take a solid team over a team with two rockstars on it because, nine out of ten times, the former will deliver a more solid, stable, and overall better product. The solution to this problem is two-fold: recognize it exists and address it through company culture.
Recognizing the problem: that’s not hard; everyone's aware of it. It’s just that not everyone wants to admit it. But a cursory look at any industry that has had to grow and adapt in order to continue to deliver innovation will readily reveal that innovation, in the later stages of industry, comes from teams working together. End of story. There’s a lot more to be said on the why and how of this topic, and I want to tackle it next month, so, for now, let’s leave it at that and go on the more important point of how to correct for the problem.
And the answer is company culture. Many companies these days pride themselves and readily show off just how great their culture is and all they offer their employees. And that’s great because it shows that companies recognize that valuable talent is in demand and they are taking steps to retain it. But I’m going to argue that “culture” is not having scooters in the office, beer Mondays and ping-pong, and having Kanye playing your launch party. The companies that value these things over craftsmanship are the same companies that are attracting those self-righteous, rude employees who won’t help you be a better coder anyway.
Culture is an empathy for your co-workers and a dedication to being better in every way.
If you’re fortunate enough to work for the kind of company that hires for these traits, the results will be amazing. It begins with the hiring process and it continues with what you’ll tolerate as acceptable behaviour in your company. Bad behaviour - and by this I am directly looking at the elitist, rockstar coder who slights others to shine light on themselves, among other things - is just as bad as someone who can’t code well. Worse, in fact: weak coders can be taught good coding practices and integrated into the team much more easily than it is to correct someone’s negative behaviour that’s causing a toxic work environment. Bad code is debuggable; bad attitudes are infectious. There’s a tendency to forget, as you master something, that you were once a beginner, totally lost, as well. Imagine if you were senior coder and took your time to help a new hire with the hope that they will become a better coder than yourself because they were given better resources you were when starting out. You only stand to gain from that process whether you’re the mentor, the mentee(?), the company or the product.
So how can a company can actively choose to evolve its culture in a specific direction? By, for example, having one on one’s with employees and ensuring that managers understand that employees can come to them about anything. Making personality and fit an important part of the interview process can also really help define a company’s culture and this has been happening more and more which is really pleasing to see. You can make sure to have regular outings as a group, have fun, hang out and get to know one another - a well bonded group will not only make for a really easygoing, pleasurable work environment, but also produce better work. No tolerance of people being assholes: joking is fine and a dynamic you definitely want to encourage, but there’s a fine line between horsing around or teasing and being outright rude and dismissive. The latter should not be tolerated at any level of the company. Group code reviews are also really important in this respect: even the best coders have code that needs fixing. It’s a humbling experience for everyone and, more importantly, promotes an environment where learning is actively encouraged and mistakes or miss-steps are not stress inducing, “what if I get fired" moments but opportunities to get better. The company will benefit many-fold from this. Finally, mentors: assign people to help others. While there’s a fine line between asking a question because you’re too lazy to Google it and asking after you can’t find an answer, mentorship promotes phenomenal guidance for an eager to learn coder and fosters healthy relations, a easy way to reinforce institutional practices without having to stress them artificially, and produces better coders.
The fear towards making these sorts of changes comes from their nature: they provide long-term, intangible benefits to a company. It’s hard to measure their impact on success and even harder to justify the extra time and effort involved, especially when you’re a cash-strapped start-up! And there’s the fear that you won’t find those “rockstars” in this sort of environment. But that is simply not true. And in this environment you’ll come to a sudden and surprising realization: that most rockstars are in fact nice people and confident. The ones who act high and mighty are the ones that are actually insecure about their skills and, for as much as they contribute to the team through their code, they also hold back the team through those very same intangibles.