Source: What should be the mission of a great God programmer
An engineer who has worked for five years is not a senior developer? The collation developer is not simply looking at the length of the job, because experience is a priceless thing to do but worthless.
The industry in which we work now is very strange. Every year there are new workers into the talent market, but enterprises still complain that they urgently need a lot of development. This problem has been around for a long time and is becoming more and more serious.
The developer industry is very young and faces a serious shortage of talent. Most of the software development projects came to an end because the latter was too big. What the big guys in the industry suggest to us, they say, "There's always a way to solve problems in the world, but we still have a lot of problems." Because unless we really try to solve it, we never know which method works. 」
Know a reality, when you have been in the development work for more than three years, you can call yourself "senior developer." But in fact, some people are only in this position for three years, and they are only superficial, the level of serious non-compliance with the position.
This is indeed my comment on the peer.
First of all, according to the knowledge and experience to divide people into junior developers, intermediate developers, and senior developers, this is a very cutting-cut classification. Some people may have only been in a position for ten years, but he has grown up without even another person who has learned more in a year.
Developer's high-speed growth period:
As a programmer, we live in an age where IT systems are becoming more complex and changing. Sometimes executing a simple open source project requires a precise definition and a lot of time to focus on the task. Especially when you're a new programmer, or you're unfamiliar with your own database.
Novice programmers are very easy. You may have just graduated from a good university, and you feel you have mastered basic common sense. But all of a sudden, you face a new set of knowledge at work. For a long time, you have no clue what you are going to do with your work. You seem to be able to compromise the demands of your superiors and have no way of effectively questioning them.
At this stage, what you have to do is focus. And as much as possible to open up, to study hard. Beginner developers need a lot of practice, guidance, supervision, and a teacher to help them at the beginning of their work. Without any of these conditions, it is difficult for junior developers to cross this beginner's threshold.
I recently met a guy who has had ten years of experience in software construction, but I'm sorry to find that his true level is still a beginner developer. You can say this stage, is the accumulation of strategic state, but is to learn to accumulate, accumulate and learn, indispensable.
Junior developers have to focus on the code itself, and at this stage, don't be thinking about any other mess. In developing a project, if a programmer is thinking "I want my Code to look beautiful in the eyes of others" rather than "I'm doing something that the user feels first", he is a beginner.
A good developer can do a great job, and not only that, they can do their job well in a short time, and later they will be well maintained.
Mid-level developer bottleneck period
When a developer is growing up as a mid-level developer from the rookie stage, they can reflect on the whole process when the project fails (usually they look at their own work part). and realize that there are some rules that should be established at the beginning of the project, rather than rushing to finish the task. Even if someone first corrected them, the whole project would be able to avoid failure at first.
Intermediate developers also experience another unique psychological process, when they look back on their work a year ago. found that although "ouch, I did a good job", but now will find "what is this" ah.
A mid-level developer is a person who has the ability to find out "the right way" to do things through past experiences, text materials, project team discussions, and so on. At this stage, learning to build software is more important than learning to build code (the latter should be mastered at school).
On the other hand, mid-level developers, if they get on their own, pose a greater hazard than novice developers. Novice developers only stack algorithms, and a good intermediate developer is working toward "pattern design" and "Category driven design". These skills are the necessary process for them to build OO systems, and if they are used flexibly, they will be able to construct projects better. But if used rigidly, it can also endanger the whole project.
Sometimes it takes a middle-level developer to build a system that can take longer than a novice developer, and worse, he may lead the whole team astray. Sadly, many project development fails because the leader himself is only a mid-level developer who lacks the valuable experience of working with senior developers. The team leads themselves, and no one else on the team realizes this.
Mid-level developers are well aware of the roles they play in the team and recognize the value they bring to team work. A good intermediate developer knows that code is used to solve problems, not to end problems. However, mid-level developers tend to fall into a cognitive pyramid in which they follow some "right ways" to solve problems.
A good mid-level developer needs few but good supervision. They are very reliable in the direction of code construction and will play an important role in discussing the design process. Intermediate developers are "engines" in the team. However, further guidance and a higher level of regulation are still essential.
Advanced, even the great God developers need to meet the conditions
A high-level developer, it's no exaggeration to say that he can remember his mistakes every time. They can even foresee a lot of failures when designing or writing code. They will respond very keenly to errors and evaluate their successes and failures in an honest way. As a senior developer, he will be more inclined to love complex problems, but will be obsessed with the simple solution of it.
Advanced developers don't rank other developers. He knows more about it than he does. Because of understanding, so understand each person at each stage has strengths and weaknesses. They also understand their strengths and weaknesses more than others, and strive to maximize their own advantages.
A senior developer will understand that all theoretical foundations have background support. Instead of sticking to the "right way" to build software, they apply the theory flexibly to the actual, and the theory can be adapted to the tools needed to serve the customer, team, and organization.
The senior developer will be in the process of the project, to understand what the customer wants and what kind of work they want and what their preferences are. After all, these things are more important than the developer's personal preference and success. They will never say, "That's not my job," and never push tasks and responsibilities.
Senior developers will know one thing, and that is that their job is to provide solutions for their customers, not to bury their code. And a senior developer will always put their team to the customer to bring much value, put in the assessment criteria. Rather than put their own efforts and customer demand in the equivalent of the PK arena.
Admittedly, because this is a job, the middle process is always boring and boring. But senior developers will take a step back and think about how to solve and break these silly questions. They will assess the source problem and solve it directly. Or they can put the dull emotions aside and fix the problems they have to face every day.
Experienced developers will also understand the effectiveness of team work. No one can do all the work on their own, they are committed to improving the efficiency of their team. They see the behavior of improving team efficiency as part of their own soft power.
Senior developers know that leadership is more than just power, it's not just control. Power is not a traffic rod, but a service consciousness.
If you don't have a senior developer on your team, there's basically no exception to the project that goes to failure. Having a mid-level developer can make you do things very quickly, but at work you will find that projects are more than just building and maintaining programs. Eventually you can only close the site, or maintain it at a higher price than expected. Only high-level developers can choose technology and websites instead of letting them hurt you.
Many of the requirements are simple, but most of the simple requirements behind, hide more complex requirements.
And the reality is, I'm tired of classifying developers by the time they work. Yes, work experience can tell you a lot of things, but what is usually provided is meaningless information. Even this information must be judged by a combination of backgrounds.
More importantly, we need fresh blood in our industry, and we need to recruit young people who have just graduated from college with passion. And even if the programmer is divided into categories, it is not only to see work experience. In fact, before we recruit programmers, we should first think about the talent that the team needs. After all, we recruit people to serve the team. When you recruit the wrong person, you are only helping the team and the project.
What is the mission of a great god programmer?