A few jobs ago, I had the opportunity to work on a five year old legacy codebase. This codebase was a first generation application and had become a nightmare. The culture at the company was tumultuous. Rock star developers ran around like the tyrannosaurus rex, laying claim to their territory by marking their scent. These cretaceous-period developers were matched by pterodactyl leaders, swooping in and harassing the peasants, fighting for their territory. As I dug through the sediment of the PHP (prehistoric programming) I could see their fossils everywhere. I could see political decisions in the code, where there were fights for territory and where the scavengers fed in the dark. I could see who really ran the show, and who was just a lot of talk. In short, through an archeological analysis of their application I discovered something: the important thing in the codebase wasn’t the code, it was the people.
These seem like common knowledge platitudes at first - “People write your code”, “we believe in the people”, yada yada. What I have found is that if I think about the tech (code, environments, etc.) as an extension of the employees in the workplace, the application began to make more sense. I could see why the technology failed frequently and why everyone was bedraggled. The way I looked at it, the application was about 70% people, 30% tech.
People express their creativity through their work. Their output is an extension of them and their personalities. My previous coworkers were capable and communicated well. When everyone was getting along and felt well, the day to day operations went smoothly. When there was friction, the whole organization began to wobble. The technology became secondary. It became obvious who was able to handle responsibility, who was a clear thinker, who was over stretched, and who was a land-grabber. The people were the ultimate factor in everything, the code was just a byproduct of the individuals and their interactions.
What I would like to present here is a different way of thinking about building your organization and applications. Who you hire matters beyond their tech talent and whether they have the maturity to perform in your organization. Like choosing a business partner, hiring is like moving in with a spouse. You are choosing people who will be embedded within your application and responsible for much of your life. I use the term application because they will not only be joining your organization, they will be joining the core of your operational engine. They need have values that coincide with your company values. This post covers unseen baggage people can bring to a role, and therefore into your business operations. It’s not about hiring the best person for the job, but having the right person for the right role.
In this spirit, I’d like you to answer some questions about your employees.
Are they skilled?
This is the minimum level of employment. Presumably if they did not have the skill, they would never have made it in the door. I’ve seen many organizations have a strong tolerance for unskilled workers in skilled roles. However it happened, once this person is in the organization they often become embedded through either HR policies, tribal knowledge, or leadership’s lack of ability to have an uncomfortable conversation. Once embedded these people can bring a department to a standstill.
Are they replaceable?
Sadly, they’re not. I make the argument that people are part of the application, not merely a component. Components can be replaced. People are far more complicated, particularly in creative roles. The longer an employee is in the organization, the deeper they will become embedded. Letting someone go is difficult, but it is easier and less disruptive if it is done early.
Do they get along well with others?
If they cannot get along with others at work, or cannot go with they flow when they don't gain consensus, then you are introducing a sort of “human debt." Although very different from technical debt, it will similarly have to be paid off. This debt can come in many forms from brow beating to anger issues, burn out, sexual harassment, etc. Company and culture fit must be evaluated continuously and issues must be addressed quickly.
Do they produce quality results?
This is where most hiring managers decide to make a sacrifice, thinking that a highly skilled individual is worth the amount of despair they bring with them. The health of the organization and application must come first. A person who can get the job done and is reliable is much more valuable than a "rockstar" who can produce sublime solutions, but upsets others.
Are they able to handle the workload?
Just like on servers, this is a load and scale problem. Unlike servers, people show different signs of being overworked. Overworking leads to burn out and outages in both machines and people, but people are far more valuable than the servers. If we don’t let our servers go over capacity, why aren't we doing the same for our people?
Are they growing?
An employee that is growing is a healthy employee. We do not learn well under adverse stress, our fight or flight reaction can shut down our ability to see the larger picture and preventing us from growing to a challenge. A growing employee who is challenged appropriately is likely to be excited and curious.
Are they happy to be there?
The more gratitude employees demonstrate without prompting, the better. This is how you can measure the health of the system. Be worthy of that gratitude. That means practicing humility and servant leadership. Your job as a leader is to keep the organization moving forward in tight alignment. Long gone are stereotypes of foremen commanding rank and file from the catwalks like overlords. Now we realize that people make the machine, the application, the product, and the organization. How we treat our employees matter. This is not just about employee happiness, it is about getting the best return from your investment in your employees.
Your application is made of people. If people weren’t continuously on hand to work and maintain your application, it would sink. People are the mechanisms, the technology behind the tech, keeping it up and running. The technology is only an extension of the people and the people need to be understood at a fundamental level as an integral part of the application. By better understanding your employees and their strengths and weaknesses, you can better understand your application and development process.