从技术角度,职业等级的划分:
-
技工 - 熟练使用特定的技术和工具,重复性工作。当门槛降低或技术更替后,就会被淘汰。
-
特种工 - 在技工的基础上,拥有解决问题的能力。即使技术更替,懂得解决问题的套路和方法,可以让他在新方向上有一定的展示.
-
工程师 - 不仅仅使用技术,还可以将需求最好。认为代码更多的时间是在维护,通过各种手段和技术,提升代码的易读性、扩展性、可维护性和重用性。给底层的人提供称手的工具和方法论。(比如,什么时候用什么技术这样)
-
架构师 - 主要是开发工具、框架、模式,提高软件开发和维护效率,提升用户体验,降低门槛。总的来说帮助降本增效。
-
经理 - 组织团队、完成项目、创造利润。
四个方向反思自己:
- 特长。自己的优势,扬长避短。
- 兴趣。有热情的东西,非一时之喜爱。
- 方法。学习、反思、尝试,找到适合自己的在各个方向的方法论。
- 勤奋。当前三者都没有了,那么就只有一个勤奋可以让自己变得更优秀。
技术的基础:
现在形式上的东西越来越多,例如框架、工具,但是底层的内容其实变化不大。
举个栗子:想要提升代码重用度,就必须解耦,跟实际需求解耦,提升接口的抽象。无论是什么语言,都是这么做的。
技术的基础,或许可以分为四类:
- 程序语言:语言的原理,类库的实现,编程技术(并发、异步等),编程范式,设计模式…
- 系统原理:计算机系统,操作系统,网络协议,数据库原理…
- 中间件:消息队列,缓存系统,网关代理,调度系统…
- 理论知识:算法和数据结构,数据库范式,网络七层模型,分布式系统…
就算自学,这些基础技术大概需要四五年的时间堆叠。这二十年来基本还是这些原理没变,无论形式怎么变,但是核心永远还是这些,理论创新很难,这是以不变应万变。
一些学习经验:
- 一手知识 + 从信息源获取知识。已故计算机专家陈皓(左耳朵耗子)在极客时间的「左耳听风」专栏,也是找到经典著作的极好的来源。
- 注重技术的原理、基础。
- 知识图谱。从一个技术关键点开始不断地关联和细化下去,比如:关于 TCP 协议,首先第一个要记住状态图,怎么建立连接,怎么断连接,状态怎么变迁。TCP 没有连接,是靠状态维护连接的。其次,要了解 TCP 怎么保证可靠性,就是丢包以后怎么重传,重传有哪些技术点。然后,重传会让你联想到拥塞控制,拥塞控制到滑动窗口……。这基本就是 TCP 的所有东西了,找到关键点,然后顺着这个脉络一点点往下想,通过知识图关联就可以进行顺藤摸瓜。我们不需要记所有知识,那些手册的知识不需要记,你知道在哪里能找到就可以了。你脑子里面要有地图,学一个东西就跟在城市生活一样,闭上眼睛就知道地图,A 点到 B 点怎么去大概方向要知道。我在北京我去广州,广州在南边,我大概坐飞机还是火车要心里有数。。
- 用不同方法学一个东西,比如说学 TCP 协议,看书是一种方法,编程是另外一种方法,还有用做 Debug 去看的,用不同方法学一个东西会让你更加熟悉,你学一个知识的同时把周边也学了。比如说学前端能不能把 HTTP 学一下,比如说长连接、短连接,包括 hp1、hp2 有一些不一样的东西。
- 总结和归纳。形成自己的思维框架、自己的套路、自己的方法论,以后学这个东西应该怎么学。就像学一门新的语言,不管 GO 语言,还是 Rust 语言,第一件事情就是了解内存是怎么管理的,数据类型什么样,第二是泛型怎么搞,第三是并发怎么弄。还有一些抽象怎么弄,比如说怎么解耦,怎么实现多态?套路这种东西只有学的多了以后才能形成套路,如果你只学会一门语言不会有套路,你要每年学门语言,不用学多精,你思考这个语言有什么不一样,为什么这个这种有玩法,那个有那种玩法,这些东西思考多了套路方法论就出来了。比如说 Windows 和 Linux 有什么不同,Linux 和 Unix 又有什么不同?只有总结自己的框架、套路和方法,这些才永远不会被淘汰。
- 实践和坚持。搬砖赚几十元不值得,因为赚的是辛苦钱,老了就赚不了,必须要赚更有能力的钱,这是学习投资。

一些专有名词
PRD(Product-Requirement-Document,产品需求文档)