怎样学好编程

You don't have to learn programming in order. Being excited about it is the most important thing. Feel free to race ahead in some areas, while remaining woefully ignorant of the fundamentals in others. You can come back and pick up the stuff you're missing later. Or not.

– Paul Graham https://twitter.com/paulg/status/1433725939071004704

来自 @swapnakpanda 的一些关键点(全栈 Web 工程师):

1, 不要花过多时间寻找资源,找到最好的 2-3 就可以

2, 不再比较学位

3, 选择正确的职业道路

4, 在练习中学习

  • Learning by reading or, watching puts a concept in your brain for a few moments.
  • But by practicing, the concept remains forever.
  • During studying, try to form questions yourself.

5, 避免教程地狱以及FOMO(害怕失去)

6, 学习 HTML,CSS(figure, audio, video, map, object, embed; specificity, pseudo classes/elements, opacity, filter, clip-path, mask, transform, media, flexbox, grid, animation); 更高级的主题(SEO, a11y, responsiveness, performance)

注意:

  • HTML CSS 可以同时学习
  • 针对每一个 HTML,都用所有可以用上的 CSS 属性练习一遍。构建一个模板项目
  • 在此之后,学习 JS

7, DOM, Event Handlers, Ajax, Fetch API

8, JS 基础

告诫:This is no spoon feeding. You have to practice hard to learn.

8.1, Variables and Datatypes

Variables: naming, declaration, assignment

Datatypes: primitives, literals(numeric: boolean, string)

特别主题:类型转换

8.2, Operators

8.3, Syntax

条件语句,循环语句

8.4, Function

声明,函数表达式,匿名函数,箭头函数

特别主题:变量作用域,提升,回调函数,闭包

8.5, Array

数组字面量,数组创建,数组长度,数组方法,数组迭代

特别主题:数组解构,数组传递,数组分类

8.6, String

字符串字面量,字符串长度,字符串方法

特别主题:字符串模板字面量

8.7, Object

对象字面量,访问对象属性,对象迭代

特别主题:对象解构,对象 spreading

8.8, 特别对象

  • Number
  • Boolean
  • Set
  • Map
  • Math
  • Date
  • console

8.9, JS modules(ECMAScript modules)

import, import {}, export, export default

8.10, 接下来的内容

  • Async

    • promise API
    • await async
  • Object Oriented

    • Class
    • Prototype
  • DOM
  • Fetch API
  • Client-side Storage

    • Cookies
    • Web Storage
    • IndexedDB
    • Cache API

9, 构建一些小项目

10, 学习 TypeScript

11, 代码模块化

  • Learn to develop modular type code.
  • Instead of developing a monolithic huge code, try to segregate them into multiple pieces.
  • Smaller units are easy to maintain and, help in reducing network bandwidth.

12, 选择库、框架学习

13, 解决问题的技能

  • Full-Stack developers require to possess problem solving skills.
  • I told the knowledge of DSA is very important and, can be learned by only practicing.
  • I suggested starting with simple data structures and, algorithms.

Practice 75+ Algorithms

14, Back-End with Node.js & Express

15, Database with MySQL(MariaDB) & MongoDB

16, 构建全栈项目

  • Using all the skills you achieved, build a few sample projects.
  • Host them using some free services like Vercel or, Netlify.
  • These projects would evaluate your skills. So, keep on improving them.

17, 个人主页

A portfolio website is like a passport. Recruiters could find a lot of details from this about you.

  • Tell about yourself
  • Brief about your projects, achievements
  • Share your GitHub link
  • Make it responsive
  • Make it fast

18, 制作简历

A resume is one more important thing like the Portfolio website.

  • Have a nice presentation
  • Keep it short 'n' simple
  • Use keywords like "Full Stack", "JavaScript", "React", "MERN" for more visibility
  • Do not use too many fonts

19, 构建联系/链接

  • You may possess 1000 skills, but all in vain if you don't have many connections. Connections provide opportunities.
  • Using online mode, you can build connections rapidly.
  • Join one or more social media. Connect with people. Build relations.

20, 准备好接受失败

They said, "Failures are pillars of Success".

  • You may fail badly during the first few interviews.
  • Without getting demotivated, learn what recruiters are expecting.
  • Improve your skills, resume, portfolio, and projects.

参考资料:

  1. 我的前端学习路线
  2. 如何自学计算机编程 - 子龙山人
  3. 编程入门指南 - 源站归档来自「看云」的备份
  4. Swapna Kumar Panda (@swapnakpanda) / Twitter
欢迎通过「邮件」或者点击「这里」告诉我你的想法
Welcome to tell me your thoughts via "email" or click "here"