Since I want to “systematically study by myself”, I would like to share my experience with you as a non-major girl who has studied for half a year from March to September this year and got a satisfactory offer. Murphy: Is the front end suitable for girls? Recently, someone asked me about my progress. Could you please share my book list and write it here

My learning route is according to

@Yan don’t remember anything
Don’t remember anything: how to get started with the Web front end?

Although it is “systematic learning”, it is also “recruitment oriented learning” (covering your face), so it is important not only to read books and accumulate code, but also to keep abreast of the current situation and the community. I roughly divide the learning and accumulation directions into four aspects:

  • Computer Fundamentals
  • The front-end based
  • Engineering related and framework tools
  • Influence, community contribution

In fact, the last point is a bit exaggerated, or the new white, where to influence ah. After all, if you are an active member of Github, you can get a bonus for a tech blog, and even if zhihu is good at writing. (I’m not. I’m working on it.) Without the learning environment of courses or the guidance of upperclassmen/tutors, it is necessary to create their own, and this kind of output learning is also a kind of improvement for themselves. The order of learning does not have to be sequential. After all, there is not so much time, and knowledge is related to each other. Scientific Internet learning can also connect some knowledge.

1. Computer fundamentals

  • Algorithms and data structures

I really got started with Problems – LeetCode. Swipe through a dozen or two lines by category (array, linked list, tree, binary lookup, etc.) and you should have a general idea of the problem data structures are trying to solve. With algorithms (4th edition) and algorithm-Part 1 and Algorithm-Part 2 on Coursea, the big assignments in the open course will still be difficult, but well worth doing. Each big assignment will have rich instructions and complete test cases. But if you do all the exercises at the end of the book, it will be a long time, so choose and choose by yourself. Then try to brush some LeetCode medium and hard titles.

I am just an entry level, advanced words are big cattle to see the introduction to the algorithm, I have not seen it is not recommended.

  • Computer network

– Illustrated HTTP

– The Top-down Approach to Computer Networks is still available.

  • Operating system, architecture

– Operating Systems: Three Easy Pieces is a free ebook: Operating Systems: Three Easy Pieces

15-213/18-218/15-513: Introduction to Computer Systems and Lab: CS:APP3e, Bryant and O’Hallaron

It is very suitable for Lab self-study while watching PPT, but of course, it is difficult for non-majors. In fact, my friends do not recommend me to read this book. My basic knowledge is poor, but its PPT is very good. I am afraid that I will not know when the CMU class will be open next time after this semester.

  • A programming language

After learning JavaScript, I learned C++. First, when I was reading CSAPP, I needed to know a language that was closer to the underlying language (C is used in this book), so I read C++ Primer. It is also because C++ contains many programming paradigms and the front-end will inevitably encounter it when it comes to the V8 source code and node.js source code.

Still catching up on the basics, which is important, but remember not to get stuck in reductionism.

2. Front-end foundation

  • Recommended Baidu Front-end Technology Institute is very suitable for entry, the previous period of time to practice several tasks in 2017, is also very good. I used to brush baidu-ife/ife. How to brush can refer to the above said that answer the Lord’s answer.
  • Books (in the order I read them)

– JavaScript Advanced Programming

– the definitive GUIDE to CSS (use your OWN CSS or check more)

– JavaScript Language Essentials

– CSS Revealed

— JavaSscipt You Don’t Know getify/ You-dont-Know-js

– JavaScript Design Patterns and Development Practices with Graphic Design Patterns

Read each book carefully, knock a summary on the blog, the basic questions on the interview basically will not be stumped you.

Then you need to keep up with the new standard specification and understand the process (I was also asked in the interview). For example, Qiuyi Zhang: How do you comment that ECMAScript 2016 (ES7) only adds 2 new features?

It’s easier to get started with PHP or Node.js if you don’t have the basics.

  • Node. Js in actual combat
  • Node.js is easy to understand

3. Engineering related and framework tools

Learn about some of the new technologies on the modern front end, and what problems each one is trying to solve. Such as:

  • JavaScript modular specification and implementation (ES6 Module, CommonJS, Node.js implementation, etc.)
  • Package management (NPM)
  • Modular Packaging tool (Webpack)
  • Front-end automation tools (Gulp, Grunt)
  • Front-end frameworks (React, Vue, Angular, etc.)
  • CSS extension, compilation (Less, Sass, PostCSS, etc.)
  • JavaScript extension, compilation (TypeScript, CoffeeScript, Babel, etc.)

.

To understand why there are so many tools, you need to understand the history of the modern front end. A few days ago, I read an article written in a very easy to understand, translated, here: modern JavaScript development cute new also can understand. Framework may be asked during the interview, personally think that the three frameworks to choose one or two, actually used in the project, can clear framework and the emergence of the bucket is relevant in order to solve the problem, some of what is the core technology and basic principle, (the interview was also asked similar to the real DOM online said operating the slow, But the test results are faster than React. Why? , targeted read the source code, understand the pain points and differences of different frameworks to solve OK.

4. Community contributions such as:

  • Follow up with a popular component library, such as Vue component library Element, iView, etc., make issues, fix bugs and pr.
  • Participate in the English translation of a popular project, such as the website of a framework or tool, or something like the Gold Digging Translation project.
  • Write a component/tool/plug-in to publish to NPM
  • Write a Hexo theme (which I haven’t done yet)
  • Manage your blog properly, have a consistent output on some platforms, etc
  • There are plenty of other ways to contribute, too, such as contributing to Node.js (which you’re too old to do on your own right now)

Output learning is not only a kind of improvement for yourself, but also can have the opportunity to meet more leaders to communicate with you and even help you push something inside.

Explanation: I haven’t learned all of this yet, but it should be enough to land an internship/job. My level is limited, and I am still studying hard, hoping not to stop at the front end. (PS: Zhihu editor can really drive people crazy!