Your first three years are the fastest growth years of your career, when you’re passionate, focused, and prone to forming good habits. In our company, some students quickly become technical experts in a certain field in the first three years, while others may stop there. Here’s how to become a tech expert in three years.

Author: Qing Ying

Learning methods

1. Master a good learning attitude

2. Master systematic learning methods

3. How to internalize knowledge into ability

4: Breadth and depth of choice

Actual combat skills

1: Coding habits you need to learn

2: How did you grow as a developer in the business team

Have a good learning attitude

Empty cup mentality

First of all, we should have an empty cup of learning mentality, rather than arrogant and complacent, complacent, empty cup can hold more things. Must first learn to take hundreds of long, with the appreciation of the perspective team colleagues or school students, appreciate the advantages of each colleague or classmate, and then learn their advantages, every colleague is its ability to good at, such as some colleagues technology ability is strong, you can observe how he learning for him (or consult your method of study), some schoolmates are good at resolve problem come from line, So watch how he solves the online problem, what’s the idea? How he asked for help if he couldn’t. Some students are good at using IDE or MAC shortcuts, so learn from him to improve work efficiency. Some students can quickly understand the business knowledge, observe how he did it, how they reached his level. Communication, problem solving and planning skills can all be learned from colleagues.

Challenge the authority

When you read a knowledge point from a book, or hear a knowledge point from others, you must challenge and question the correctness of this knowledge point, otherwise the knowledge point you learn may be wrong. First guess with logical thinking, then actual combat testing, must remember that practice is the only criterion for testing truth. For example, if a colleague says that this SQL and this index are the fastest, we should first think about how the colleague’s conclusion is reached, whether it is based on historical experience or tested. If we have no experience, we should add this index and run the SQL to see the execution plan and execution time, and then try other indexes to see if it is faster. By analogy, is concurrency necessarily faster than serial? Is unlocked faster than locked? A lot of conclusions are generated in a specific scenario, be sure to verify their own hands-on practice.

Keep learning

Some students may work for five years, but study for less than a year. Learning technology can not be eager to achieve, as long as the learning method is correct, quantitative change will certainly cause qualitative change. When I was in university just learn JAVA, can not learn how to, but keep learning for several months, every day to see teacher zhang JAVA video teaching, to buy books, in accordance with the code in the book knock one line of code, sleeping during the day and night to learn and write code, write the dormitory to turn off the lights when typhoon shelter for a night, back to the dormitory to sleep at 6 o ‘clock in the morning, learned after a certain period of time, Suddenly the light fell on me and I entered the door.

In the work, I have spent a month of time to learn the implementation principle of AOP, learning a variety of ways to achieve the principle of AOP, and wrote several ways to achieve the code, although spend a lot of time, but still fresh in mind now, for troubleshooting problems and learning other knowledge are very helpful.

To keep learning, the learning environment is very important. If you want to learn, but you are not in the study state, you can consider changing the study environment. I often go to Starbucks to read and study. I’ve heard that some of my colleagues take a day off on weekends to attend self-study sessions with university teachers.

Do the thing essence

The harder you push yourself, the faster you make progress. Want to have a strong doing things perfect state of mind, when I began to work, always quick and master of none, do things done enough meticulous, always wanted to quickly take out results to prove himself, but instead proves nothing, technical ability also improves, the lack of technology, also nothing important influence in the team, began to exercise once, doing things behind the mentality and the method. I have observed that many people are good at doing things quickly, but there are fewer people who do things well and delicately, but the result is that ** on the road of excellence will quickly improve their ability **. For example, if a function is implemented with 100 lines of code, consider whether it can be implemented with 10 lines of code to reduce operation and maintenance costs and improve coding efficiency next time. Reference libraries such as GUAVA, extract public methods, and use new JDK8 features. After the pressure test of the system method, the single machine can only withstand 1700QPS. We can think and practice whether the program can be optimized to improve QPS and reduce the number of servers.

To do something well is to force yourself to put more thought and time into it. A technical genius shared a lesson with me, which I think is very good. The boss assigns you a task, ** you have to spend 150 percent of your energy to achieve 100 points, so that you can get 80 or 60 points from the boss.

Master systematic learning methods

If the knowledge learned is not systematic, then problems will be very difficult to solve. Some students will appear these situations, such as coding problems encountered baidu search, if baidu can not find the answer, the problem can not be solved. For example, if you want to use a certain technology point in development, you will learn the API. After tuning the program, you will no longer study it in depth. If the program encounters other problems, you don’t know how to solve them.

The above situation I think is called ** point learning **. Encounter a problem, solve a problem, need a skill, learn a skill. So how to form systematic learning from point to surface, from surface to body?

First of all, to determine the field of knowledge to learn, need to achieve the learning objectives, in view of the goal to make a learning plan, just like you want to write a book, first write out the catalog, and then according to the knowledge point on the catalog step by step to learn, and finally the knowledge points related to form a systematic knowledge system. When studying, you can make a weekly plan, such as what to study in the first week and what to study in the second week.

For example, I recently studied artificial intelligence, and the learning steps are as follows:

1. Basic knowledge of advanced numbers: linear algebra, calculus and statistics. Recently at Texas Hold ’em, I used statistics to calculate the probability of winning or losing.

2. Fundamentals of ARTIFICIAL Intelligence: Buy several books on the basics of artificial intelligence, such as Basic Machine Learning Tutorials and Python Machine Learning.

3. Framework: TensorFlow, etc.

4: Actual combat: Find an application scenario in your work and apply the knowledge you have learned.

How is knowledge internalized into competence

In his book Outliers, gladwell argues that 10,000 hours of exercise is necessary for anyone to go from ordinary to world-class. How long is 10,000 hours? It takes about three years to study 10 hours a day. But a lot of people work for five years or more, and yet very few become world-class masters. Readers can think about this for themselves first. Here’s what I think.

Growth must go through the process of internalizing knowledge into ability. Knowledge is remembered with the brain, and ability with practice with the hands. We’ve probably read a lot of books and listened to a lot of technical lectures and videos in our working years, but listening and watching only helps you retain knowledge that doesn’t translate to your ability.

Listening and seeing is only the first step. What is more important is practice. Through deliberate practice, you can internalize the knowledge of hearing and seeing into your ability.

Deliberate practice is purposeful practice, planned first, and then to practice. First, set yourself a goal, which is an effective guide to learning, and then use the 3F method:

Focus on the task in front of you. Stay focused during the learning process. Try the Pomodoro Technique.

2. Feedback, to realize their own shortcomings, after learning to reflect, think about what aspects of their shortcomings, why,

3: To Fix my shortcomings.

Constant practice and thinking can change the structure of the brain. The brain is like a muscle. The more challenging it is, the more impact it has, the more efficient it learns, and the more breakthroughs it can produce.

Breadth and depth of choice

The technician’s learning path has two dimensions, depth and breadth. Many programmers have this question: is it deep before broad, or broad before deep?

After so many years of learning and thinking, MY advice is to go deep first and then to broad, because when you learn a certain depth of technology, you will have the ability to understand by analogy, and the breadth of your own grasp will naturally have depth. However, in the actual learning process, depth and breadth are interspersed with each other. For example, when learning concurrent programming, I first learned JDK source code, then started to read JVM source code, and finally looked at CPU architecture. In the process of gradually in-depth research on technical points, the breadth has also been improved.

Therefore, no matter what kind of learning method, learning attitude is the most important. In breadth learning, in-depth research attitude can achieve a certain depth. In depth learning, active learning of relevant technical points can also be broadened.

Coding habits you need to learn

Programmers should learn to use technology to improve efficiency. A few common tools are using tools, keyboard shortcuts, and scripting.

1. Use tools

If you’re a technician, use a MAC as much as you can. Using the command line is faster than finding a 10 by 10 button in 1024 by 1024 pixels. IDE uses IDEA, which is smarter than Eclipse. The command line tool uses iTerm and Terminal in IDEA. Use MacDown, a MAC client tool, to write articles on the left and show them on the right, which is much more convenient and fast than Word and other tools. Sometimes I use the button Sprite to configure scripts to solve work problems, such as executing tasks by clicking on our system. There are a lot of tools out there, and anyone can try anything that improves productivity.

2. Use shortcut keys

MAC, IDEA, and Eclipse have many shortcuts to learn, such as via IDEA on the MAC command line. Quickly open the project through open. Quickly open the folder, extract a piece of code into a separate method through shortcut keys in IDEA, and quickly generate getter setter methods.

3. Use a scripting tool

When we do a repetitive task manually, we should first consider using tools to help us finish it automatically. If we do not have similar tools, we can write a script to achieve it. In this way, we can not only solve the problem quickly, but also improve our technical ability.

For example, I often publish jars in two Maven repositories, so I write a script to implement the deployment. Sh code is as follows:

cp pom.xmlpom.xml.bakrm pom.xmlln -s pom-2-deploy.xmlpom.xmlmvn deployrm -rf pom.xmlcp pom.xml.bakpom.xmlrm pom.xml.bak

How did you grow as a developer on a business team

I have been working in the business team for development, and the main ability I have improved in the business team is business abstraction and architecture ability. Based on business scenarios, I have been constantly thinking about how to quickly support the business and reduce operation and maintenance costs through reasonable architecture and business abstraction. At the same time, I exercised my technical ability in this process, such as writing some technical frameworks to quickly support the business and achieve technology-driven business.

Configurable mode to support services

Design the domain model of the business, make the domain model that does not change with the business logic into system capabilities, and make the function that changes with the business logic into configurable, so that the new business can be supported by configuration or a little development.

When doing client background functions, there are many kinds of data to be displayed, and each data display may take several days. Therefore, a general technical framework is designed to display various data in a configurable way.

Write frameworks to solve business problems

In my previous company, I often did some CRUD business functions, so I developed a fast CRUD framework jDBcutil. By configuring entities to generate SQL statements, I realized that as long as the subclass inherits the parent class, it automatically has THE CRUD capability. Behind also wrote the generation of CRUD page code procedures.

Currently, the TITAN framework that our team is working on solves the problems encountered in the multi-person development of volatile business systems through modular development.

Technology-driven business

In the business team, must constantly thinking about how to use technology to support rapid business support, configuration is a kind of idea, but some function configuration complexity is higher, the configuration and verify the amount of work, may need a week’s time, so can reduce artificial configuration, to realize the automatic system configuration, and so can the research of artificial intelligence, Through the way of artificial intelligence, the system tells people what needs to be configured, and then gives people to confirm, which can greatly reduce labor costs, faster support business.