Let’s start by asking the simple question. Why do you hire people to your organization?
I guess you need help to solve complex problems that you can’t solve alone. You probably would like to hire people for things you don’t have time and the things that you don’t like/want to do.
When you have more than yourself to do work, and you have responsibility of the person to do the work, you become the manager.
As managers, we try to keep people happy and productive in the organizations. We try to match the company’s interest with the interest of employees. If we have 100% match, then everybody works to achieve the same goals. If not, we try to introduce rules & processes to control the environment.
What if I tell you there are only 5 things you can actually control in a company in an organization, like the finger of the hand.
These are scope, quality, technology, resources, time.
I have been trying to understand what makes people happy in an organization for a long time. This is what I found out. It is not the money, it is not the recognition. It is not the challenges. It is part of all and none of it. It is the alignment of expectations. An honest communication and trust to each other make the people happy. Alignment with management, alignment of expectations with colleagues.
What if we align the management with the happiness of people? Wouldn’t be the best place to work. If we take the hand of management and align the expectations. We run the company with the true power of a handshake. This is how we used to do things thousands of years ago.
To align the fingers, we need to understand each of the 5 elements well. We need to communicate it well. The best way to discover unknowns is to start asking questions. What is the scope? Why is the scope important? What is the problem we are solving? Why do we need to solve this problem? Who is going to use it? Can you see? We start building requirements.
Why do we fail?
I have been working in software development for over 15 years. I have been running retrospectives, trying to understand how we can get better each time. Why do we fail? If you look at the patterns of why we fail, there are 3 things you will see. First one, we often lack information. We didn’t know better. We haven’t asked the right questions. Second, we lack competency, we lacked the skills to solve the problem. The problems were harder to solve than we think. Third, things didn’t happen in the order. We lacked synchronization. The rhythm was not there. Instead of getting better we try to push the blame to others. Denial, delusion, and blame is an explanation of bullshit. You often hear these three together, but we often choose to ignore it. It is difficult for software engineers to deal with emotional bullshit. It is not practical, you can’t measure it. Often it is random, but it is easy. We don’t like to fail, accepting failure is difficult. I often work with lead software engineers. I try to understand what is their biggest fear, so we can take it out of the way. Once we talk about it, it’s become so easy to talk about real problems. Engineers’ biggest fear is to be seen as incompetent. This is normal, our biggest asset is our competency. This is the same in every profession. We get hired for our skills. It deludes us, with more experience and lots of projects under our belt, it vanishes.