Culture is such a huge impact on your day-to-day work life, even if you don't notice it. Have you ever had a job where you didn't like your co-workers? Has your employer ever gotten upset that you somehow got sick and needed to take some time off? Have you ever felt like you had to work super hard to pick up the slack of some other co-workers? Those are some examples of a bad workplace culture.
I feel like this is a great topic to write about today because, I'm under the weather and had to take a sick day. I simply walked up to my team lead after lunch and said -
"Hey man, I'm not feeling very well. I'm going to take the rest of the day off."
There are multiple ways this conversation could have went. Here's the most common response -
"Aw man, we have so much work to do. Are you sure you're not feeling well enough to finish the day out?"
I'm sure we've all worked at a job where they generally don't trust you when it comes to illness. Or car troubles.. Or anything really. I've found this to be a bigger issue when working somewhere like fast food, or retail. Honestly, I used to have trouble figuring out what culture actually was. I started just bringing it up in interview questions as something to talk about. Ultimately, it was the companies I applied to that gave me a better definition for "culture". I guess I always assumed work was work, and was meant to suck.
Disclaimer: I'm talking specifically about the software development industry but, I believe these ideas spread through other industries as well.
Here is how Merriam-Webster defines culture. The defintion that best fits this article is -
"c: the set of values, conventions, or social practices associated with a particular field, activity, or societal characteristic"
Huh, I've never heard that answer in an interview. This definition loosely encompasses what I think workplace culture should be. However, it does not denote good, or bad, culture... just culture. It's still a pretty nebulous term when it comes to a work environment. Even to the point where companies just throw out random keywords to suggest they have a good work culture.
I no longer just throw out the question - "What is the culture like here?". Most companies have a stock response for this question and you don't really get insight into they day-to-day culture. The best time to ask this question is when you're talking with the developers (particularly the developers you will be working with).
- How well does the team work together?
- Does the team practice pair programming?
- How does the company promote continuous improvement?
- Is there a mentorship program? Book club?
- How does the company handle working from home?
Lets break some of these questions down and see if any of them apply to your current situation.
This is very important. Whatever they say next will directly impact your experience with the company. You want to hear things like -
"Our teams work great with each other. Each memeber is able to lean on others to help get work done and when someone falls behind other team members are ready to help out."
You'll be around these people for a majority of your day, week, month, year, etc.. You want to be able to trust your teammates, and generally be on the same wavelength. Bonus points if the whole team gets your pop-culture references and vice-versa.
This is usually the question where you'll hear - "Eh, sometimes". While this isn't a deal breaker, it does show that the team prefers to work on problems alone or maybe not confident enough to pair with someone. Pair programming is the easiest way to get other people familiar with best practices and how you code. Also, it has been proven that having a second pair of eyes while coding helps prevent simple mistakes that could cause a LOT of wasted time, and heartbreak, in the future.
This is also the best way, in my opinion, to ramp up a new team member on the projects they will be working on. It gives them plenty of opportunities to ask questions and see the guts of the project without having any pressure put on them.
This is another huge question I ask in every interview. As developers we should want to keep learning as new technologies come out, or to help fill in deficiencies in our own repertoire. How does the company help us do that? Do they offer a development allowance? A development allowance is usually used to purchase books, online learning material, or to help offset the cost of going to a conference.
A good thing to notice is if you're not learning anymore. It's good to feel confident in your abilities and know that you can knock out stories with ease. However, if you're not staying on top of emerging tech and practices, you could be missing out new ways to do things, or new practices that make the system more maintainable (or better yet testable). It pays huge dividends to companies that can help foster continuous improvement.
This goes in the same vein as continuous improvement, but on an organizational level. Getting all of the developers bought into continuous improvement via a book club is an easy way to keep developers learning new things. That is of course, if the company allows for time to be allocated to this. The same applies to mentorship. I always take advantage of a mentorship program. I've been mentored, and have mentored, a lot in my career and I feel like it has made me a way better developer.
One easy way to know if you fully understand something is to teach it to someone else.
Oooh, this is a big one. Ultimately you can tell how much the company trusts their developers by the way they answer this question. First off, it's 2020 and a developer's job revolves around working on a computer. This lends itself to allowing said developer to work from home occasionally, or completely if you work fully remote. The best experience I've had is when my whole team worked from home each Friday. Everyone was bought into it and we still passed 99.999% of our sprints.
There will be times where you need to be home to accomodate some appointment, or house emergency. There's no reason to have to take a full day of PTO when you can easily accomplish your work while taking care of whatever you need to.
This should be a team based decision, not company based. Your team should be able to decide decisions that affect the team and how well they get their work done. Are you helping or hindering your team?
This is all well and good if you're in the process of interviewing. However, if you're noticing that the culture where you work isn't that great you can take some steps to help improve it. Or, you can start looking for other places to work. Identifying that there are problems with your culture is the first step.
One easy step to make is to start pair programming with people on your team. Factor that in to your estimates and there should be no problem. The easiest way to start is to have someone come pair with you. It's easy to be self-conscious when someone is watching you code. Embrace it. The more comfortable you are with it, the more comfortable your team will be also.
Start a book club once a week during lunch. You don't even need the company to be bought in for this one. Find a book that applies to the work your doing and get a few people involved. The hope is that it will grow over time. Lunch time is an easy way to get together and learn (just make sure you actually eat lunch also).
Lastly, be the change you want to see in your culture. Be nice, helpful, and willing to learn. Those qualities go a long way in any career.
Plant the seeds and watch them grow.