📜 ⬆️ ⬇️

Effective technical guidance

image

Most successful projects have one developer responsible for moving the project forward through confident technical decisions. Usually this person is called a technical manager . As a rule, he does not control people, but instead teaches them the best way to do their work.

All companies are different, but there is something in common between the best technical managers with whom I happened to work. I take my hat 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 his qualities, functions and actions. Many of these principles make a person generally cool in life. Your experience may be different from mine.

Qualities


You should always improve your three qualities: competence, speed and awareness.

1. Competence
Technical knowledge gives you the insight and confidence to make the right informed decisions. A strong technical manager has broad 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.

To remain competent, I do three things in the following order:
  1. I appreciate the code
  2. I read the project documentation
  3. I am writing code (see the article ABC: Always Be Coding )


The order is important, especially for the first two points. If the work is finished, but waiting for evaluation, then almost always you have to postpone your own work and help the project move on. If you do not help others, writing code helps you to be aware of the source code base.

The technical manager must own several technologies. For example: Java, JavaScript, C ++, distributed storage systems and client-side web development allow you to take the position of technical manager of a serious web application (for more information, who is a Full Stack specialist )

2. Speed
You must learn to respond very quickly and make instant decisions, always leading the ball forward. Coming to you with questions, developers should know that they will get a quick response.

I personally am 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 closely with email.

For example, no matter what software you use to track problem solving, code evaluations, and reminders, team members should receive email notifications and be able to comment via email. Allow each team member to quickly respond to new or changed issues and stay updated on all changes, even from your 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 potentially unavoidable blockers. If there is an internal or external force that can slow down a project, you should be aware of this.

Again, the key point here is email integration. Ideally, all state changes or updates should somehow go through email, even when it comes to offline meetings. For example, after each meeting, someone must send notes to all team members, especially if important decisions have been made.

You should 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 was constantly performing at one time or another, being a technical manager. Almost every action can be attributed to one of the following functions.
Over the years of work, I realized that the two most important things that a technical manager can do are the exact opposite: locking and unlocking .

1. Lock
Blocking requires a high level of awareness and extends to both strategic decision making and tactical development tasks. The technical manager should always be aware of what is happening in the project, and always be ready to get involved and block bad decisions before they are made, usually by proposing a better solution.

For example, a developer sends some code to an assessment by another project developer, which seems to the evaluator to be safe, but in fact introduces new errors. You can intervene and warn the author before the transfer or launch into production, which will be very useful for the author, the evaluator and the project as a whole.

The 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. Unlock
Opposite blocking unlocking is equally important. The road to hell is lined with inactive developers. If someone has a question, you should be able to either answer or bring the right person for that.
I was helped to develop this skill by having trainees. The best trainees ask a lot of questions. And if they don't get the answers, they can often get stuck or, worse, give up. I had to learn to give the right answers or bring them to the people who would lead them forward.

3. Redirect
No matter how good you are, you don't know everything. And you can not answer any question. And even if you could technically do this, almost all your time would be spent on answering questions. To fill these gaps (and be able to do your own work), you must mentally draw up a list of experts to always know where to find the answer. Initial and frequent redirection is an extremely useful practice. The technical supervisor is often the “302 person” (or person-forwarding) that connects people. If the developer in your team is not sure about 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 questions, proactively adding the right people to any process or code evaluation 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 code evaluation will help ensure the correct implementation of the function.

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 way forward; in such a situation, your intuition will follow.

Listening to your instincts, make sure you make a sound decision that passes the test of time. The project will most likely continue after you leave, and you would not want your receivers to curse you. This often happens with projects that have a large technical debt.

Faced with the need to make a decision when there are several possible options, I usually follow the following procedure:
  1. I reduce the number of options to 2. The complexity of any problem increases exponentially with each option.
  2. I quickly determine whether it is possible to make an optimal choice based on experience or data.
  3. 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?
  4. If you still cannot make an optimal choice, then you may not have enough data or ask the wrong question. I either block the decision or unblock it, following instinct.


The above steps must be instantly passed through the mind.

The quality of the solution is similar to the falcon's patina at the right moment, allowing it to shoot down and kill its victim. - Sun Tzu


5. Demonstration
One of the most important qualities of a technical manager is the ability to demonstrate by example. We have all heard the phrase “lead by example”, but I like to show rather than speak. The technical manager is usually not a manager, as he focuses his energy on the code, not on the people. Therefore, it is necessary to achieve respect and trust from your team, which is best achieved by demonstrating that you know your business.

Most managers may find it difficult to find time to write code, but this is very important to do. I call it "create time." Even if I can devote quite a bit of “black work” in the form of eliminating annoying errors or adding small useful pieces of code in some places 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.



Installation how to become a successful technical manager does not exist. The best of them are productive coders with vast real-world product development experience. And now remember the best managers you have worked with, and think how much what you read above applies to them.

Be confident, keep moving and constantly improve!

The translation was made as part of the Tolstoy Summer Camp start-up summer school.

Source: https://habr.com/ru/post/185526/


All Articles