Effective Technical Leadership
- Transfer

Most successful projects have one developer responsible for moving the project forward through the confident adoption of serious technical solutions. Usually this person is called the technical manager . As a rule, he does not control people, but instead teaches them to do their best work.
All companies are different, but there is something in common between the best technical managers I have worked with. Hats off to Brian Stoler , Nathan Hunt , Evan Gilbert and Rich Burdon for setting me a good example.
In this article I will tell you what a cool technical leader is in terms of its qualities, functions and actions. Many of these principles make a person generally cool in life. Your experience may differ from mine.
Qualities
You should always improve your three qualities: competency, speed and awareness.
1. Competence
Technical knowledge gives you the understanding and confidence to make the right informed decisions. A strong technical manager has wide and deep knowledge. If a team member asks how a particular component or system works, you should be able to explain it in sufficient detail or refer to someone who can do it.
To stay competent, I do three things in the following order:
- I rate the code
- I read the design documentation
- I am writing a code (see article ABC: Always Be Coding )
The order is important, especially for the first two points. If the work is finished, but awaiting evaluation, then almost always you should postpone your own work and help the project move on. If you are not helping others, writing code helps you keep abreast of the source code base.
The technical manager must be familiar with several technologies. For example: Java, JavaScript, C ++, distributed storage systems and client-side web development allow you to take the position of technical director of a serious web application (more about who is a Full Stack specialist )
2. Speed
You must learn to respond and accept very quickly instant decisions, always leading the ball forward. When coming to you with questions, developers should know that they will get a quick answer.
I am personally proud of my ability to respond quickly. The goal is to appear omnipresent to your team. My secret weapon is my inbox, so I prefer to use tools that integrate tightly with email.
For example, no matter what software you use to track problem solving, code evaluation, and reminders, team members should receive email notifications and be able to comment via email. Allow each member of the team to quickly respond to new or changed problems and stay up to date with all the changes, even using a mobile device.
3. Awareness
You must learn to keep in mind the current state of the entire project. Otherwise, you will not be aware of the potentially unavoidable blockers. If there is an internal or external force that can slow down the project, you should be aware of this.
Again, the key here is email integration. Ideally, all status changes or updates should somehow go through e-mail, even when it comes to offline meetings. For example, after each meeting, someone should send notes to all team members, especially if important decisions have been made.
You must always improve the above three qualities, as you can always become faster, more competent and more knowledgeable.
Functions
There are five main functions that, as it turned out, I constantly performed at one time or another, as a technical manager. Almost every action can be attributed to one of the following functions.
Over the years, I realized that the two most important things that a technical manager can do are exactly the opposite: locking and unlocking .
1. Blocking
Blocking requires a high level of awareness and extends to both strategic decision-making and tactical development tasks. The technical manager should always know what is happening in the project, and always be ready to turn on and block bad decisions before they are made, usually by proposing a better solution.
For example, a developer sends some code to another project developer for evaluation, which seems safe for the evaluator, but actually introduces new errors. You can intervene and warn the author about this before transferring or starting production, which will be very useful for the author, appraiser and the project as a whole.
A lock should not stop progress; it adjusts the process so that it does not stop. Think about how to do it right initially, and not how to fix it later.
2. Unlocking
The opposite of locking, unlocking is equally important. The road to hell is lined with inactive developers. If someone has a question, you should be able to either give the answer or bring the right person for this.
The presence of trainees helped me develop this skill. Best trainees ask a lot of questions. And if they don’t get the answers, they can often get stuck or, even worse, give up. I had to learn to give the right answers or bring them to the people who will lead them forward.
3. Redirection
No matter how good you are, you do not know everything. And you cannot answer any question. And even if you could technically do this, almost all your time would be spent answering questions. To fill these gaps (and be able to do your own work), you need to make a list of experts in your mind to always know where to find the answer. Initial and frequent redirection is an extremely useful practice. The technical manager is often a “302 person” (or call forwarding person) who connects people. If the developer in your team is unsure of something or asks a question to which you do not know the exact answer, understanding who you need to send it to is extremely valuable and saves a lot of time.
In addition to redirecting with questions, proactively adding the right people to any process or evaluating code can help improve the overall quality of work. For example, if a developer adds code to a critical component that was not originally created by him, adding an expert to the code evaluation will help ensure that the function is implemented correctly.
4. Decision
Part of your responsibilities is making decisions that your team will rely on. The faster you can make a decision, the faster others can begin to act in accordance with it. Often there is no clear path forward, in such a situation it will be correct to follow your intuition.
When listening to your instincts, be sure to make a sound decision that will pass the test of time. The project is likely to continue after you leave, and you would not want your receivers to curse you. This often happens with projects that have a lot of technical debt.
Faced with the need to make a decision when there are several possible options, I usually adhere to the following procedure:
- I reduce the number of options to 2. The complexity of any problem exponentially increases with each option.
- I quickly determine if you can make the best choice based on experience or data.
- If the correct answer at this stage is not obvious, is it possible to redirect the question to someone who is more suitable for making a decision?
- If you still cannot make the best choice, then maybe there is not enough data or the wrong question has been asked. I either block the decision or unlock it, following the instinct.
The above steps must be taken instantly in the mind.
The quality of the solution is similar to a falcon's raid at a good moment, allowing him to bring down and kill his victim. - Sun Tzu
5. Demonstration
One of the most important qualities of a technical leader is the ability to demonstrate by example. We have all heard the phrase “set an example,” but I like to show rather than speak. A technical leader is usually not a manager, as he focuses his energy on code, not people. Therefore, it is necessary to achieve respect and trust from your team, which is best achieved by demonstrating that you know your job.
Most managers may find it difficult to find time to write code, but doing so is very important. I call it "create time." Even if I can devote very little time to the “black work” in the form of eliminating annoying errors or adding in some small useful pieces of code where necessary, I will do it. This is more valuable to you than the code itself.
Actions
Below is a list of what the technical manager usually does to move the project forward. This list is far from exhaustive.
- Creates and supports development, testing, and release plans.
- Holds effective development team meetings.
- Provides useful and concise meetings as needed.
- Helps to identify and prioritize a project.
- Often says no to new redundant functions.
- Identifies the best ways to track problem solving.
- Organizes hackathons and bug fixes.
- Supports cross-functional relationships.
- Defines milestones.
- Keeps track of useful tools.
- Instructs other developers.
- Hires developers from other teams.
- It takes trainees, makes them successful.
- Evaluates the code in detail and leaves useful comments.
- Reads, writes and comments on project documentation.
- Writes the right code at the right time.
- Protects developers from leadership, if necessary.
- Works with other development teams, especially dependent ones.
- Defines technical debt.
- Explains why decisions are made.
- Fights for the right decisions.
- Finds time to work with technical debt.
- Distributes the load in the team.
- Accepts new developers and appoints developers as mentors.
- Adjust course and target dates as needed.
- Supports the definition of minimum viable project products.
- Evaluates architectural decisions and their consequences.
- Provides test writing for core functions.
- Supports on-demand and call processes.
- Raises blocking problems as needed.
- Explores confidentiality and product security issues.
- Often generates new ideas and excellent solutions.
- Solves complex manufacturing issues.
- … etc.
Installation, how to become a successful technical manager, does not exist. The best of them are productive coders with huge real experience in product development. Now, remember the best leaders you worked with, and think about how much what you read above applies to them.
Be confident in yourself, keep moving and constantly improve!
The translation was made as part of the Tolstoy Summer Camp startup school .