When we stand at the origin of the road of technology, the future may be full of confusion, there are many different possibilities; We may become Web/(large) front-end/terminal engineers, server architecture engineers, test/operation/maintenance/security engineers related to quality assurance and availability assurance, big data/cloud computing/virtualization engineers, algorithm engineers, product managers, and so on. The series of articles/books/videos/codes are the marks of my stumbling along the road, including my technical vision, knowledge management and career planning as a programmer, aiming to improve the learning ability and practical development efficiency of developers.

This guide is the navigation and index of the knowledge warehouse deposited by the author in different fields, so that readers can quickly find the content they need. We can also do keyword searches on the author’s homepage, public account (WIP), or using a local tool like Alfred-SG. I see a long way to go, I am searching up and down, I also hope to give some help to all students who have met the traces of the author, in the vast galaxy can smoothly reach another shore. Just Coder, Travel in Galaxy, follow a bear’s tech road account and let’s go.

Read, take notes and code

Bo view and about to take, thick and thin hair. In this era of knowledge explosion and lifelong learning/fragmented learning, one of the problems we face is how to effectively learn, not only to effectively balance breadth and depth, but also to truly accumulate and improve their research and development effectiveness. As far as I am concerned, the following three questions are always on my mind:

  • What should you learn? What kind of tech world is this? What are the peaks and paths?
  • How to overcome ineffective learning caused by forgetting?
  • How to learn without fragmentation?

Basically, it is necessary to expand the breadth of their knowledge, improve their knowledge depth, temper their programming ability. The so-called breadth of knowledge is the ability to choose appropriate solutions for practical problems, and broadly speaking, it is also the performance of vision and pattern. It is not limited to a particular technical direction or industry field, but requires a certain understanding of traditional/popular languages, tools, frameworks, libraries, services, etc. Be able to identify the pros and cons of each solution and describe relevant principles at a High Level. The expansion and maintenance of the breadth of knowledge needs to be built on the huge amount of reading and knowledge precipitation ability.

Awesome Lists for us to prepare a fine and complete index of technical development learning and practice data, to remove the wheat from the chaff, to retain a heavy; Awesome WebSites, for example, offers a list of WebSites, blogs, and more worth reading. Awesome CS Books Warehouse is a good place to start. If you feel like you’re losing your way with too much fragmented knowledge, Awesome CS Books Warehouse is a good place to start. Read in depth and study selected books, courses, and other systematic content in various fields.

As the saying goes, a good memory is better than a bad pen, when we read more, naturally also want to start recording; The author believes that the beginning of recording should have its own knowledge system. In their own knowledge system to follow the notes, regular sorting. Only by establishing a knowledge map in line with one’s own cognitive mode can one effectively precipitate knowledge, clarify knowledge boundaries and continuously explore knowledge. Since I got on the bus, the author has devoted himself to building his MindMap, IT technology Map and knowledge architecture, providing knowledge maps, learning and growth paths and interview essential contents in software engineering general, front-end, back-end, DevOps, testing, architect, artificial intelligence engineer and other fields, and has maintained and updated them for several years.

At present, the author chooses MarkDown format for recording, and stores all notes in Github- Document Notes for version management in Git mode; The editor uses VSCode directly, and Git applications like GitGo/WorkCopy are also used for mobile editing. These notes are not only the externalization of the author’s own technical vision and cognition, but also similar to the memory of peripherals, which are paginated and loaded into my mind when needed to cope with the era of knowledge explosion. Awesome CheatSheets is a great way to quickly grasp or review the syntax or usage points of a language/framework/tool. My Tech Road is a summary of the author’s years of learning and cognitive changes.

Linus Torvalds also said: ‘Talk is cheap. Show me the code.’ After reading and taking notes, you should start coding. The so-called programming ability is not only the ability to Write Code, but includes reading, writing, understanding, refactoring, abstraction and other aspects, which is the so-called Code management/control. One of its external performance is to be able to use the appropriate language at any time and anywhere to achieve some functional requirements without blocking, for common syntax, interface, algorithm, design mode can be done at will, easy to use. Programming ability is an important guarantee for improving research and development efficiency, and it is also one of the goals and hobbies that the author should pursue in his life. The author’s programming ability is weak, daily development, especially in the multi-language and multi-framework scenario, often need to constantly interrupt, search to continue the work, which also makes me very upset.

The previous article focuses on how to broaden the technical horizon and pursue the breadth of technology, but it should be borne in mind that the depth of technology is the cornerstone of the breadth of technology, just as the debate of Daoism in China has been commonly used since ancient times. As Richard Feynman put it: “What I cannot create, I do not understand.” The so-called depth of knowledge is to be able to have a deep understanding of a certain aspect, and achieve mastery, insight, can be arbitrarily expanded, optimized, innovation and other transformation or transformation. This aspect is more different, different fields and directions for depth of the definition and mining direction is also very different.

We need to build some wheels from scratch so we can understand the inner workings of the framework/library/platform we’re using and fix them quickly when they break down. In almost every chapter that follows, we’ll mention some of my own wheels.

1. Programming languages

Programming languages are the foundation of everything, and as Steve McConnell mentioned in Code Complete, we should Program into a language instead of Program in a Language, Choose the right programming language for your needs, not the language you know. In the knowledge map also includes public knowledge gossip across Programming languages, the author with a Programming Language related articles in a Programming Language Series | Programming Language grammar foundation and engineering practice in the warehouse, It covers C/C++, Go, Java, JavaScript, Python, Rust, Swift and other common languages, as well as general programming language theory.

The foundation of programming ability training is primarily about data structures and algorithms, as well as object-oriented design patterns, whose corresponding codes are respectively stored in coding-snippets, algorithm-snippets, and design-pattern-snippets. In addition, we can write our own general purpose libraries from scratch, such as Guava & Lodash, which I have integrated into Guash.

On the basis of programming language, we need to consider how to realize the real software system, such as software engineering foundation series development tools /Git chat, software system architecture, software quality assurance and other content, we can also realize some of our own tools, My Soogle, for example, is a collection of tools for building your own search and external service access capabilities. XCompass, on the other hand, is a repository of source code with multiple reading capabilities including a personal home page.

2.WebWith big front end engineer

If you are not familiar with basic JavaScript syntax, it is recommended that you first browse modern JavaScript syntax basics and engineering Practices or javascript-Cheatsheet for basic JavaScript syntax and practice applications.

If you want a quick look at Web development practices, or if you want to check out some listings, you are advised to head over to awesome-Cheatsheets /Web; Or start with the introduction, which includes a brief history and evolution of Web development, data-flow-driven interfaces, modularization and componentization, tool-engineering and back-end separation and full-stack architecture, micro-front-end and big-front-end, operational mechanisms and performance optimization.

Next, you can select modules of interest in the following sections for further reading:

  • Basic chapter: summary of basic knowledge and concepts involved in Web development, such as HTML, CSS, DOM, etc.
  • Engineering practice: Build tools, testing, security, WebAssembly.
  • Architecture Optimization: Componentization, State Management, Performance optimization, PWA.
  • React: In recent years, a variety of technology solutions have flourished in the front-end field. React, Webpack, ES6, Redux, MobX and other common front-end development tools and libraries are introduced in this book to help beginners become qualified front-end engineers quickly. This book is not limited to tool use, exploring the design ideas and architecture patterns behind various technical solutions, and discussing engineering practice, modularization and componentization, quality assurance, performance optimization and other knowledge points that front-end developers need to master in the process of advance from the perspective of front-end engineering. Finally, it helps developers to specify reasonable solutions according to local conditions in front-end development and achieve reliable products as quickly as possible.

In addition to reading, we also need to conduct a lot of code practice, not only familiar with the common framework, but also need to accumulate their own components, frameworks and other functional libraries:

  • Fe-boilerplates are the author’s collection and precipitation of React/ vue.js technology stack and practice in daily work. In order to facilitate the use of developers at different levels/proficiency levels, the author generalized templates into as many projects as possible, including template projects at different levels/complexity from entry level to production environment, micro front end, etc.
  • The fractal components are the application, component library and component development mode summarized in the author’s daily work. In order to ensure its independence and reusability, the author implements components in different ways.
  • Ueact is designed to implement a custom component system from scratch, with multiple harmonizing policies and data flow responses that can be rendered/compiled to multiple components simultaneously.
  • Legoble took his vision for a visual app-building tool with him.
  • Pudding is a collection of Web Automation, multi-dimensional recording, playback and optimization tools.

3. Server architecture engineer

This is the age of the stack, we more and more business to division rather than the front end alone, Backend Series | server application development and system architecture/micro service architecture and the practice carried the author summary and experience on the service end, its contains the server application development foundation, a simple Node. Js full stack architecture, Spring Boot 5 and Spring Cloud microservices practices.

  • Backend-Boilerplates is Boilerplate for Your Server Side(Backend) Application, Java | Spring(Boot, Cloud) | Node.js(Express, Koa, Egg) | Go | Python | DevOps.
  • winter-boot is Another boot for your Java applications like Spring Boot, but Winter is coming.

4. Test/operation/safety engineer

The quality assurance of software system is an inescapable part of server operation and maintenance, which includes the foundation of software testing, DevOps and SRE actual combat, information security and penetration testing must know must know and so on. In practice, we can also refer to:

  • Chaos-scanner Chaos Scanner, semi-automated distributed intelligent network space mapping, management and security detection.
  • Xe-crawler is a distributed crawler that follows the concept of declarative and monitory. It plans to provide various implementations of Node.js, Go and Python, and can crawl heterogeneous multi-source data such as static Web pages, dynamic Web pages, relational databases and operating systems.

Big data/cloud computing/virtualization engineer

Above discussion more is the knowledge of the application layer, and for more of the underlying operating system, database, data processing and so on Distributed Infrastructure related content, are stored in the Distributed Infrastructure – Series | construct Distributed Infrastructure Series, It consists of distributed computing, distributed systems, data storage, virtualization, networks, and operating systems.

As mentioned above, we need to grow in the refactoring wheel:

  • Reinvent-MQ is the Multiple home-made Message Queues, LocalMQ(Akin RocketMQ), PongoMQ(Akin Kafka), etc.
  • Reinvent-DB is the Multiple home-made Databases, Godis(akin Redis), HiSQL(akin MySQL), MemDB, DataGo(akin ETL) etc. Understanding DBs by Reinventing It.
  • Focker is a simplified container implementation of class Docker that is customized from scratch.
  • SparkChain is an accumulation of experiments and explorations in blockchain.

Algorithm engineer

As we discussed the related content of data structure and algorithm, the artificial intelligence is hot now, AIDL – Series | artificial intelligence and in-depth study of actual combat Series contains the mathematical theory, machine learning and deep learning, natural language text, artificial intelligence, engineering practice and deep learning course paper, etc. On the practical side, the code is primarily housed in the Artificial Intelligence & Deep Learning Workbench.

Product manager

The author chose product manager as the last part of the paper, hoping to express his views on products. No matter the libraries, frameworks, applications or platforms we create, or even the articles and books we organize, all should be regarded as products, jumping out of the perspective of God, and considering from the perspective of users. We can start by reading some product manager/User experience books.

The author accumulated much at present, mainly in the Product Series products | myth, the Product manager will focus on the basis of quality first, user interaction experience, document processing, etc. This will be followed by a discussion of project management, generic domain capability building (process engine, CRM, etc.) and an analysis of classic products. Finally, the series will focus on specific industry perspectives, such as e-commerce and intelligent manufacturing.

In many cases, it is also fun to make small products by yourself, such as chat platforms such as MushiChat and some explorings in the IoT field such as chatbot and IoTable.