Programmer's road to growth sharing

Understanding and sharing of programmers' growth path

This article comes from the sharing of director Lu of java, and He Yi has made some modifications

In the end how to grow? How do newbies grow? How to grow in 3-5 years? How to develop as an architect in 6-8 years?

This question is a question that programmers need to consider. Whether they are newcomers, have worked for a period of time, or students who have worked for a long time, they all have such doubts.

I want to discuss a few issues with you.

What technology is good?

What do you think is the best technique and memorization of stereotyped essays? Proficient in various middleware? Still do architecture? Can you design a model? Can solve difficult problems?

Let me talk about my understanding. I think the best technology is to be able to work in a responsible manner, to think in detail about any requirement, to think clearly about the logic before and after, so that you can trust him with a thing. do it.

I met two such students in my work. The two of them have very similar strengths, they are both introverted, not good at words, quick to do things, and very responsible. I never shirk the problem, so I feel relieved to hand over the matter to them. Basically, I don't have to worry about anything. But they both suffer from similar shortcomings. I'm not very good at memorizing stereotyped essays, and I don't know the bottom layer of various middleware, so I can use it. No architectural work has been done either. They are both very good performers, software engineers. But although they have such shortcomings, I am still happy to classify them into the category of people with good skills.

So let's go back to the question itself. Everyone asked me how to grow up, especially the students who have just entered the industry and the students who have been in the industry for 3-5 years. Everyone needs to be able to become such a person first. is the first step. Be the person that others think you are reliable first, and become the person who can put things in your hands with confidence. Our society is too complicated and pays too much attention to so-called technology, so that everyone forgets that technology itself is a tool and ignores the attention paid to people.

What capabilities do you need?

If you want to meet the requirements of the above two students, think about it, what abilities do you need?

1. Long-term solid coding skills

To achieve this, it is not enough to just write the code. You need to keep reviewing after writing, keep learning other people's code style, use your brain when writing code, and maybe learn some design patterns.

2. Concentrate on writing code and actively discover problems in your own code

Is the Alibaba protocol plug-in installed? Is the sonarLint plugin installed? After writing the code yourself, scan it with a plug-in, and you can find most of the problems.
Some repetitive parts are involved in the code, can some methods be abstracted?

Generally, according to my code style, if the design is used in two places, I will definitely abstract a method.
Let the code be more elegant, what method is used to judge the nullity of the string, is there any method to judge the nullity of the list, and the list queried from the database must be judged as null. Are you aware of this?
What about exception handling? Where to handle exceptions and where to throw exceptions, have you figured out this problem?
What about comments? Whether the comment is written clearly, not only reminds the people who come later, but also reminds oneself of the logic of the code.
In fact, you will find that it is not easy to write good code, so students who are just getting started should improve their code quality

------------------------------------The above are words for junior students---------- ------------------------------------

How to grow in 3-5 years

Just entering the industry, don't think about improving this at the beginning, but improve that, write good code, and less bugs are the kingly way.

Let's talk about how to grow in 3-5 years, and what level should be reached in 3-5 years. At this time, your coding ability should be more mature. The standard of measurement is that a requirement is assigned to you. You know what to ask and how to do it. You don’t need too much guidance from others. You can complete the module development independently. , interface definition, development, and joint debugging should all be done by you alone. And be able to skillfully use various middleware, build scaffolding projects, and access various middleware APIs.

What books are you reading at this stage?

  1. think in java (java programming thought)

  2. efftive java (high-performance JAVA)

  3. Design Patterns

  4. Zhou Zhiming's JAVA virtual machine​

It is not easy to read these four books. Especially think in java efftive java seems particularly boring, but these two books can give you a deeper understanding of JAVA.
In general, the goal at this stage is a mature programmer who knows how to write code and how to solve his own problems.

----------------------------- The above is given to the students of 3-5 years ----------- ------------------------------------

How to grow in 6-8 years

How many years have you worked to be an architect?

Answer: about 7-8 years

Why? Because the architect is not learned. It is based on one by one project experience. This is my previous description of the architect.
The so-called architect is actually a false job. How can there be so many projects that you have to fight around? Whoever has nothing to do is refactored every day. The architect is only a job content in a certain period of time, and more is a certain technical manager. To do part-time work, the technical manager has to go back to write code after the construction.

What basic capabilities does the architecture need?

breadth of technology

In your previous 6-7 years of work, you have been exposed to many projects scatteredly. What kind of middleware have they used? Why use this middleware, and what other middleware have you considered. What is the difference between them, you have to understand these. In addition to the most popular spring framework, has jfinal been used, what is the difference between him and spring, and what is the difference between mybatis and hibernate. Why is hibernate not commonly used? What scenarios use ES, what scenarios use mongodb, what is the cluster deployment method of ES, and what is the cluster deployment method of mongodb. Can mongodb do search storage? Why ES is fast, besides these, what else is hbase used for? What is the scenario of hdfs? What is the solution to the large amount of data? How much concurrency can redis support, what is the difference between the first level cache and the second level cache, and so on. . . Do you think this is a question of depth? This is the simplest question of breadth. Sometimes we need these things for technology selection. Where does this knowledge come from? It is your accumulation of project experience in previous years. If you used it up in your previous job, start thinking about these questions now.

depth of technology

What is depth, my understanding is definitely not the underlying principle of middleware, which is a question of breadth. Let's talk about what is the depth issue, and I will talk about a few basic issues.

  • ES-based takeaway search practice (Meituan technical public account)
  • Best practice of high-performance terminal real-time log system construction (Meituan Technology Official Account)
  • Design and Implementation of Database Abnormality Monitoring System Based on AI Algorithm (Meituan Technology Official Account)
  • ROCKETMQ multi-level storage design and implementation (Alibaba developer headlines)
  • Link Tracking Implementation Logic (Alibaba Developer Headline)
  • Practice of Transaction Fulfillment Order Center (JD Technology Official Account)

There are still many, many excellent technical blogs. At this stage, don't focus your attention on stereotyped blogs. What I’m talking about is a lot of articles and videos devoted to stereotyped essays, which should be mastered at this stage of 3-5 years.

Focus gradually on solutions and best practices. These things change with the business and are actually combined with the real structure of the business. These technical articles may be written in a shallow way, but they are enough to increase your knowledge! What you need to learn is their thinking. You say that you only know that ES can support search very well, but it is useless. In order to achieve the best search logic, how do people build models, how do they match, how many data levels can they support, what challenges and problems they encounter, and how to solve them. Aren't these all the capital to go out to interview and brag about B in the future? !

business problem

A good architecture must be combined with business. Technology will always be an ancillary business. What is understanding business, you have to understand that technology is not omnipotent, there must be problems that technology cannot solve, or the cost is very high. As an architect, you need to be able to see at a glance how much this problem costs and whether there is a better way. According to the real business scenario, design a set of architecture at the lowest possible cost.

For example, it is obviously a simple business, whether to split microservices, how to solve the problems caused by splitting microservices, and how many resources and servers are needed. What kind of order of magnitude exists in MYSQL is no problem, what kind of order of magnitude needs to be divided into databases and tables. Some technical solutions can be lazy because few people use them. Also, when you first come into contact with a requirement, do you immediately have a better business model in your mind to match it, and whether your previous experience can be reused. It's all business experience.

Model design ability and drawing ability

What is the domain model, what is the logical model, and what is the physical model? Can you draw flowcharts, sequence diagrams, application architecture diagrams, and physical deployment diagrams? Almost all of these diagrams are process on, and it depends on whether you are willing to try.

Summarize

So to sum up, for a programmer of 6-8 years, you must find a way to achieve a jump, which may be a technical jump, or a management jump. These jumps may require waiting for opportunities, but they must be prepared. The general does not fight unprepared battles. If you are not prepared for these, how can you expect others to give you the opportunity?

Guess you like

Origin blog.csdn.net/weixin_45178729/article/details/130538142