Engineering Management is a Fundamental Discipline
Traditionally in technical fields such as software, it is not uncommon to experience an atmosphere of mistrust and sometimes a feeling of total rejection of leadership positions. The famous video game company, Valve, adopted a flatness organization by totally removing hierarchy. The success of this company emphasized the initial feeling of mistrust proving that it was possible to succeed even without management. By reducing management, they succeed in removing the burden of toxic management, but they have also cut down on good managers who can have an extremely positive influence on increasing the potential of individuals.
Election 2 (2006) by Johnnie To, when the leader is preparing his succession
Why you should care about management
There are two main reasons why it is useful to be concerned about this discipline. The first is that even for a career of an individual contributor there is always a management aspect, take for instance a position of tech lead, they will face management tasks. These tasks can be from supervising onboarding to transmit knowledge on certain parts of the code to make sure the team improves technically. Secondly, being interested in this discipline allows you to understand what your own manager is doing and get the most out of that relationship.
Based on my different readings, let me present you 4 points that highlight best practices in management.
Produce meaningful 1-1 Meetings and feedback
In almost all companies there are annual or semi-annual performance reviews. But 6 months to 1 year is far too long. During this time and without a simple platform for private discussion, some important topics can never be put on the table and resentments can grow to a point of no return. One-on-one meetings are designed to fill this gap and, because it is a time-consuming activity, they should be meaningful. Several themes and options are available to properly conduct these meetings:
- Asking questions about personal life and getting to know your team better on a personal level so they will be more comfortable bringing sensitive subjects
- Conducting a mini performance review
- Giving coaching on a specific subject
- Establish a culture of continuous feedback by providing it and asking to receive it
Time frame between two meetings can vary according to the needs and schedules of each one but should not exceed one month.
Give proper career guidance
This is an essential aspect of being a good manager, understanding the different career aspirations of each person on your team and ensuring that there is progress towards this goal. For a future technical expert, this support can take the form of a recommendation for training in a field that the person does not yet master. For a future manager, it can be to work on communication skills. A good manager makes sure to explain and establish a concrete plan with actions to be taken to achieve the career goal.
Delegate effectively
If you are the type of manager who likes to do everything on your own and supervise every decision, you can quickly become overworked and infantilize your team as well. To avoid this problem, it may be beneficial to apply an existing delegation framework.
A well-known example is the Eisenhower Matrix :
Urgent | Not Urgent | |
---|---|---|
Important | Do first | Do later |
Not Important | Delegate | Eliminate |
The idea is not to rigorously apply this matrix but at least to introduce you to the idea of whether a task can or should be delegated as well as the relevance of this delegation action. It’s also important to remember that recruiting good people and micro-managing them is the best way to discourage them. If it is possible for you to go on vacation without having to answer on slack or by email, it means that you are on the right track.
Debug a dysfunctional team
Unlike developers whose main subject is code, the manager will have to deal with humans, which is even more difficult. Consider the case of your team of developers having trouble delivering code to production. The first reaction is not to reprimand but to ask the question of why. Why your team is not able to function properly, the reasons can be multiple: understaffed, dependence on other teams, deep legacy code, over-concentration of skills on one person or even a combination of all of these. It is your role to understand the reason and to restore the situation to a good level. Removing all pain points should remain an end goal and must be an ongoing process.
Now that we’ve covered the basics. Please let me know in the comments section below if I missed anything related to good management behavior.