The impact of company culture is reflected in achievement of goals, productivity levels and employee satisfaction. Basically, it can make or break a business.
Yet company culture is the one thing that many aspiring programmers overlook in their job search. Unfortunately, they find out too late after accepting a job that they are working for a company with a very poor culture. That overlook can have a negative impact on one’s career as a software engineer.
To better explain the impact of company culture, let me give your first-hand experiences that I have had in my career. The examples are taken from two different companies.
Working Hours
The 9–5, 40-hour work week is a reflection of how work was performed back in the industrial revolution. During this time workers punched a clock to measure time worked, and management used that as a gauge of productivity.
Today’s software engineers are smart creatives who prefer to work in an autonomous environment in order to create their best work. Unfortunately, management at some companies still cling to hours worked as a barometer of productivity.
Here are examples of how management treated work hours at two different companies.
First Company
This company provided flexibility to employees in terms of their starting and ending hours. The only requirement was that every member of the team was available during the same 6-hour window during the day.
This provided flexibility to employees to schedule doctor visits, receive home deliveries, tend to home and car repairs, etc.
Second Company
The CTO sent out an email asking every programmer to declare what time they would arrive at work every day and what time they would leave. Later we received another email stating that people were not adhering to their stated time for arrival and departure. Shortly thereafter, upper management was sitting out front as people arrive at work and probably noting the time of arrival.
Normally I arrive at work around 8:00 a.m. One morning I arrived at 8:30AM and upper management made comment that I was late for work. Never mind that there were about 20 people that worked in the same room, and I was the second programmer to arrive at work that day.
How to avoid
Avoid companies that measure your success by when you come and leave the office and instead work for companies that measure your success by what goals have been met. When interviewing at companies you can ask if they have core work hours or standardized hours.
Companies with core work hours require every member of the team to be available during those hours. Employees can set their start and end time based on these core hours. For example, if core work hours are 10–4, one can start work at 8:00 a.m. and leave at 4:00 p.m., or one can start work at 10:00 a.m. and leave at 6:00 p.m.
Encourage or Discourage Employees Taking Action?
Following the Prato Principle, the overwhelming majority of employees will treat work as something they do 9:00–5:00. These employees will not make an effort to learn new skills or technology on their own. The remaining 20% of employees will invest their time and energy in learning and improving their knowledge. Companies can decide to foster employee development or that can neglect it.
Here are examples of how management treated employees that speak at major technology conferences.
First company
I was selected to speak at my very first technology conference. The conference was Connect.Tech which is the Southeast’s premier web and mobile development conference.
Within 48 hours of the announcement that I would be speaking, our Director purchased tickets for every developer in the department to attend the conference. He wanted to support me because I had invested my personal time and effort to master a skill that I would be speaking on at the conference.
Later after being accepted to speak at my second technology conference, the Director pointed out that I was speaking again and provided me with a monetary reward for my efforts.
Second Company
This company was in the process of rewriting their website from PHP to AngularJS. I was selected to speak at ngConf which is the world’s largest conference on AngularJS.
To speak at this four-day conference, the company required me to take two days of vacation, and I was given two days off. The conference covered my airfare and hotel. I paid for my own food and taxis.
Another programmer decided to attend the conference at last minute and the company paid for his airfare, conference ticket, hotel, taxis and food. The company gave this guy four days off to attend the conference.
I asked if the company would cover my food as well, and I was told that I was being self-centered and just wanted to take from the company and not give back because I was out of the office for four days.
How to Avoid
As you can tell the company culture in these two companies is drastically different. When you look for a job as a Software Engineer, make sure you do your research and decide if the company(s) invest in employee development or not. Do they encourage employees who will invest their time in improving their skills, or do they discourage this?
Work Processes and Quality Control
Quality Assurance is part of the software development lifecycle. QA ensures that there are no bugs in the code. The longer a bug goes undetected, the costlier it is to fix.
Git is the primary tool programmers use for version control. Programmers on a team have to have a strategy that will control code that is used in the creation of production-ready code.
Here are examples of the work environment when companies invest in work processes and when they do not.
First Company
Every programming team had a QA person. This person was responsible for checking the programmers’ code and verifying that the code met the acceptance criteria for the story. If the QA engineer had concerns with the quality of the code, it was the programmer’s responsibility to redo the code until it met standards.
The programmers used a VCS workflow of creating branches that reflected the number assigned to the story. Once they completed their code, they were required to merge in the master branch into their code to check if there were any merge conflicts. Once that was done, they submitted their code to the master branch.
Before the end of the sprint, the entire team would spend a day verifying that the code on the master branch met the acceptance criteria for every story. Programmers were required to verify the work completed by others and were not allowed to test their own code.
Second Company
This company did not have a single QA person on staff. They also did not implement a git workflow strategy. As a result, programmers were responsible for testing their own code in relation to the story but not in relation to the potential impact it might have on another programmer’s code.
A release was pushed to production that resulted in the website going down. Luckily the code was rolled back within 7 minutes. For the following week, a team lead and several other programmers worked to find a solution for what caused the website outage. For several nights that week, they worked until 10:30 p.m. trying to fix the problem.
After resolving the problem, management sent out an email praising the team leader and the hours he worked in solving the problem. The email concluded that we should all be willing to work the same number of hours to complete work.
Instead of addressing the root problem of having a lack of QA resources and the lack of an effective VCS strategy, the management decided to praise someone for the side effect.
How to avoid
When interviewing with a company, you will probably speak to more than one developer on the team. Ask them if the company utilizes an effective VCS strategy and, if so, ask them to explain what it is. It is important to know if all programmers provide a consistent answer to this question.
Another question to ask is how long between when an error is reported with production code and that error is fixed?
Work-Life Balance and Vacation Time
The Business Dictionary defines work-life balance as “a comfortable state of equilibrium achieved between an employee’s primary priorities of their employment position and their private lifestyle.”
Programmers should seek a job that does not demand so much of our time and energy that we miss our children’s birthday or fail to take a vacation.
Here are examples of how management treated work-life balance and vacation.
First Company
This company provided three weeks of vacation. Employees could take vacation time with as little as a one day notice. There was no problem with having more than one employee out on vacation at the same time.
If employees did not take their allotted vacation time, it would not roll over to the next year. Between Thanksgiving and Christmas, the company sometime worked with partial development teams because programmers were sent home to make sure they utilized all of their vacation time.
Second Company
An employee, along with four other couples, scheduled a trip to Hawaii where they had rented a compound on the beach for a week. Shortly before this employee was scheduled to leave for vacation, he was asked to reschedule the vacation. The reason given was that the company had an upcoming deadline, and they were behind in completing the code.
When I requested time for vacation, my team leader asked me to make sure that our deadlines would not be negatively impacted by my time off. In other words, the company expected me to schedule vacation around whether or not deadlines would be met at work.
How to Avoid
Ask what benefits the company provides in terms of vacation and holiday time. It is important to know if you are able to take time off without putting in notice several days or weeks in advance.
During your interview, you can ask every programmer what percentage of their allotted vacation time they took for every year they have worked at the company.
Conclusion
Company culture is a reflection of leadership and the work environment. As a new programmer, working for a company with a positive company culture can catapult your career. If you end up in a company with a negative company culture it can impact your ability to learn and grow as a new software developer.