Recently read ali cloud development community’s e-book “Ali engineer self-cultivation”, harvest quite a lot, I recently saw a very good book about programmer personal growth, I summed up the top ten dry goods inside. This is true of all industries, and the following is not just for programmers, but for other professions as well.

  1. Structured thinking

Only with structured thinking can the problem be analyzed in a more comprehensive and profound way.

Simply speaking, the definition of structured thinking is: logic + routine. Logic means that there must be logical relationships (deduction, causality, time, degree) between our structures. The so-called routine is the methodology we use to solve problems, such as 5W2H.

In general, there are two steps to structural thinking. The first is to establish the center, to define clearly to solve the problem, clear goals. Then there is structural decomposition, and the strategy of decomposition is four logical relationships.

For example, how to build geek culture. The heart of the problem is clear, and you can break it down in spatial order.

After determining what to do, you can also decompose how to land according to the time.

  1. Primal thinking: Finding the principles behind knowledge

In software development, the complexity of the system will become higher and higher, and we will face more and more scenes. If we master the principle behind knowledge, we can greatly reduce the amount of memory for knowledge. The amount of knowledge is explosive, but the principle is absolutely controllable.

Primal things are more reusable than direct knowledge. The process of exploring the principles is interesting in itself.

For programmers, need to master the basic knowledge: Java, Linux, data structure and algorithm, database, network communication and distributed computing principle, design mode, etc.

There is a best practice for learning and applying these principles on the job:

  • First, establish a basic concept of the domain knowledge you are likely to use;
  • In practice, there is a sense of “asking why” and always “asking why”;
  • After understanding the principle, apply it in practice, so that your understanding of the principle will not be profound, and you know how to apply the principle;
  • If this is a very important principle, it is recommended that you learn systematically with classic books if you have the ability.
  1. Extended thinking: draw inferences and expand thinking

The core goal of extended thinking is to increase the breadth of our thinking, that is, to expand our knowledge tree.

The benefit is: can we use the same knowledge and means to solve similar related several similar problems. By analogy, it is equivalent to producing the effect of batch processing.

A common way to expand your mind is to find more ways to understand or more ways to solve a problem. When solve trouble song hair much, the mind naturally broadens.

  1. Reflective thinking: Thinking about what could be done better

Reflective thinking is a key ability to improve the quality and depth of knowledge. Because the only way to upgrade the next time is through constant reflection, rather than repeating the cycle.

For example, after a project is finished, what can we do better next time from the aspects of scheme design, r&d process and quality assurance? Find flaws and avoid them next time.

There are two key points in the practice of reflective thinking:

  • The most important awareness of reflective thinking: there is always room for improvement in the process of doing things, and progress should be made every time; Without this mindset, it’s hard to reflect consistently;
  • Introspection is a kind of habit and subconscious mind. It can be done frequently without noticing. In fact, it doesn’t need to spend a lot of time in a formal way.
  1. habit

How can you get rid of your cell phone habit and spend more time on self-improvement? Why is change so hard?

The first step is to understand how habits are created. Habits don’t happen in a vacuum. They have a cause and effect. The cause is the end of the previous event (the trigger), and the consequence is some extra reward for the action that follows. For example, after taking a shower at home from work in the evening, we will certainly start the next thing we are most accustomed to, such as staring at the mobile phone to watch TV or reading gossip. When this thing is over, our brain will produce timely spiritual enjoyment, the content is rich and wonderful, but it consumes a lot of time.

Once you understand the mechanism by which a habit is created, changing it is easy. Every time a trigger occurs, a multiple-choice question pops up: Do something ineffective or learn? Repeatedly reinforce yourself in this way to get multiple choice questions right. Over time, the right behavior is trained enough to become a natural habit. So change habits, is when trigger conditions occur, let yourself do the right choice, break the old habit circuit, establish a new habit circuit.

  1. Time Management: The “38” theory

Everyone has a fair 24 hours a day, the first eight hours for sleep, the second eight hours for work, the third eight hours for free, but the difference between people is mainly determined by the third eight hours, the third eight hours for consumption, trading or investment makes a huge difference in life. To understand the difference between life and death, use free time after work as an example to explain spending, trading, and investing:

In my spare time after work, I spend it on consumption, such as news, Douyin and Moments of friends. I enjoy myself in time, but do not grow up. My money remains the same and my position remains the same. Free time from work, used for trading, pick up extra money, earn some hard money, produce money, did not produce growth, no more money, but the position is still the original position; In my spare time after work, I invest my money and reputation. I believe in the cognition of “go slow and grow the fastest”. I continue to invest in multi-dimensional learning to accumulate my ability and gain growth.

Learning must be a daily required course, must be a day arch a soldier, persistent, there is constant input, there is constant output, continuous precipitation, in the critical moment output problem-solving ability, so as to obtain ability recognition.

Therefore, we must find undisturbed time to invest in our growth. It is a good habit to go to bed early and get up early. It is recommended to go to bed before 12 o ‘clock and spend 40 minutes studying before going to bed. Wake up at 7 a.m. every day and you will have 1 to 1.5 hours of study time.

  1. Career planning

Career planning is not a certain post or role, but the improvement of working ability. In view of the ability required by their own post, the workplace needs the ability, and then use expert thinking, multidimensional perspective to break 3-4 ability, holding 120% of the effort to get the result, or even beyond the expected result, the thing is done, the ability is recognized, the so-called role, the job is just the result of nature. But the number of people who can actually do that is rare, and since they are rare, being rare is your opportunity.

  1. Continuous learning

Many people say programmers make good salaries, comparable to doctors and lawyers. Unlike doctors and lawyers, however, who can accumulate a great deal of experience based on previous cases, and which can be largely reused, programmers, the industry changes so quickly that the accumulated experience is soon no longer applicable.

Programmer self-learning needs to pay attention to the following points:

  • Tools are very skilled at troubleshooting and coding. If you can only try one method in an hour and someone else can try it 10 times, someone else is better than you. Fast is the only way to learn and try new things. How skilled you are at writing demos, asking questions, and using tools will determine how quickly you learn and try new things.
  • Read & document
  • Technology news, technology conferences
  • Do projects, write demos, look at the source code. Try to learn as much as you can on a project. Don’t just stick to what you’re familiar with. Know that what you’re familiar with will soon become obsolete, and it will be too late to adjust once it’s obsolete.
  1. The technical team

In business technology teams, there is a bad tendency for teams to become more businesslike and less technical. Everyone talks business, technical conferences talk business, weekly meetings talk business, weekly papers write business items… The only thing less talked about is the technology itself. This is not to say that the business is unimportant, but that understanding the business and managing the business requirements is the base of the technical person, not the whole thing.

This lack of technical flavor is a great pity for the technical team, and is not conducive to the growth and development of technical personnel. Because it’s hard to imagine a team without technical aspirations developing a robust, maintainable, scalable system. On the contrary, this kind of business code accumulation may realize the business demand “quickly” in the short term, but in the long run, the increase of such bad system will greatly hinder the development of the business and form one black hole application after another, and engineers are trapped between the business demand and bad system, tired to deal with, exhausted.

Here are a few things to consider:

  • Quality of application. Code repetition, cyclomatic complexity, layering rationality.
  • Design refactoring. Error code specification.
  • Technology sharing.
  • Code review.
  • Innovation and efficiency improvement. Automation tools.
  • Code quality. Unit testing, online bug tree.
  1. A technical TL experience

Develop development specifications to lead the team to a unified and standardized development path.

Including naming specification, uniform IDE code template, Maven usage specification, code Commit specification, uniform API specification, exception handling specification, branch development specification, uniform logging specification, etc.

The value of architecture review is to gather the strength of everyone to analyze and see whether there is a hole in the scheme, whether there will be insurmountable major technical problems after the scheme goes online. In fact, it is very beneficial to the healthy development of the project to consider some things in advance as far as possible and question them.

Attention points in technical review: technology selection, high performance, high availability, scalability, scalability, elastic processing, compatibility, security, testability, operability, monitoring and alarm.

Establishing good CodeReview specifications and habits is a very important core thing for a technical team, and a team without CodeReview has no future.

CodeReview concerns: verification of code functionality, coding specifications, potential bugs, documentation and comments, duplicate code, complexity, monitoring and alerting.

A mind map summary of the book’s contents.

Of course, Talk is cheap. I hope that I can use the above experience in my work in the future to continuously improve myself and avoid being eliminated by the industry.