I try not to get very techie in my posts, keeping my Computer Science background in the hood. The intent is to talk about management issues that transcend a specific domain.
But sometimes the temptation to get out of the hood gets … well – too tempting. Specially, when you can use a good analogy to explain something important. For example, how can the compiler tool help us model where we go wrong in managing people.
A compiler is a key ingredient of the life of a software developer. It translates the code that software programmers write into a language that the computer understands. When you see a programmer furiously typing away on his screen telling you he is writing code (to make the world a better place), in reality what he is writing is really for himself, his team and manager only. He is writing down what he thinks the software should do in a prescribed format and structure – it’s just standard English with a very strict grammar. However, the computer that needs to make that software available to the world, lives in its own complex world with its own language and rules. There is a need to translate what the programmer writes into a language that the computer understands. That is what a compiler does. When asked by the programmer, it takes all the fancy writings by the programmer and creates the instructions that the computer can work with. It’s like hiring a language interpreter when you visit the Amazon tribes. The fancy English you speak is unfathomable to the half-clad and crocodile hunting tribesman. The language interpreter acts like a compiler, taking what you say and other data like your facial expressions and body language, and translates into what the tribesman can understand. Hopefully, you and the tribesman can eat the crocodile together rather than they together having you for dinner.
Well, the idea is not to teach you about compilers but why it is relevant to our topic – why smart people fail miserably when they move from a technical role to one involving dealing with people.
The thing about compiler is that despite being complex, it is straight-forward once you figure it out. It does not have a heart. It does not have emotions. It does not have mood swings. It behaves the same way today as it did yesterday, and the day before. All you need to do is to work out its rules, operating details and all the features and options it provides. You know that once you learn and practice enough, the compiler will do exactly as you ask it to do and exactly as it is supposed to do. It’s a heartless robot that works flawlessly with proper instructors. If you cry, beg, sing a song for it or hug it, it would not make it do anything differently.
Most of the technical folks grow up, through their college and early professional career, living the compiler model. They face the screen more than the people. Their tasks involve dealing with compilers, or its equivalents, and they know that once they spend adequate time and energy to figure stuff out, everything will fall in place. The uncertainty exists only as long as you need to learn more. It’s a world based on logic and analysis – there is nothing artistic or arbitrary about it. With practice and persistence, the newbie can become a star.
It all works out well – well until the star performer needs to become a team lead or manager. These roles require dealing with that mysterious creature called people. Add to it the fact that this person had no formal training or grooming as to how to deal with these creatures. He has lived life the compiler way so far.
If the only tool you have is a hammer, you tend to see every problem as a nail. That’s what happens with the Compiler Manager. He starts managing people the same way he has dealt with compilers. Unfortunately, people are different. They are mysterious. They have emotions. They have mood swings. They do not operate by fixed rules. They are affected when people cry, beg, sing a song for them or hug them. They do not like to be figured out. They do not want to be modeled as a set of procedures that work and those that do not.
That is where the young technical manager fails. He gets frustrated when John is over the moon one day and the next has the morning fight written all over his face. His attempts to figure out his people and deal with them in a regimented way, and that too consistently with everyone, fail miserably.
People are different. Even identical twins are different. They function in complex ways, are affected by their environment, respond to hugging and singing, learn everyday and change with time. How they operate cannot be documented in a manual. If it helps, even they themselves cannot completely understand how they function. They are figuring themselves out all the time. By the time they understand somewhat, they have changed.
People management requires patience, flexibility, understanding, building relationship and treating each one of them distinctly. All these are things you don’t do with compilers.
Compilers are easy. People are difficult.