Tutor: James Golpao College CEO, 10 years of industry experience, 7 years of Internet work experience, worked in HP, Dianping, Internet finance industry. Three years of experience as an interviewer, with rich teaching and practical experience.

Programmer **** How to plan for the future?

** Maruko: ** tutor, I just worked for less than half a year, and now I am working in a small company for CRUD every day. I feel that what I learned in school can not be used in my actual work. What efforts should I make to break the current situation?

James: As a matter of fact, the career of a programmer can be divided into four stages simply. You have only worked for half a year, and some knowledge is really lacking. Today, I will introduce the whole career of a programmer to you, hoping that you can get some insights from it.

The first state: don’t know you don’t know

This realm is generally just 1-3 years of internship or employment programmers, in a word, is not afraid of the tiger, it can be reflected from many aspects. First of all, your resume is filled with Java, Spring, and Android.

If you take a hard look at yourself and find that you are not proficient or skilled in certain skills and knowledge, don’t write blindly, be realistic. Just entered the workplace to have their own way of learning, learning methods and concentration, in fact, this stage of programmers do not need anything will, but will understand!

If the interviewer asks him a question that he doesn’t know, he will recite all the skills that he thinks are awesome in his mind: maybe this, maybe that, maybe this. I think there should be one answer is right, teacher you look at the choice.

The above behavior reflects the knowledge of this kind of programmer is not combed very clear, very perfect. What they should have at this stage is the ability to gradually sort out his body of knowledge very clearly and perfectly. As a programmer who has worked for one to three years, it is a very important direction for me to consolidate my technical foundation.

02Second state: knowing that you don’t know

Most programmers with 3-5 years of employment are in this position. What do you mean you know you don’t know? Is at least know this technology I do not understand, this technology I do not understand, know that there is a day outside the sky, people outside someone. After several years of work experience, they have gradually known what knowledge is important but they have not mastered, know that they do not know what to do? Then we must improve our knowledge system.

In the case of Java, the first step is to improve the Java base enhancement. JAVA foundation not only includes reflection foundation, generics foundation, collection class source analysis, annotation principle, as well as network IO, JVM, high concurrency, regular expression, Linux foundation, because all Serve is Linux operating system, so Linux is also a very important foundation point. In addition, software design can not be ignored, about this aspect, we should contact some design principles and design patterns.

With the above foundation, you can start to understand Spring. If you want to find a job that is more competitive than others, you need to have certain interview experience and certain use experience at this stage, for example: Spring, Security, Quartz, Lombok, Swagger, Shiro, source code, Spring Boot, etc. With these skills, your abilities will stand out relative to your level. Spring Boot is a great tool for managing overall configuration and simplifying configuration based on Spring. If you want to go out and find a good job, the foundation listed above must be strengthened.

** if you can read the code but you can’t write it, you only know how to copy the code?

**James: ** Actually there is no problem with copy code at the beginning, the key is to do it. In the enterprise, Git is used to synchronize code. Git do you understand? What is Git used for?

** meatballs: ** understand.

**James: ** Please tell me what git is. If this is an interview, you can explain git clearly, which also reflects your ability.

Version control tool: Version control tool.

**James: ** What are version control tools? What version is controlled?

** balls: ** controls the version of the code.

**James: ** Why should the version of the code be controlled?

** balls: ** is likely to be revised.

**James: ** Right, so why have a tool to control it? Why do we do version control? It’s really because we have to work as a team, a company is not made up of one person, it’s made up of many people, so it needs to work as a team.

For example, when we give lectures to our students, we will talk about this: the whole process of a company’s product from development to the end, the technical term is called Git-flow. We answer the question to answer the principle to answer the detail again first, do not come up to complete the detail, complete the detail to the time when the whole wrong is not good. This is to tell you that we need to know what we don’t know in the process of learning.

03The third state: know that you know

This level is generally 5-10 years of employment of programmers. They already have enough knowledge and skills in the relevant field. I once had a college professor who said something to me that has stuck with me all my life. A person’s cognitive is like a circle, when you know that this circle will be the more, the greater the this circle more and you will find that you will contact area, the greater the contact area, the greater the didn’t know I know what you know what I don’t know, your knowledge will expand unceasingly, when the more you know, * * * * is, the more you will know that you don’t know.

04The fourth state: not knowing that you know

Programmers who reach this stage are really good, and usually have more than 10 years of experience as a programmer. There is a saying in wulin that there is no sword in hand, but a sword in heart. For example, learning design patterns, I often tell my architect class, how much do we need to learn design patterns? Learn to forget, not literally forget. It’s learning and finally learning and forgetting. What is forgetting? I have all the design patterns, and I don’t know what the design patterns are, but I write code that is all patterns. This is called not knowing that you know.

So most of our programmers may stay in know oneself don’t know and know oneself know these two levels, so we should **** ceaselessly strive to go up, achieve a don’t know oneself know this this realm, in this rising process need very much experience!