Have you ever heard: ”Oh yes! We have a great culture! We have great work-life balance!. We do pizza Friday’s.”
I bet you did, at least in at every other place you were having an interview. Am I right?
Can we really call that as a culture though? Is it really about having happy hour drinks and eating not-so-healthy food together?
Not to me. Let's look at a few things that will drive a good team culture.
BDD (Behavior Driven Development)
Culture is when the whole team is involved in flushing out feature requirements and gaining a common understanding for what is about to be delivered. Eliminating the risk for a potential rework needed at the end of the feature development cycle.
Culture is about developers planning their work in a way that empowers automated acceptance testing. Directly asking an SDET: “Hey, what can I do to make your life easier? Any specific accessibility label naming requests?”
Culture is whenever someone creates a pull request, they explicitly follow up on the team's messenger app with an ask to spend a good amount of time reviewing it and encourages the team to provide feedback or to propose a better solution. It’s not about your ego, it’s about checking in the best possible solution for the job. It is much easier to find problems in 10 lines of code than in 10000, when you merge your code and a bug is discovered.
And whenever PR comments are posted and updates are pushed to the branch he would repeatedly ask to code review the change.
TDD (Test Driven Development)
Culture is using Test Driven Development. Making sure a team is developing only what is needed to make tests pass and nothing else. No weird code spaghetti going that would directly impact future time wasted on tech debt resolution and refactoring. And ironically, this is always a very low priority in a “company with a great culture”.
Brown Bag Sessions
Culture is when there is a dedicated time for the whole team to gather and share knowledge about up and coming technologies and individuals to demonstrate work on POCs when it is applicable to the line of business. But it should not stop on the tooling level. Team members should also discuss better code development patterns, share discoveries about great online resources etc.
Culture is when team members discuss ideas and actively use whiteboard to outline solution models. I'm sure you've noticed it on your own, whenever you write about a concept or draw a model on a piece of paper it is a tremendous difference compared to just thinking about it, both in terms of depth of details and clarity visualizing it. You can come out of a foggy understanding and make it much more granular.
Culture is when a team is rigorously follow a habbit of hosting retrospective meetings. It's when an entire team gather in the same room and each induvidual member provids his honest feedback about previous development cycle with a focus on what went well, what did not go well. And the key here is not to cover these as fast as possible and move on but to come up with action items and the game plan. And during next retrospective meetings to check on the status for these items, course correct if needed.
Culture is when a company is actively encouraging employees to attend multiple conferences every year and provides a budget for that. The idea behind this is to get a gut check of where the company is compared to where the industry is going, facilitate peer networking and laydown foundation for possible bussines collaboration with other companies.
So as we see, culture is about the process. It is about creating an environment where individuals are happy to come back to work because all of processes are making sense and geared towards making a day-to-day life easier and fun. Fun because we like what we do, not because we found a way to forget about what we do. And if you don't like what you do...well, that's a topic for a different blog post.
Written for liatrio.com
Written for liatrio.com