fullstack
单体架构与微服务架构
个人项目只用单体,不适于微服务。
微服务的使用场景是在公司项目,一个团队或者一个人维护一个微服务。
如果个人项目使用微服务或者在公司一个人维护多个微服务,调试困难,难实现单元测试的概念,或者不同微服务间调试困难。
个人更偏好于单体架构, 不要过于追求使用微服务的公司,就找小公司或者低业务量的岗位好了。当然微服务技术还是要稍微了解下的。
语言优先级
Python: 第一语言,吃饭语言
Golang: 第二语言, 预备役语言
Nodejs: 第三语言, 打造完整产品不可或缺的语言
Rust: 加速Python
C: 编程界的钢琴
对于Java,可以只学基础内容(方便看涉及到Java语法的视频, 如数据结构与算法是用Java写的),但框架不要浪费时间去学
备注
Python和Golang都是我喜欢使用的语言。Go能完成的任务Py也能做,所以很容易出现工作只使用一种语言的情况,有时候为了使用Go而使用Go就显得没必要。
所以时间分配策略是工作和开源各自占用一个语言,即: 如果工作中以Python作为主力语言,那么新任务就应该以Python优先,除非上级明确使用Go或旧项目是Go的才使用Go完成任务。而Github开源就以Go为主力语言,定期查看issue, 尝试贡献go的pr, 在工作上, 可以参考和借鉴go库的实现原理。此策略可以确保两个语言都能得到充分的使用,不会说其中一种语言感到生疏
渐进式精通
以django为例
第一阶段: 入门
过一遍教程视频内容, 搭建bilibili-api/django
但不是所有的技术栈都有人出教程视频,或者已经过时。例如celery。
这种情况可以啃一遍文档, 搭建docs-sphinx
第二阶段: 熟悉
搭建mini-django
从源码或者第三方库提取和分析实现案例, 例如django.contrib.message
写好注释,分析实现了哪些django特性
但是部分框架不好找样例, 例如scrapy, 官方的example太简单,此时可以从单元测试tests提取和分析实现案例
第二次消化bilibili视频
标记哪些P是重点,哪些P用横线划掉
第三阶段: 精通
文字回答
在知乎搜素相关问题,尝试去回答
参与开源
选择插件开发,体积小容易从github下载
优先从没有教程视频的技术栈挑选,例如celery、sphinx等。
出视频教程
在B站基于第一步的视频针对性出进击的django
升级技术栈
维护策略
学习哪些技术
全职岗位用到的技术
公司的主流技术栈(即便不是自己岗位用到的)
招聘网站的主流技术栈
自己喜欢的技术栈
容易找兼职的技术栈
教材的确定
优先通过B站找课程
如果找不到视频或视频过旧,则以官方文档作为教材,同时github issue驱动学习教材
技术栈有效期
视频用到的版本为 视频版本, 如果该子版本号仍处于维护阶段,则已当前子版本号的最新修订号作为该技术的 锁定版本 。
官文文档直接以最新版本作为 锁定版本 , 该版本的维护期结束的一年之后标记为 过期版本 ,意味着应该尽快重新学习来升级 锁定版本 。
更新策略
新学习时,学完基础内容即可结束学习阶段。
然后在以下的时间节点继续推进该技术的教材里程碑:
最近刚好用到这门技术
有新版本发布
触发更新事件时, docs-* 技术栈处理github issue,然后在光文档学习涉及到的技术点
例如scrapy, 锁定版本v2.9.0, 发现最新版本v2.11.0可升级到v2.11.1, 阅读一条issue,看下涉及到哪些知识点,结合文档内容完善到mini-scrapy
技术栈发展路线
深度 VS 广度
在大厂追求深度, 小厂追求广度,因此我选择走广度路线
下一阶段重点
从后端走向全栈,提高就业竞争力
js -> nodejs -> ts -> css -> sass -> vue -> …