Don't stop Java programmers at the age of 35, how to make Java programmers go further?

However, due to the nature of the work of programmers, many people may have gray hair since the age of 30. In addition to considering the implementation of complex business logic, they may also consider how they should move forward in the future.

Looking at the curve below, it may be the case in many industries. At a certain age, the value of people begins to slowly decline, but the time for programmers is shorter.
Insert picture description here

As far as the situation around me is concerned, a 43-year-old PhD was laid off by a foreign company. His next job is only half of his previous salary.

A 45-year-old programmer who graduated from a prestigious university came to me for an interview. He only needed a salary of 5K. He was only 30 years old at the time.

Therefore, around the age of 34, it is almost the pinnacle of a programmer, and the later, the lower the value of the programmer.

This phenomenon is not only present in China, but also in Silicon Valley.

I believe everyone has heard the news that the 61-year-old Java father James Gosling could not find a job.
Insert picture description here

So how can Java programmers extend the life cycle?

1: Proficiency in using various frameworks and knowing the implementation principles (such as Spring, mybatis).

2: Principle and tuning of JVM virtual machine, knowing the JVM virtual machine allows you to write code with better performance.

3: Pool technology, object pool, connection pool, thread pool

4: JAVA reflection technology, necessary technology for writing framework, but there are serious performance problems, the alternative is JAVA bytecode technology

5: nio, "direct memory" features, usage scenarios.

6: JAVA multi-thread, synchronous and asynchronous.

7: The realization principle of various collection objects in JAVA allows you to choose a more suitable data structure, the realization principle of hashmap, and the performance problem of capacity expansion.

8: Skilled use of various data structures and algorithms, arrays, hashes, linked lists, sorting trees... In a word, it is either time for space or space for time.

9: Familiar with Linux operating system, essential.

10: TCP protocol, three-way handshake and four-way handshake. If you don't understand, you cannot optimize high-concurrency networks; familiar with HTTP protocol, especially HTTP header, understand the life cycle of session and cookie and the relationship between them.

11: System cluster, load balancing, reverse proxy, separation of dynamic and static, static website

12: Distributed storage systems nfs, fastdfs, tfs, hadoop understand their advantages and disadvantages, and applicable scenarios.

13: Distributed cache technology memcached, redis, necessary to improve system performance, put the content on the hard disk into the memory to speed up, the algorithm is consistent hash

14: The necessary skills of the tool nginx are super easy to use, high performance, basically a server that will not hang, with many functions, and solve various problems.

15: Database design ability, mysql essential, basic parameter optimization, slow query log analysis, master-slave assignment configuration; other nosql databases such as mongodb

16: Middleware. For message push, you can write the message to the database first, push it to the queue server, and get processed by the queue in the push server area. In this way, the message can be put in the database and queue and directly feedback to the user. The push process is performed by the push server and Completion of the counter server, asynchronous processing, link server pressure, decoupling system.

I have here a super detailed P6-P8 technical knowledge map

Friends in need can click: click this! Click this! , Password: csdn
Insert picture description here

If you want to become an architect, you don’t need to understand a lot of technologies. These are the basis and tools for solving problems. How can you provide solutions if you don’t understand these? This is a necessary condition to become an architect.

The architect must also propose the lowest cost design solution to solve the problem according to the business characteristics and the performance requirements of the system to be qualified. A system with hundreds of users will have a small amount of access and a small amount of data. You can cluster and distribute it to others. This is the most nonsense. The role of the architect is to meet business needs first, and secondly to have the lowest hardware network cost and technical maintenance cost.

Architects also need to foresee the solution to the next stage of system architecture according to the business development stage, and consider the upgrade and expansion of the architecture when designing the current architecture, so that it is easy to upgrade; otherwise, the system bottleneck will come and problems will occur. Go to the plan again, or the existing architecture cannot be expanded and throw away and redo, or expand a lot of troublesome problems, which will cause losses to the enterprise;

The so-called architect thinks about the overall thing, how to organize your system to meet business requirements, performance requirements, scalability, extendability, and compatibility. The things that may be involved include everything from hardware to software, which is really hard to say.

If you are determined to build an architecture, first lay the foundation and start from the bottom. Then develop into a variety of technologies and languages, and understand two things, be comprehensive and not superficial. Why don't you know a little bit? If you want to see it thoroughly, you must go as far as possible. Others understand a little bit, you have to be an architect, and you must know a little bit more. For example, if you find that golang is very popular, others may write a helloworld and say that you have played golang, but you must at least try to write a complete application. If you refuse to work hard, how can you get ahead?

In addition, you must have a very in-depth understanding of at least one language. If your goal is java, you will learn to the extreme. As a stepping stone, you must have enough food before you can talk about your ideals. The extreme learning of Java will inevitably involve design patterns, algorithms and data structures, multithreading, file and network IO, database and ORM, and so on. These concepts apply to all languages. Start with a good one to lay the foundation for being comprehensive and not superficial.

The other is to learn from experienced architects and discuss debates with friends.

In fact, the most important ability is continuous learning. Before thinking about whether the new technology can better solve the problems you encounter, you must first know and understand the new technology.

After talking for a long time, architects are often forced to take positions. It's not that you become an architect after you learn this and that. This is not an RPG game.

Finally, there are free Java architecture learning materials. The learning technology content includes: Spring, Dubbo, MyBatis, RPC, source code analysis, high concurrency, high performance, distributed, performance optimization, microservice advanced architecture development, etc.

Friends in need can click: click this! Click this! , Password: csdn

There are also Java core knowledge points + a full set of architect learning materials and videos + first-line interview books + interview resume templates can be obtained + Ali Meituan Netease Tencent Xiaomi Iqiyi Kuaishou Bilibili interview questions + Spring source code collection + Java architecture Practical e-books.
Insert picture description here
Insert picture description here

Guess you like

Origin blog.csdn.net/HarderXin/article/details/110832521