邂逅前端开发
自我介绍、课前提醒
- 课前提醒
- 相互尊重、共同进步;
- 每个同学的学习经历、知识存储不同,我们的课程是针对于所有想要学习前端,学好前端的同学准备的;
- 所有的内容都是从零开始的:
- 比如包括什么是软件开发?什么是应用程序?什么是前端工程师?
- 比如一个网页从你开始编写的那一刻到用户浏览器上可以显示,它到底经历了什么样的一段旅程;
- 比如什么是 HTML、什么是 CSS,这些东西给到浏览器,浏览器到底是如何给你显示的;
- 课程里面我会着重强调和补充一些东西:
- 比如开发规范、代码规范、封装思想;
- 比如额外补充很多其他知识:网络协议、操作系统、编译原理、数据结构;
- 保持"空杯心态",才能持续不断的进步。
软件开发和程序员
软件的专业定义
- 专业的软件定义:一系列按照特定顺序组织的计算机数据和指令,是电脑的非有型部分。
- 软件开发是什么呢?就是告诉计算机一系列的指令,这些指令也称之为 程序。
- 开发软件的这部分人就称之为 软件开发工程师,也称之为程序员。
软件开发和应用程序开发区别:软件(software)开发和应用程序(Application)开发

前端开发整体概览
前端开发工程师
- 开发系统中各个环节的不同部分都属于软件开发:
- 这些开发者我们称之为软件开发工程师;
- 开发者、程序员、码农、IT 民工等等;
- pcoder、programmer、developer;
- 按照职能的不同也可以划分两类:
- 后端(Back-end)开发,称之为后端开发工程师;
- 前端(Front-end)开发,称之为前端开发工程师;
- 前端开发工程师职能
- 主要负责的:Web(网站、后台管理系统、手机 H5)、小程序端;
- 也可以做:移动端(Uniapp、React Native)、桌面端(Electron)、服务器开发(Node.js);
- 开发系统中各个环节的不同部分都属于软件开发:
前端行业发展
为什么要聊这个话题呢
- 时代的一粒灰,落在个人头上,就是一座山;
- 如何行业已经停滞,甚至是倒退,没有需求,那么你如何努力也改变不了现状;
技术角度
新框架(Ember.js、Preact.js)、框架更新迭代(vue3、react18)、新工具(Vite)、新模式(工程化、低代码、微前端)层出不穷;
前端技术发展路线
技术发展线路一
- 初级程序员(薪资 6k-10k,1~2 年)
- 写一些简单的业务,负责项目某些模块的开发、维护;
- 遇到很多问题不知道如何处理,需要查询资料或者交流后可以解决;
- 代码通常写的杂乱无章,能用就行!
- 中级程序员(薪资 10k-20k,2~4 年)
- 可以独立负责中小型项目,负责公司项目核心业务的开发、维护;
- 遇到大多数问题可以自行查到解决方案,有一定的自学能力,通过官网文档可以自学;
- 代码质量较高,遵守代码规范,并且会对组内其他人的代码有要求;
- 高级程序员(薪资 20k-50k,4~6 年)
- 独立负责中大型项目,可以为公司项目搭建架构,创建内部的脚手架,公司内部的 UI 框架;
- 可以读懂框架源码,并且从一些开源框架中借鉴优秀的设计、架构、思想;
- 公司的核心员工,具备可替代性,成为公司技术不可或缺的一部分;
技术发展线路二
- 系统架构师(50k~)
- 可以对大型项目进行系统架构,不再局限于某个领域(前端、后端?)或者某项技术(JavaScript、Java、C++?);
- 对技术领域 现有技术方案进行评估,对不同的场景给出对应的解决方案;
- 确定项目最终方案,并且对整个项目进行"核心架构"(包括完成 核心架构 实现的能力);
- 保证项目的各个环节有序进行,包括项目的高性能、高可用、可扩展能力;
- 资深技术专家(50k~) - 专注于某一个特定领域
- 比如前端包括不限于对框架源码、node、js 引擎进行定制化需求、优化;
- 比如后端包括不仅限于 JVM、线程池、SQL 调试、优化;
- 比如可以主导公司项目某些特定领域技术的落地,类似流媒体、即时通信技术等; - 某些人在行业内有一定的影响力,是某一块技术领域的 Top 人物;
学前答疑、学习建议
学前疑惑解答
英文水平:熟悉简单的英文,会使用翻译软件(常用但是不熟悉的单词经常回顾一些)
智商:认真、努力、专注(大多数人还不到拼天赋的程度)
学历要求:软件行业是一个相对公平的行业;
- 如果你想要公平,就来参加体育比赛,如果你想要绝对的公平,就不要来参加体育比赛;
计算机专业:不一定要计算机专业,会使用计算机就行
学习方法
如何学习新的知识:《JavaScript 高级程序设计》的作者 Nicholas C.Zakas,也是 ESLint 的作者;在他的博客有说到:想要全面的掌握 JavaScript,关键在于弄清楚它的历史、局限性和本质;
课程讲授的方式
课程的一些设计思路:
- 整体课程会按照大纲的顺序来讲,某些部分我会进行一些顺序的调整;
- 相比于过去网络上的资料、课程,会删除目前已经不再使用的技术(现代开发根本用不上的东西)。
- 核心重点的东西必须掌握,包括我额外补充的内容,我会在课堂上反复强调。
课程使用电脑:
- 上课使用的 Windows 电脑;
- 备课使用的是 Mac 电脑;
不积跬步无以至千里:每天比前一天的自己进步一点点