The author | a push Java director at large


Mr. Tech often hears jokes

Crowded subway every day

I work for the landlord every month

Daily bugs changed


but

Ten years of busy but not three years of colleagues

House prices are rising year by year

A promotion or a raise is a long way off

Why do you work hard and get no results?

Why aren’t you competitive in the workplace?

Why are you always left behind by your peers?


It’s not that your co-worker is smarter than you, it’s that you don’t have the right tricks of the trade. To this end, Mr. Tech specially invited a legendary excellent “colleagues” — a push Java director Xiaoyao, to teach you about the workplace overtaking, bid farewell to the secret of handymen.


Only one year after graduation from Xiaoyao University, I assisted the supervisor to undertake team management tasks. After working for two years, I began to independently take charge of the basic push line of the core technical team; After working for three years, I was officially appointed as the Java supervisor of basic push line of B2D R&D Department. Now I am responsible for managing a core technical team of dozens of people. Xiaoyao summed up the workplace sentiment into four points: technical knowledge system construction, career planning, thinking mode change, emotional adjustment and control.


(The following is the personal share of Carefree)

Construction of technical knowledge system

During the interview, I often ask people how to build their own Java learning system to help them master relevant knowledge faster and better and apply it to their work. However, as far as the interviewees are concerned, most of them have not given much thought to this, their answers are hesitant and their knowledge system is incomplete. To this end, I suggest you may wish to start from the beginner, advanced two aspects, to improve the full range of Java learning ability.


beginners

Beginner’s advice is to start from the basics of learning the language. In the case of Java, not to mention design patterns, the Java Virtual Machine (JVM) is essential, and understanding the underlying running logic of the JVM can be a great help in writing good code or analyzing problems. There are also some basic package source code learning JDK is also a good example of the establishment of code writing style and the use of class library proficiency will improve. Next, learn about common framework components, such as Spring and Dubbo in Java. Others are middleware learning that Internet companies use today: Redis, Kafka, ZooKeeper, RocketMQ, etc. Learning these framework components and middleware, can not stay on the surface of the use, the internal structure and principle must be clear. Suggest technical personnel go deep to see the source code.


In addition, regular review is also essential. A bad pen is better than a good memory. Previous experience and scientific research, such as the Ebbinghaus forgetting curve and the Learning pyramid, suggest that we learn better by taking notes regularly. This habit needs to be maintained for a lifetime.


The following Java books are the ones I found quite good in the process of working. From getting started to becoming proficient in Java, I will have different feelings every time I read them, and I recommend them to you.


Design Patterns: This book is a collaboration of four internationally recognized experts in the field of object-oriented software. This book deeply analyzes 23 object-oriented design patterns, summarizes the most valuable object-oriented design lessons for the reader, and extracts a set of beautifully designed and articulate software design patterns that can help in a practical environment.


The deep understanding of the Java virtual machine “: as a Java recognized classic and super best-selling books area, the book by approached Java, automatic memory management mechanism, the garbage collector and memory allocation strategy, virtual machine performance monitoring and fault handling tools, tuning, case analysis and the actual combat of five parts, analyzes the working principle of the JVM.


“The Art of Java Concurrent Programming” : This book deeply analyzes the most core technologies in Java concurrent programming, such as JDK source code, JVM, CPU, etc., and summarizes the framework, tools, principles and methods of Java programming for readers. It has important guiding significance for Java practitioners in how to apply these core technologies well.


The advanced


I understand that the progression is no longer in the language code, you need to be responsible for the overall performance of the program: how to improve performance? How is high availability implemented? How is the service degraded? How to deal with online problems? If you have already started thinking about these questions, congratulations, you have reached this stage. Not only do you need coding skills to advance, you also need to master the following:


1. Running status of the program service: Add monitoring, alarms, and logs to the service program to help it understand the running status. Constantly observing the actual operation of your program can help eliminate hidden problems and make it easier to analyze and quickly find solutions to unexpected problems.


2. Computer foundation and operating system: mainly including CPU scheduling, interrupt, memory mechanism, I/O mechanism. Although more than half of those who study computer science have studied computer fundamentals and operating systems, many do not have a deep understanding. In view of the actual problem solving process, we often encounter computer foundation and operating system related problems, to summarize the review, will have a new understanding.


3. Network knowledge: this aspect includes TCP/IP protocol and model, common network problem analysis tools (tcpdump, Netstat), common proxy and load tools (nginx, LVS, etc.), DNS and domain name service, CDN service, etc. Having this knowledge will give you more inspiration and direction in solving problems and designing solutions.


4. Online hardware environment: You need to be familiar with the performance specifications and tuning parameters of Linux nics, CPU core frequency and performance, file system tuning parameters, memory policy adjustment parameters, and the network architecture of the equipment room. We use these a lot in performance tuning.


Plan your career

Fitness cognition

Nowadays, the position of programmer is popular, and many new graduates majoring in machinery, chemical engineering and water conservancy are also pouring into this position. However, many people who choose a career as a programmer are not sure whether they will fit in.


In my opinion, code ability is one of the essential basic abilities in the future, and it is absolutely no problem to work for a few years. But as you go along, you can start thinking about things like: Do I get the satisfaction out of coding? Do I fully understand the code I’ve written and the projects I’ve maintained? Will I take a moment to look at the deeper principles of technology used in previous projects? Is it true that every time you pass requirements and do implementation, you are just satisfied with the implementation? If your answer is still no after two years, I think you can consider transferring.


Short term planning

For beginners, the first three years are more critical, recommended to do the following:

1. Solid technical foundation, refer to the technical knowledge system construction part mentioned above.

2. To expand my knowledge and improve myself, take the initiative to contact various business departments with an open mind. Of course, this is to continue to maintain the future.

3. Actively participate in the analysis and investigation of all kinds of problems to exercise their problem-solving ability.


Long-term orientation

Long-term positioning is generally divided into several types: technical experts, technical architecture, and technical management. Below I have listed three essential positioning qualities, you can often think about their own development direction after reading.


Technical expert: have a certain or many aspects of expertise, can very quickly solve the problem that ordinary people can not deal with, or the code ability is super, often write high performance high reliable code of partial bottom;


Technical architecture: I am very familiar with various frameworks and architecture modes in the world, and have my own practical architecture experience. I am good at dealing with all kinds of problems in the system, and I have a strong understanding of how to optimize the system to achieve what goals and have many solutions.


Technical management: Fully understand the direction of the team with a strong sense of responsibility, familiar with the strengths and weaknesses of team members and good at using them, can help people grow and lead people to succeed.


Paradigm shift

This is one of the things that I feel strongly about at the moment, and it’s one that everyone in the workplace needs to be aware of. Programmers as a special profession, most of the time in the face of the computer thinking to write code will not consciously too immersed in their own code world, feel that after writing their own code will rest easy. The following several situations to share with you, I hope you take warning.


1. When the overall scheme involves multiple departments or multi-person collaboration, the project operation is often unsuccessful due to the lack of several interfaces implied in product interaction, or the project operation fails due to the vague definition of function implementers.


2. When there is a problem with the online program, they do not have subjective initiative. They think that they do not know enough about it and worry that they cannot solve it, so they rely on others’ thinking and troubleshooting. I find this particularly common in interviews. When answering the online application screening questions, many candidates will say that their supervisor or someone else solved the problem, and they do not know the relevant problem.


3. Only satisfied with the job, not enough personal ability and charm to the team.


4. Do not understand the overall business, only focus on the code operation logic, do not know the role in the overall business. This is more common in longer business chains.


5. Optional tasks that don’t feel relevant to you and don’t think about what you’ll get out of doing them.


It’s important to make a clear distinction between your goals: writing code for the comfort of the moment, or wanting to contribute to the project or team and grow for yourself. If you think the latter, then you need to examine whether you can be more proactive in using your abilities to improve yourself rather than thinking that you can do without me.


I have heard a saying before that foreign programmers are more concerned with doing a good job in products, while domestic programmers are more concerned with doing a good job in technology. Therefore, many foreign companies can become evangelists and promote and follow up their own products, services or open source projects without operation or sales. I also think that “tech evangelism” is a great way to do it and a very growth mindset.


Emotional adjustment and control

When I just graduated, I was also ignorant of some things. At the beginning, I had to learn a lot of new things. I was not familiar with the language, and I often made mistakes when making small tools. Later, when I began to take charge of key modules and gradually integrated into the team, I began to get into a good state after my achievements were recognized. Looking back, my ability to work under pressure helped me a lot. Why can’t more than 80% of technicians grow up fast? That’s all due to poor stress tolerance. Only by resisting pressure and not being defeated by it can you achieve success.


Recently, I participated in a training and learning, which made me realize that this is actually determined by people’s emotional style. If you’re interested, check out the Emotional Life of the Brain, which covers six emotional styles, the ability to regulate emotions (also known as resilience) can help you a lot when you’re immersed in negative emotions.



conclusion

Internet age, spelling ability not spelling qualifications. In order not to be eliminated, improving yourself is the key. There are two key points in Mr.Tech’s career experience: the insistence on building a complete technical system and the willingness to take on more responsibility. In the exercise of technical level, slow is fast. Only when we have a solid foundation can we apply it easily.


In addition, workplace attitude is also important. In the case of completing their own work, programmers can take the initiative to care about the progress of other projects, sensitive to find others in the work of their own can help, put forward suggestions for improvement. In the process of solving problems, you will become more competent, which will further increase the speed of problem solving, which in turn will push you to solve more important problems.


Finally, Mr. Tech hopes that in the remaining two months of 2019, you can speed up your pace and improve your career skills to better meet the arrival of 2020: Say goodbye to confusion! Goodbye hair loss! Goodbye single!


welfare

On the way to career growth, sometimes there is a bad kick in the door. In addition to sending you the secrets of promotion and salary increase, Mr. Tech has also arranged a series of classic Java books which are well received by technology masters. Eleven lucky fans will be selected and each will be given a copy of “Design Patterns” or “Deep Understanding of Java Virtual Machine” or “The Art of Java Concurrent Programming” or “Practical Java Concurrent Programming” or “Java Programming Ideas”!


Pay attention to the public account of “Getui Technology Institute”, the background reply [Java] to get the entrance of the lottery, you can participate in the lottery.



Drawing time: November 11, 2019, 11:11, the system will randomly draw 11 lucky fans.

How to claim: Please fill in the receipt information in the lottery assistant within 24 hours, we will send it out for you within 7 working days.

Note: The right of interpretation belongs to Jitui.