The Evolution of My Technical Knowledge System
Broadly speaking, my understanding of technology and the construction of my own technical system went through three iterations between 2019 and 2021.
In 2019, I had just started looking for internships. I kept looking for interview questions because I wanted to improve my chances of passing interviews. From the perspective of interviews and learning, I divided technology into programming languages (Java basics, collections, multithreading, and the virtual machine), databases, computer networks, operating systems, data structures and algorithms, design patterns, scenario design, and several other areas. I kept filling in these areas and improved considerably; I also received quite a few offers.
After my internship ended in 2020, I had gained a little work experience and began to rethink the construction of my technical system. The problems I encountered at work were mostly at the application layer, so they could no longer be categorized according to the old logic. I also felt that the original categories were too textbook-like and needed another level of abstraction to better organize the articles I summarized at work. I therefore divided technology into five areas: scenario practice, foundational knowledge, architectural thinking, source-code analysis, and lessons from pitfalls. This covered everything from high-level architecture to fundamental technology and programming techniques.
After graduating and moving to Hangzhou for work in 2021, I encountered more and more business projects, and my understanding of technology became more business-oriented. The old system was mainly a way to categorize articles, while I wanted to build a unified technical methodology. So, from a development perspective, I divided technology into two core parts. One core of business development is practice, including micro-level programming practice and macro-level architectural practice. The other core is thinking: extensibility, high performance, high availability, and the consistency problems that may arise among them.
My technical system is still immature. I wonder what it will evolve into after 2022 ends….
Attached: a large diagram of the third-generation technical system (under construction)
2023-01-15 update:
There was still a lot of business work in 2022, and I also began to take responsibility for developing and operating a product, so I learned quite a lot. To be honest, however, I was exhausted from responding to changing requirements and produced relatively little in the way of distilled ideas or useful material. The overall methodology remained consistent with 2021; I mainly expanded the part about macro-level architectural practice and learned more about it. I hope to organize and summarize these things in 2023.