Fear of becoming a manager
As a developer, when I was offered a management job for the first time, my biggest fear was that it would make me a bad programmer because my programming skills and my market competitiveness as a programmer will decline. While talking to young team leaders and tech managers, I discovered that I am not alone.
Fear of having no time for coding stops many good programmers from filling management roles and positively influencing strategic areas of the organization: people, process, enterprise architecture, etc. When developers don’t see themselves as future organization leaders and managers, they stop learning and caring about topics paramount to good management: Lean, Kanban, Change Management, Psychology, Motivation, Systems Thinking.
With knowledge gaps in those areas, we, developers, can’t be in charge of development process. Moreover, we can’t even help people in charge make better, informed decisions. No wonder why developers are rarely invited to non-technical, yet strategically important meetings.
So, by “staying technical” and giving up power to non-technical managers or the least competent developers, good developers are digging themselves a hole. Sitting in that hole, they complain about how bad the leaders, managers, and their created processes are.
Now, let me share some good news with you.
Becoming a manager makes you a better programmer.
As a manager, you’ll learn new skills that never get out of date, including communication, delegation, motivation, planning. You’ll learn how to deal with different (and difficult) stakeholders, balance conflicting interests, and reach an agreement. By spending more time next to business people, you’ll better understand their concerns and prepare yourself for running your own company.
Even if you prefer staying employed and “solely technical”, timeless managerial skills will serve you well, because you’ll gain an entirely new perspective on programming: you’ll see it through the manager’s lens. You’ll learn that estimates are
evil an essential aspect of financial planning. When putting pressure, good managers expect productive confrontation, not immediate compliance. And that we – engineers – are tough nuts.
With that extra perspective, finding common ground, and reaching an agreement with other managers becomes easier. Finally, you’ll understand that management is not a walk in the park and start empathizing with and helping other managers.
Management experience opens new doors
Having any leadership and management experience makes you prepared for more senior roles, such as Engineering Manager, VPoE, or CTO. Finding the right candidate to fill those roles is mission impossible. By having the necessary skills and experience, you’re entering the gold market area with high demand and low competition. In simple terms, you are now dictating your own rules of the game. And, as the number of programmers increases with incredible speed every year, someone has to manage and lead this non-trivial engineering show.
Management is power
Management not only comes with a bag of extra responsibilities but also power to influence things around you. With great power comes great responsibility, but if you use your authority wisely, finally you can create an environment that you and your colleagues will enjoy. When I became an IT manager, the opportunity to change things according to my values and beliefs, was the main selling point. And because I had enough freedom to manage my time and set my own priorities, I was devoting most of my time to building a no-bullshit engineering culture, hiring and growing great engineers, as well as building my personal brand via public speaking. A big win for my employer also became my personal success story, and I am proud of what we’ve achieved then. When you dare to take the lead, you can create things you’ll be proud of.
Oh, how many things I did wrong. Every day, I experimented with the process, failing and learning from my failures, all in the “safe” environment, while receiving a decent salary and bonuses. Today, as a business owner, I don’t have the luxury of learning at someone else’s expense.
Management helps you understand yourself better
To discover your Element – the point at which your natural talent meets personal passion – you have to try different things in your life, including working with different companies, different people, and wearing different hats. For a fulfilling life and career, knowing what you like is equally important as knowing what you don’t. Before you try management, you’ll never know how it’s going to make you feel. What if you’re the next Jack Welch, hiding under a React t-shirt?
Before I tried management, I hated the idea of becoming a manager. While my colleagues encouraged me to go for it, I looked for excuses and arguments for “staying technical.” Then I imagined my company hiring a Bill Lumbergh who’ll be in charge of my team.
Then I told myself: “it’s better me than Bill.”
Six months was the “probation period” I gave myself before making the final commitment. Treating the role switch as a temporary experiment, not a permanent career change, made me feel safer. In only six months, I have formed my opinion about management, gained some practical, CV-boosting super skills, and invaluable life experience. So, what seemed like a bad idea in theory, turned out an existing and life-changing journey in practice. I fell in love with management and even started teaching the principles of good management to developers.
Management is compatible with coding
Finally, you can combine management with coding. Stopping coding is a personal choice, not a necessity. I think it’s a capital mistake to polish your coding skills for years and then just throw them into a bin. If you mastered a hard skill such as coding – protect it at all costs. Management skills should complement your hard skills, not replace them. Remember: trust is the management currency, and gaining full developers’ trust is only possible if you’re a competent software developer.
But how do you find time for coding?
Firstly, you can free up time for coding by delegating some management duties to others. If you’re trying to manage everything yourself, it’s a signal of bad management. Management 3.0 book will teach you how to create an environment where management duties are distributed among people in the organization:
But don’t fall into the trap of becoming an individual contributor again. Remember that as a manager, your output is the output of your team. You should be coding strategically. For example, to better understand the system’s quality, you can do a short pair programming session. Or organize a mob programming session to inspire or teach a group of people. Or just quickly hack a prototype to demonstrate a new business idea to customers. Your mileage might vary, but if you’re coding more than managing, it’s a warning signal.
Secondly, maintaining existing coding skills is easier than improving coding skills. As a manager, unlikely your coding skills will improve, but you can easily stay at the same level.
For me, coding ~8 hours a week was more than enough to stay in good shape. I believe that with proper time planning and delegation, every developer can find those critical eight hours. There were periods in my life when I was overwhelmed at work, so I was writing code for my pet projects on weekends. Later I developed a simple rule: at work, I devote 80% of the time to management and leadership, 20% to programming. It’s possible, and it works.
Moreover, having less time for coding forced me to reconsider my learning strategy.
The Dilbert Principle is real: good programmers are managed by bad programmers and software development processes are organized by clueless MBA wolves. Our industry, companies, and teams need competent leaders and managers with a programming background. If we – programmers – don’t want (or don’t know) how to lead and manage the development process, someone else will do this for us.
There is no good software without good management.
If you’re a good programmer – don’t be afraid of management. Learn management. Try management. And remember that trying is 100% risk-free: you can always return to programming… equipped with management skills.