From the future: The original title was “Learning the Front End, How I Learned Three years in One Year.” After the netizen criticism and self-reflection, decided to change a suitable point of the title. In addition, many friends think I am abroad, in fact, I have been in Shenzhen. At present, I also want to enter a better technical team, can do chores.

This brazen title comes from comparisons with other front-end practitioners I know, as well as comments from others. Readers can also look at my other articles and assess my expertise. Of course, I can’t match three years of practical experience in every field. There are a lot of technical stacks I haven’t mastered, such as I haven’t written a small program, and I haven’t used jQuery (I don’t want to learn this anymore, but there are still requirements from employers). There are a lot of things I haven’t done, such as browser compatibility (I don’t really want to be compatible with IE, to be honest). What I want to say is the depth of my mastery of JS language and CS discipline, the degree of understanding and familiarity with the front-end ecosystem, and the ability of knowledge transfer.

I don’t want to brag about how awesome I am, but I want to help people from similar backgrounds. After I posted a few articles on the Nuggets, a few friends wanted to know how I learned how to program so quickly in a year and a half with zero fundamentals. This article is a detailed answer to them.


I. Background introduction

My undergraduate major was international trade, a random choice of major. After graduation, I did foreign trade for half a year. I really didn’t like it. Then I went to work as an English editor. My second job was boring, writing English advertorials for foreign trade journals and advertising for companies. Then do the content of the English official website as well. This is a very uncreative job. Every day in a pile of unfavorable data to find some good data, packaging, deceiving people. On top of that, I couldn’t find the direction to continue to improve in this career. It seemed like there was no difference between doing it for one year and three years.

Later learning front is also by mistake. Because I am doing the content and products of the English official website at the same time, I will deal with the front end. At that time, the front end of the company is to learn UI over, I observed his work, thought that is HTML to write a page structure, and then CSS to do a style, and then use JS to do some effect can be. That’s easy. I can do it, too. Then I quit studying front-end development naked… Later found that I was wrong, but their own pit, tears also want to climb out. What followed was the most difficult period of my life and the first big change in my life.

I started intensive study at the beginning of 2017. I started my first front-end job after the National Day holiday last year, and I have worked for one year until today. Next, I will sort out and share my learning path, learning method and learning resources, hoping to help more people.


Second, preparation

Learning is not just about finding a good learning path and mastering a good learning method. To become an excellent learner, it requires a lot of qualities and habits. I’ve been a lazy person for a long time, with short attention span and poor self-discipline. I’m sure most people do. After realizing the difficulty of learning, I thought THAT I could not give up any more. I felt that I had passed the stage of trial and error when I was young and could not afford to fail again. So I spent a long time adjusting my habits and behaviors. Here are some of the resources that have helped me the most:


1. A book

The Power of Habit. This book made me realize that my bad habits need scientific methods to change, and it is useless to blame myself and worry all the time. Habits change not by willpower, but by cue. And routine, so I moved my study place from my home to Starbucks. Cue is divided into emotion, time, place, last behavior, etc., all of which need to be located and searched by ourselves. Find the cue that triggers your bad habit and change it. Also, have a plan every day, which triggers the expectation of a reward and makes it harder for you to fall back into bad habits. Most importantly, building key habits will make it easier to develop other good habits. For example, once I got into the habit of getting up early, I got into the habit of learning the most challenging things in the morning.


2. A course

A Coursera course called Learning How To Learn is now the world’s most widely attended MOOC. The course is free of charge. Lecturer Dr. Barbara Oakley is a professor of engineering at the University of Auckland. A Slavic language and literature major, she had always dreaded engineering and struggled in math and science until her late 20s, when she decided to challenge herself to study engineering. Listening to her talk about the learning process is the most convincing. Dr. Terrence Sejnowski, another lecturer, is a leading neuroscientist. He will tell you why and how you should learn from the empirical perspective of brain science and neuroscience. So here are some ideas that I’ve applied to this course.


First, the divergent and centralized working mode of the brain

Diffuse mode refers to the way the attention shifts away from the object of work and relaxes, giving inspiration a chance to materialize. Focused mode, of course, refers to intense thinking with full attention on the object of work. When I study, I use the Pomodoro technique, working for 25 minutes with a 5-minute break. Then work two to three hours at a time, go for a walk outside, or play kettlebells at home. When this habit is formed, amazing things can happen. For example, when I was writing an Rxjs app, I got stuck in one place and couldn’t think of a solution. Then I took a shower and the inspiration came to me. And I can’t count the number of times I’ve dreamed up a solution, got up and tried it, and it worked.


Two, exercise more

Dr. Terrence Sejnowski explains why exercise triggers the growth of new neurons in the brain. For high-intensity mental activities, you need your brain to function optimally. I was a fitness fanatic before I started studying (see below), going to the gym at least four days a week. During the study period before I got a job, I also exercised at this rate. After work, I didn’t have time to go to the gym, so I bought a Concept 2 rowing machine and worked out at home in the morning. HIIT (high intensity interval training) is recommended for exercise, which can burn fat quickly and achieve the exercise effect in the shortest time.

Hard pull training


Three, deliberate training

When I was a student, I often neglected to do exercises and thought I knew the answers when I knew them. But actually knowing the answer and writing it down are two different things. Learners are easy to produce the Illusion of Competence. Once they understand the knowledge point, they think they have mastered it. Only their own can explain clearly, it is their own master. Find your own little challenges online (like 100 Days of Code, JavaScript 30), and check out CodeWars and LeetCode (I mostly do codeWars) to reinforce what you’ve just learned.


Four, interval repetition

6 hours a day on a subject is better than 6 days on one hour a day on the same subject. Of course repetition is not simply a reread. I’m trying to recall it, to see if I can remember it. You can use Studies to create and manage flashcards for review. It’s available on iOS and Mac.

There are many more, I won’t list them all. It is highly recommended that you go through the course and figure out what works for you. Chinese version here


A habit

Getting up early. Get up at 4am every morning. I know it sounds crazy, but I’ve been doing it for a year and a half. (There are exceptions, but most of the time it’s not past 5pm, and very rarely, like working overtime, it’s not past 6pm). I used to sleep on my phone until 2am, fooling myself into thinking I was an evening person. It took a month to change habits. Here are some tips. 1. Take supplements. I’m eating Swiss Sleep, an Australian herbal health supplement. I know a lot of experts say supplements are unreliable, but I actually slept better with these, and my Sleep Cycle showed an increase in deep Sleep. 2. No coffee after 2pm and no screen checking after 8pm. 3. Take deep breaths and slow down your breathing before bed. Fourth, I use a Yeelight bedside lamp to simulate the sunrise in the morning. The feeling of waking up naturally is not as annoying as the alarm clock. When you wake up early, you’ll be undisturbed for at least three hours in the morning (I took it to the extreme by uninstalling wechat and leaving it undisturbed for the day). And go to bed early at night, not aimlessly chatting on the phone. From waking up in the morning until 12 o ‘clock at noon, I can complete 10 tomato alarm clocks. There is plenty of rest time on the way.


An APP

Headspace is a popular meditation app abroad. Many people may think of meditation as metaphysical, but it really works. For me, there are two main functions, one is to focus attention and the other is to overcome anxiety. It’s stressful to learn a whole new field without help and not know if you can succeed. And that stress may not necessarily translate into motivation, but can build up and become a drag. Meditation allows me to take a break from these worries and focus. Headspace’s instructions are slow and easy to understand.


3. Learning resources

With all the preparatory work done, it’s time to get down to business. In this part, I would like to share some learning resources that are most helpful to me.

1, the Frontend Masters

As the name of Frontend Masters suggests, those who can teach here are Masters. I have chosen the courses that have helped me the most and explained them briefly as follows:


1, The Good Parts of JavaScript and The Web

The teacher is Douglas Crockford, godfather of JavaScript and author of The Essence of JavaScript. This course covers the history of JS and some important language details, with an emphasis on functions. Crockford believes that functions are the most important part of the JS language. The second half covers how browsers and servers work, as well as network security.

2, (1) Deep JavaScript Foundations (2) Rethinking Asynchronous JavaScript (3) functional-light JavaScript, V2 (4) ES6: The Right Parts (5) Organizing JavaScript Functionality (6) Coercion in JavaScript

All six classes are taught by Kyle Simpson, author of the JS Books you Didn’t Know, we’ll talk about him later. The first course delves into most of the important details of JS, which is the first step to learn JS well. The other courses continue in depth with topics on asynchronous programming, an important part of ES6, organizing JS functional modules (I’ve never written spaghetti code since learning this), lightweight functional programming (with the book, I think it’s a must for JS development), and finally casting in JS.

(1) Webpack 4 Fundamentals (2) Web Performance with Webpack (3) Webpack Plugins System

There are 3 Webpack courses, all taught by Sean Larkin. Technical Program Manager of Microsoft Edge team, member of Webpack and Angular core team, recently came to China to attend the conference of front-end circle. These courses, starting from the basics and working their way up, present the fundamentals of Webpack, the tricks of the trade, and the plug-in ecosystem.

4, Hardcore Functional Programming in JavaScript

The teacher is Brian Lonsdorf, who would have struggled a lot with functional programming. We’ll come back to him later. The course starts with basic function composition and moves on to core functional programming (applications of Functors, Applicatives, Monads, etc.)

4, (1) Asynchronous Programming in JavaScript (with rx.js Observables) (2) Advanced Asynchronous JavaScript

There are two courses. The teacher is Jafar Husain. Netflix UI Engineering team leader, responsive programming expert, TC39 member. The first course started from scratch to write common Rxjs operators, and gradually advanced to DOM event flow processing, network request processing, etc. The second course is an advanced one. Write an Observable from scratch and use it to solve some tricky animation problems. And then we’ll write an application using the course.

6, Advanced vue.js Features from the Ground Up

The teacher is Yu Yuxi. I don’t need to introduce you. In this course, Yu Creek will teach you how to implement the core components of Vue from scratch, such as responsive systems, plug-ins, rendering functions, routing, state management, etc. When I joined my current company, I hadn’t written about Vue, took the course in my first week, and led the team to restructure the Vue project.

There are many excellent courses too many to list. I suggest you explore treasure hunting. In addition, Frontend Masters is a subscription system, which is quite expensive. If you pay monthly, it’s close to $40 a month, but if you pay annually, it’s much cheaper. Discounts are available for Black Friday and the back-to-school season. I booked a year at a discounted rate during back-to-school season.

In addition, Frontend Masters produces a free front-end learning manual every year. This year click here.


2, Egghead

The style of the site is short and concise. Each video is short and fast, suitable for front-end practitioners with a certain foundation who want to recharge their batteries with fragmented time. Many library authors will talk about their work here, such as Dan Abramov will talk about Redux here, Michel Weststrate will talk about Mobx and Mobx State Tree here, all of which are free. The quality of paid courses is also largely high. You can find tutorials for most of the major technologies and popular libraries you want to learn. Ramda, for example, has over 200 apis and is very different from other libraries. How can I use so many apis in such a short time? In addition to the extensive training and subway time spent checking documents, Egghead took hands-on classes. Here are some of the courses that have helped me the most. I’ll cover some of the remaining lessons later in this article.

(1) RxJS Beyond the Basics: Creating Observables from scratch (2) RxJS Subjects and Multicasting Operators (3) Save time avoiding common mistakes using RxJS (4)Use Higher Order Observables in RxJS Effectively

It’s all RxJS, taught by Andre Staltz, one of my favorite tech guys, I’ll talk about him in a minute. These courses range from getting started with RxJS to more advanced operations. These classes will overlap with Jafar Husain’s classes mentioned above, but I feel that learning from different teachers and perspectives will help you to learn more fully. Of course you don’t have to have two teachers on every subject… I just found out that both of the sites I subscribed to had RxJS courses, so I took them all.

Automate Daily Development Tasks with Bash

As a developer, you should have some knowledge of automated workflows to improve your development efficiency. This course covers Bash techniques commonly used in development, both front-end and back-end.

2, Quickly Transform Data with Transducers

I learned Transduce in this class in my previous article on eliminating the for loop.

Egghead also has many advanced CSS courses as well as other big front-end courses such as unit testing, Serverless, and so on. There are also three higher-order functional programming courses, which I’ll cover later.


3, Udemy

Udemy is an online marketplace for all kinds of courses. You can learn music, painting, even Wing Chun… Of course you can learn to program, and some popular programming teachers are really good. Udemy has a formula: $200 courses, often sold quietly at a discount of $9.90. I bought all my courses at rock bottom prices, more than 60 courses in a year and a half, usually during black Friday, Christmas and other discount seasons, and of course Udemy is on sale almost every month. The courses I bought cover front-end and back-end, deep learning, blockchain development, etc. I only learned 2/3 of the front-end course, the rest is really not moving, most of it is impulse spending…

Screenshots of part of the course I studied

I’m not going to go into detail here, but I’m going to recommend three teachers.

One is Stephen Grider. I bought most of his classes. Stephen is good at breaking down engineering concepts with very intuitive diagrams, and he can explain even the most difficult things in everyday language. When I first taught myself algorithms, I had a hard time. Stephen’s algorithm class enabled me to master basic computer algorithms through JS. He also teaches Node, React, MongoDB, and GraphQL, most of which cover both introductory and advanced courses.

The second is Andrew Mead. His teaching ability is also excellent. I learned Node from his course for the first time and gained a lot. In addition, he responded to students’ questions in a timely and detailed manner. His course and Stephen have a high repetition rate. You don’t have to buy both.

Angela Yu’s class is highly recommended if you are interested in learning iOS development. (I did React Native development for half a year, so I learned Native development.) Angela’s lectures are humorous and lovely, and new people are friendly. She seems to have grown up in China and studied medicine in The UK. I was a doctor, but I switched to iOS development and design. The formidable life each has each different ah…


4, Wes Bos

Wes Bos may be the equivalent of North America… Of course, the analogy is inappropriate. I mean, his classes cover a lot of ground and are very popular. If you’re new to JavaScript, take his free course JavaScript 30. Write a web application with native JS every day for a month. Mozilla also sponsored his CSS Grid course to entice developers to use FireFox. You can also take this course for free. He also has paid Node and React classes. Recently, he is preparing an advanced React and GraphQL course. I am watching and may buy it. He also hosts a podcast called Syntax, which is about front-end development, and I listen to it every time. You can absorb a lot of new knowledge by speaking at twice the speed when you are crowded in the subway.


5, YouTube,

YouTube is an amazing place to find the best of every field of knowledge and entertainment. I’ve listed a few front-end and pan-programming channels here.


1, Fun Fun Function

The host’s name is so long that fans call him MPJ. MPJ, who is Swedish, has been working at Spotify until recently quitting to work full-time at Fun Fun Forum. This channel covers a lot of miscellaneous JS and front-end development knowledge. What I’ve learned on this channel is what I’ve learned elsewhere, such as functional programming, design patterns, etc., but learning here is more like relaxing and watching a pro code and problem solving in real time.

2, Traversy Media

The host is very diligent and updates frequently. The content is mostly elementary and intermediate, perfect for beginners. Now I occasionally watch his new tutorials, using native JS to write a dynamic effect, using CSS to write a 100% complete enterprise display page and so on.

3, Coding Tech

This channel is constantly updated with the latest quality talks in the computer industry. Front-end and other areas.


6, making

GitHub references other people’s code to speed up your own understanding. For example, I watch every one of Jason Miller’s popular repO’s (I’ll talk about him later). EventEmitter, state management, asynchronous functions automatically put into the Web worker’s library, Fetch API Polyfill, etc. It sounds quite complicated. He implemented it in five or six lines of code, and published it to NPM as a complete package. You Don’t Need jQuery, You Don’t Need Lodash, 30 Seconds of Code, etc. Repo is very helpful to improve the problem solving ability of native JS. Fragment time can be learned on the phone.


7, JavaScript Weekly

I think JavaScript Weekly newsletters (free newsletters) are something front-end developers must subscribe to, but I find that no one around me seems to know. Few people can stay ahead of the curve without caring about technology trends. Keep an eye on what cool stuff is coming out of your peers and what new tutorials are coming out on the technology you’re looking at. But staring at tech hot spots every day can also be distracting. Once a week, just the right frequency.


Four, influence my technical people

If you’ve read the 10,000-hour genius theory, you probably know the irreplaceable role a good Mentor can play in personal growth. Most people aren’t lucky enough to find a good mentor. Me too. My imperfect alternative is to look at the thinkers and pioneers in the industry and listen to their advice on how they think and work. Here are the tech people who have influenced me the most:

1. Kyle Simpson. He introduced my JS, and he took it to the next level. My entire learning path was influenced by him. As an educator, he can give learners a lot of advice on various aspects. I will follow all his talks and open source projects. Twitter: @getify

2. Eric Elliott. I learned functional programming from him. Luckily for me, when I first started learning programming, I met Eric who started writing a series of functional programming tutorials on Medium. After three months of learning JS, I came across a whole new programming paradigm and was sold. In my opinion, I recommend all JS developers to read up on this series of articles Composing Software so you can listen to an older person who has been writing programs since the BASIC era thinking about the different programming paradigms. Learn why composition is better than inheritance and why JS is good for functional programming. Twitter: _ericelliott

Andre Staltz. He’s a responsive programming expert in the community. If you want to learn Reactive Programming, check out his introduction to Reactive Programming You’ve been Missing. He also wrote a functional responsive framework called Cyc.js. Apart from technology, what impressed me most was his thinking on the relationship between technology and society. One of his missions is to create a decentralized Internet. (Sir Tim Berners-Lee, the creator of the World Wide Web, is also doing just that.) He recently launched an Android app called Manyverse, a truly decentralised social platform. The app is written in React Native and is open source. If you’re interested, take a look at the source code and see how it’s organized. Twitter: @andrestaltz

Sarah Drasner. Sarah is a very nice sister, very easy-going. She is an EXPERT in SVG animation, a CSS expert, and a senior developer at Microsoft. Also a member of Vue core team. She teaches Vue. Js, Advanced SVG Animation, UI Design and more at Frontend Masters. She also posts a lot of development Tips on Twitter. Twitter: @sarah_edo

Wes Bos. just mentioned this one. In addition to giving developers a lot of advice on podcasts, he also shares a lot of development tips on Twitter, JS, CSS, Bash, VSCode, etc. I also used a lot of the techniques he shared in my development and saved a lot of time. Twitter: @wesbos

Mathias Bynens. Google V8 Engineer, TC39 member. He tells developers how to write code from an engine implementation perspective. He will also share details of the V8 project. When I wrote about killing the for loop, a lot of people objected, and some of them just laughed at me. One of the claims is that higher-order functions don’t perform as well as for loops. As a rookie, how can I be brave enough to respond to a challenge from an experienced developer? Because as the engine developers have said, that little difference in performance at the language level is not going to be a performance bottleneck for your entire application. You should focus on writing code that is easy to understand and maintain. Twitter: @mathias

7, Brian Lonsdorf. This guy is a genius. He was shy, but he was always full of wild ideas when he talked about functional programming, which he was best at. If you want to learn hardcore functional programming, it’s recommended to start with him. He doesn’t tweet very often, but when he does, it’s usually worth taking notes. Twitter: @drboolean

8. Jason Miller. He was just mentioned. He is an engineer on the Google Chrome team and the author of Preact. He wrote a bunch of libraries averaging only a dozen lines of code. You don’t have to jump through his code file by file because it’s in one file… He is also active on Twitter. Twitter: @_developit

9. Bartosz Milewski. What a god. I said I was under his influence to force their own suspicions. He has a PhD in quantum physics and later went into software development, becoming a C++ expert and publishing a book on C++. I became an expert at writing Haskell because of the poor design of C++. More recently, I’ve turned to category theory and started teaching category theory to programmers. He studies music theory as an amateur (I know from his YouTube likes list…). . I’ve been scheduling mornings a few months a week to go to his YouTube channel and listen to him talk about category theory (you don’t need an advanced math foundation for this). I’ll talk more about his category theory course in a moment. Twitter: @BartoszMilewski

I’m listening to Bartosz Milewski talking about category theory


5. Functional programming learning roadmap

If you’re new, don’t let this part scare you. This is just my personal technical preference. You can go far without knowing abstract algebra or category theory, but lightweight functional programming, such as higher-order functions, function composition, closures, Curriculation, partial function applications, recursion, memoization, lazy evaluation, and so on, is a must. I included this section because, in addition to being asked about functional programming learning materials, my interest in functional programming is a powerful motivator for me to continue learning. I went from a liberal arts major who failed half of the higher math courses to a programmer who can understand lambda calculus and Church Encoding, which is a great intellectual achievement for me. The sense of accomplishment was something I had never experienced before.

I suggest you find your passion that drives your growth, not necessarily my passion. You can choose data visualization, advanced animation, UI/UX design (knowing both code and design gives you a unique edge), and so on. Those of you interested in the latter two sections should look at the work of Sarah Drasner and Mary Lou.


Tutorial system

Functional-light JavaScript by Kyle Simpson, just mentioned. This book, along with Eric Elliott’s Composing Software, is an excellent tutorial for getting started with JS functional programming. These two tutorials will make it easy for you to deal with the practical needs of functional programming at work. In general, this is about as much functional code as you’ll allow in your project, and any more hardcore code will be difficult for others to maintain.

2, Professor Frisby’s Mostly Adequate Guide to Functional Programming by Brian Lonsdorf He writes code as Dr. Boolean and books as Professor Frisby… By the end of this book, you will know more than 90% of functional programming applications.

3, Professor Frisby Introduces Composable Functional JavaScript author still Brian. Egghead took a class. It’s worth checking out, even though it’s a repeat of the previous book. Brian teaches in animation, which is kind of cute.

4, Learn You A Haskell for Great Good. What makes this tutorial different from other tutorials is that it is written in a humorous language that will make you laugh as you read. There is no functional programming training by default, so the learning curve is smoother for newcomers.

5, Programmers for Bartosz Milewski’s Category Theory tutorial. Video tutorial address. This series of tutorials is for programmers, so don’t worry too much about getting started. However, it is still necessary to spend some effort to find some materials to read in the later stage of learning, after all, category theory is a highly abstract knowledge. The tutorial will use C++ and Haskell for the code section, so you should know C++.


Others worth learning

1. How to Deal with Dirty Side Effects in Your Pure Functional JavaScript After I understood some of the FP concepts, I went back to this introductory article and learned a lot more about why FP was done that way at every step. The real meaning of an application is to have effects, such as from server requests to content to display to the browser, etc., all effects, but functional programming does not allow side effects, i.e., no effects during computation. How can you write a program? This article step by step attempts to solve how to eliminate the side effects in the program, only after calculating the full completion of the re-release effect. This article does not throw away concepts, but uses ordinary code to solve problems. Step by step, you will know Functors, Applicative Functors and Monads before you know it. As long as you know ordinary JS you can understand this code.

2, A Million Ways To Fold Brian Lonsdorf. When I published “How to Kill for loops in JS Code”, one of the objections was that the writing I was showing was not very flexible, and a new requirement would come along and tell me to switch back to the for loop. I understand that some developers are so busy with actual development that learning something so basic doesn’t seem to be useful for development, so they don’t learn to accumulate. In this case, I learned that not knowing the basics of CS limits the imagination. In this talk, Brian introduces F-Algebra and catamorphism from category Theory. It doesn’t matter if you haven’t seen these terms, but if you know, if you understand this talk, you’ll understand that any computation that can be expressed in a for loop can be expressed in a reduce function. Some will also say that reduce is also implemented with a for loop! It’s like I told you to build your house with bricks instead of sand, and you told me that bricks are made of sand.

When writing applications with pure functions, dealing with State is cumbersome. State is an Algebraic Data Type used for State management in functional programming. This course will use a library called Crocks, and after this course you can continue to explore other crocks data types and utility functions on your own.

Safer JavaScript with the Maybe Type Functional programming does not use if else to handle null values, but instead uses the Maybe data Type. Maybe lets you combine functions without worrying about null handling.

The Quantum Electrodynamics of Functional JavaScript: Combinatory Logic and Church Encoding This article only introduces the principle, according to this article, someone wrote two libraries: Church, using JS to achieve Qiuqi coding. Combinators-js, which implements all combinators in JS. Knowing these things isn’t going to help you actually write code, any more than knowing quantum physics is going to help you build Bridges.

Reginald Braithwaite’s blog has an article from this blog. I was going to list everything I’ve seen, but it’s a little tedious. You can browse by yourself.


6. Mistakes

1. Try to learn too much at once. No matter how hard you try, your time and energy are limited and you can only learn so much at one time. I also learned Python and Django before getting a development job, which took a long time and didn’t work well. It was interesting to see machine learning after work, and it took me a while to learn it. My math skills were poor, so I went to Khan Academy to study undergraduate statistics and linear algebra. Later really energy can not keep up, shelved. I might try this again later, but one step at a time.

2. Wasting time learning things that are not suitable for the current stage. Last March when I was taking Andrew Mead’s Node course, ONE day I received an email from him saying that he had a new full stack course and now I could buy it at a lower price. I look at the introduction, a JS framework at the same time to solve the front end and the back end of the database, this can ah, after learning I can do the whole stack. And then I went to Meteor for a month. At that time my JS foundation is not very good, learning this advanced framework is just a bunch of API, after learning has not used, until now has forgotten all.

3, regardless of the needs of the talent market, blindly learn temporarily unavailable technology stack. Before I found a development job, MY study period was relatively long, mainly because I always felt that I had not learned enough and had not mastered many things. But some of the technologies I learned back then, such as Rx.js and GraphQL, were not required by most employers. While I don’t regret learning these two skills, I don’t think I need to put so much pressure on myself before I even have a job. I think few employers would require a newcomer with no working experience to write Rx.js and GraphQL, and there are few companies in China that use these two technologies.


What to learn next

1. Haskell and Category Theory. I’ve only scratched the surface of the iceberg. Learning Haskell is just watching tutorials, writing very little code, then trying to write some simple applications with it.

2. Data visualization. I have been taking THE D3 course in Frontend Masters off and on, but I haven’t practiced my hands yet. D3 also has too many apis and takes a bit longer to master.

3. CS foundation. In April and May this year, I was serious about studying for an online CS degree and I found OSSU. But I am impatient. I have already learned higher levels through JS, and I had to learn how to write basic functions by Racket in the basic courses. I tried to skip some courses, but some knowledge depended on the previous courses, so I couldn’t understand them after skipping them. Then I decided it was getting too slow and I stopped. But I still have to learn CS foundation, including network, algorithm, database, the underlying language and so on. As I’ve discovered, not knowing the basics limits the imagination of development. At the right time, I will go back to OSSU for further study and try to finish the course.


Afterword.

Based on my study and work experience of more than one year, I would like to give some advice to friends who are preparing to engage in front-end.

The first is not to think that the front end is easier than the back end. I thought so at first, and then I found out I was wrong. There is a lot of front-end knowledge to master, and front-end engineering complexity is increasing. JavaScript might be the thing that fatigue you. You need a solid foundation in order not to get tired and lost in the rapid pace of technological change. I’m not advising you not to learn the front end, but to make sure you have a clear trade-off before you make your decision.

Be prepared to continue learning. It’s the best time to be a learner, and you can really learn anything you want online (advanced nuclear weapons and rocketry probably won’t…). . Answers to most of your questions can be found on Google and Stack Overflow. If you can’t find something else to ask, and no one else can answer it, then you’ve learned the cutting edge. An undergraduate CS degree will certainly get you started earlier, but if you don’t have a CS degree, it’s not too late to start. In the near future, if people ask me about my academic degree, I will be confident to tell them that my highest degree is OSSU (Open Source Society University).