What is good and what is bad. Developer’s career through the eyes of its leader

What is the different view of the career of the developer and his leader.

Life is full of contradictions. Even light cannot determine who it is – a particle or a wave.
In the world of software development, contradictions between the actors are a car and a small cart. Let’s look at a couple – a developer and a development manager (this can be a project manager, technical manager, team leader). As it turns out, these two often look at things differently and generally tend in different directions.

What the developer wants

Everyone wants a different thing. But since we cannot do without generalizations, we take a middle-level developer spherical in a vacuum. He is moderately lazy, moderately curious, and he generally likes his profession. He would only have a softer time frame, better processes, more interesting tasks.
How does he want to develop? But like this:

  • Learn new technologies
  • Solve more interesting problems.
  • Participate in new projects
  • Fewer non-development activities
  • Make decisions yourself

At the same time, his manager wants to:

  • So that the developer knows the technologies used well
  • So that the developer copes well with the tasks: with the proper quality and on time
  • That the developer was responsible and always completed what he undertook
  • For the developer to give adequate assessments to the tasks
  • That the developer had an understanding of the needs of the business and the product as a whole
  • For the developer to report problems in a timely manner

Want to know how to compromise? Welcome to cat.

So what we have. There is a complete contradiction in interests.
The developer wants to learn new things, and the manager wants him to be able to use familiar tools well.
The developer wants to solve interesting problems, and the manager has a bag of ordinary tasks that someone should do.
The developer wants to participate in new projects, and the manager needs someone to support existing ones.
The developer does not want to do anything other than development, and the manager needs the code to be documented, the development process to be transparent and manageable, to fulfill the plans, issue releases, etc. To do this, he asks to give assessments, conduct stand-ups, retrospectives, makes him plan his activities.
The developer wants to make decisions on his own (he knows how to do it right), and the manager demands that he be informed of the identified problems so that he can control the decision.
It is not surprising that many development managers have a bad reputation among their developers – they do not allow you to do what you want, but rather, they force you to do what makes you sick.

Causes

The reason in my opinion is very simple. The developer and his leader have different goals.
The goal of the developer is to be more in demand on the labor market.
The goal of the leader is to deliver the project on time.
And yet, in spite of such radical differences, it is possible to achieve a compromise that suits both sides.
Let’s try to understand in more detail.

Developer

Learn new technologies

It is really interesting and inspiring. At the initial stage of becoming a specialist, it is useful to have a broad view of the industry and understand what there are generally opportunities for development. However, over time, the quantity should turn into quality.
I don’t know about you, but I am often wary of a developer’s resume (with 2-4 years of experience), which lists dozens of languages, frameworks and libraries. This may be a signal that a person was doing a little of everything, but does not know anything deeply (although there are exceptions). It is preferable to meet a person who does not know much, but knows for sure. And this requires significant practical experience in applying the technology. Then there will be an understanding of its subtleties and boundaries of application, and this is extremely important.
Thus, it is important and necessary to study new technologies, but it is highly desirable that real practice be behind this. Even if you are developing a pet-project, make sure that the technology is not used for show, but really solves the business problem.

Solve more interesting problems.

I think everyone is familiar with the concept of “routine”. Nobody wants to do the same thing all the time. However, there is a very important detail. It is unfair to want new interesting tasks if you barely manage old uninteresting ones. Any skill has steps, and you can not jump over them – sooner or later it will lead to a painful fall.
In general, everything is like in a computer game. To move to a new level, you need to pass the previous ones well. Before demanding interesting tasks from the manager, learn to solve current problems quickly and efficiently, then it will become obvious that you deserve more.

Participate in new projects

Obviously. Quite a few people are enthusiastically engaged in supporting the project on a regular basis. Correcting bugs of their own and their comrades while they are developing something new is a shame.
But after all, it is on support that an understanding of the needs of the business is often acquired, which is vital for any project. The developer learns to look at his software through the eyes of the user – and this is one of the most valuable skills for the programmer. In addition, the ability to understand existing code appears, carefully refactor it, without breaking the entire system. These skills will be useful not only for support, but also when developing a new project – do not repeat past mistakes, maintain the code base in decent condition, and deal with technical debt.
Do not refuse to support the projects that you developed – this is an invaluable experience that can significantly accelerate your career.

Fewer non-development activities

There are many developers who consider writing documentation, planning meetings, retrospectives, communicating with the customer as a waste of time. The main thing is to write code? That everything was neat, beautiful, consistent with the guidelines.
No. The main thing is that software does what is required of it – solve business problems. In addition, it is highly desirable that the development meet deadlines and budgets. If not, it is entirely possible that our ideal code will never work.
You need to be clearly aware that for any complex development, you need a plan, regular synchronization of project participants (including the customer), quality documentation and other things that are not code writing.
If you want to be an important and useful participant in the project, you must have an understanding of the processes that occur on the project and try to follow them. This is another useful experience that everyone should have.

Supervisor

Know the technology used
To cope with the tasks: with proper quality and on time

A leader needs people to rely on. If the task is set, it must be solved. It doesn’t matter if the developer was interested in doing this or if it was a painful routine for him. This happens if you “solve problems as they become available” and “live in the present.” But in order to resolve the contradiction, one must act differently. By constantly teaching developers new things and passing them the experience of solving existing problems, we increase their level. Gaining additional knowledge, experience and breadth of mind, they will solve existing problems much faster, and possibly offer an improvement in the process. Such changes, initiated “from below”, are valuable not only for their direct result, but also great motivators for developers to seek and offer new ones.
Allocating time for people to independently learn new technologies or training them, you can get a highly productive and motivated team.

Be responsible and always complete what it took

I think everyone will agree that professional programming is primarily about achieving results. To succeed, all project participants must complete their tasks. As a result, it doesn’t matter how cool a developer is technically, if he cannot complete a single task and throws everything halfway. The universal truth posed by great programmers is that the problem should be solved in the simplest possible way. Perhaps this is generally the most important quality of the developer – to be able to solve problems without unnecessary difficulties. To complicate is easy, to simplify is difficult.
I’m not afraid to say that it is such people who are most valued on real projects. Both the leader and the project partners know that you can count on a person that he will not fail.
Education in people of precisely such professional attitudes is one of the important tasks of a leader. The most important mechanism in this matter is the promotion of results. As a result, you get not just a development team, but a team of like-minded people, each of whom is interested in achieving a common goal.

Give adequate assessments to tasks

Many developers probably had the thought – why do they constantly demand estimates from me, how I will do it, I will do it, anyway, before I finish, nothing will appear. Ratings seem like a humiliating control mechanism. However, look at this through the eyes of a leader.
As I already wrote, for the project to be successful, the manager must have a plan. There are happy exceptions, but in the general case, without a plan, development turns into chaos. Even if the plan is not implemented on a calendar basis, it still benefits – the manager sees where the problem is and can rearrange it to solve the problem. To make a plan, the leader needs assessments. Even if the developer underestimated or overestimated the task, for the manager this is just an excuse to introduce a correction factor. Thus, having estimates from developers and historically confirmed correction factors, the leader can build a plan close to reality.
Developers often underestimate the need for planning because they focus on development. But as we know, a successful project is not only development. It requires testing, documentation, issuance to the customer, organization of UAT, etc. The team must act in concert, planning and following the plan provide such consistency.
Since the success of the project is also the success of each participant, in order to achieve their own success, the developer must be able to adequately evaluate the tasks.
It is the leader who must give developers an understanding of all the processes that occur outside of development. Explain the meaning of each action and decision, the importance of planning, communication. Awareness is the key to success.

Have an understanding of the needs of the business and the product as a whole

Quite often, developers focus on writing code, ignoring the business problem that they solve. Unfortunately, this is characteristic not only for beginners, but also for well-established and titled specialists.
As I already wrote, I consider the solution to business problems as the main task of programming. Therefore, in a natural way, only one who can effectively solve these problems can be considered a good programmer. To do this, it is vital to clearly understand what is happening in the business that we automate.
Thus, the manager’s desire for the developer to understand the needs of the business and consider each task primarily from this point of view (which business task we solve and why) is more than a natural desire. Only in this way can a developer achieve real mastery. So, the real interests of the leader and developer coincide here.
As in the previous paragraph, the duty of the leader is to clearly and clearly explain to the developer what the business needs and why. In addition, it is necessary to convey a simple truth – the one who can delve into the subject area and solve a specific problem is appreciated, and not the one who simply writes beautiful code.

Report problems in a timely manner

To ensure the success of the project, it is vital for the manager to receive timely information about problems with completing tasks. The developer, on the contrary, often prefers to completely deal with the problem and report it only when all reasonable deadlines have passed. It should be said that the desire to independently understand the problem is always commendable. However, for the benefit of the project, it is necessary to inform the head of the problems that can increase the time for solving the problem, so that he can take this into account in the plan.
The most important skill of the developer is the ability to communicate in a timely and open manner with other project participants. Timely reporting a problem is an important part of communication.
In this case, the leader should not immediately rush to solve the problem. It is wiser to give the developer time to figure it out for himself, make the necessary decisions and present the result. This will give him confidence in his abilities, the habit of relying on himself and at the same time relieve himself from the fear of reporting problems in a timely manner.

Summarize. How to combine the interests of the developer and his leader?

To the developer

  • The success of the project is the success of each of its participants. Every successful project is a step forward in your career. At any interview, you will gain much more points if you have successfully completed projects behind your back.
  • Solving business problems is the main goal of development. If the project failed, it doesn’t matter how good the architecture was and how beautiful the code was.
  • Development is not only the study of new technologies: responsibility, communication skills, focus on solving real problems, understanding business needs – all this is no less appreciated.
  • Projects are not done alone, this is teamwork. For the team to work efficiently, constant coordination of the participants is necessary. Without an up-to-date plan, such communication is impossible. In order for the plan to be relevant, developers must participate in its construction and adequately evaluate their tasks.
  • Project support is not an endless routine, but the opportunity to deeply understand the needs of business and users, as well as to take a fresh look at the technical decisions made on this project earlier, to evaluate their effectiveness and, possibly, improve something.

Development manager

  • Think not only about the success of the project, but also about the development of your people. There are many projects, let the developers grow with each new project. Get regular training for your people.
  • Explain to the developers the needs of the business and the meaning of the tasks, requirements and processes.
  • Explain the importance of processes and ensure that they are followed.
  • Listen to developers for process improvement.
  • Encourage responsibility and organization.
  • Allow developers to solve problems on their own.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *