高考选择专业的时候,并不了解软件开发具体是什么,那时候想法是 IT 很潮流很未来,因此选择了软件开发专业。大学期间也没怎么了解过开源,在 2010 年 12 月首次加入 github ,记不起来是为什么注册,首次代码提交记录在 2012 年,主要是一些工具类的代码。
忘记了一开始接触 github 是什么原因,在这十年期间创建了 200 多个项目,最近每年大概上千次 commit ,项目都是闲余时间写的(毕业后工作的公司均没有企业开源项目,因此都只是个人项目),从一开始的迷茫到后来的奋进,最后回归平常,变成了习惯。首次提交开源代码到现在也有十年了,这些项目到现在为止只剩下 20 个左右还在维护,不能说质量低下,但这些项目确实关注度不高。
下面先跟大家分享一下我程序员生涯各阶段的经历和感想,相信我的经历也是部分开发者的经历,文末再跟大家分享个人目前的项目。
大学的时候想法有点天真,认为毕业之后就可以找到一份好工作,慢慢就可以赚钱成为人上人。谁知道真正找工作的时候才发现原来自以为理论知识学的挺好,在面试的时候却什么都用不上。
工作第一年,在一家中等规模的公司做嵌入式开发,大学期间 C 学习得不太好,当时公司又无人指导,全靠自己看文档,而且禁止接入互联网,所以那一年没有学到什么技术上的知识,只是适应了由学生阶段步入社会的转变。
第二家公司是使用 QT 开发的一家台湾企业子公司,无绩效考核无工作压力,感觉是给公司领导养老的。当时的工作也比较被动,有点不知所措,感觉在混日子,每天应付式的完成些小功能即可。当时需要做一个简单的网页实现应用设置功能,为了给工作带来点变化,机缘巧合之下学习了 jQuery(当时特别火)。
因为工作闲余时间比较多,所以深入了解 jQuery 的源码,并开始学习前端各类开发技术。平时在各种 QQ 群上沟通交流,当时还自己试验性的去写了一套 UI 框架,由于工作上较少前端的工作,理论掌握得比较多但实践挺少。
后来感觉自己还是无法喜欢底层开发,开始找前端类的开发工作,当时运气还算好,面试第一家公司时,说自己在当前公司主要负责前端开发等,面试通过忽悠成功。
在这个阶段,我的心得体会是:选择一个自己感兴趣的方向,若有人指导入门最好,若没有则可以通过官方文档、深入源码等方式学习。第一份工作很重要,尽可能选择适合的,第一份工作也不太重要,因为很多时候为了生存只能被动接受,不过就算如此也应尽力在夹缝中成长。
在公司负责前端开发工作期间,开始学习使用 nodejs ,开发各类工具提升开发效率。由于需求场景有限,一直处于入门阶段,因此想尝试在公司业务中使用 nodejs ,于是向领导推荐使用 nodejs 替换 php ,尝试前后端语言统一。
在此顺带说一下当时说服领导的理由:公司规模较小,无各种规范的文档,人员流动较为频繁,且公司业务也是侧重于前端,因此向领导建议减少前后端开发之间的沟通,可由前端开发完成各类逻辑的处理,后端开发仅完成基础架构部分即可。
在工作中使用 nodejs 之后,有了由 0 到 1 的转变,开始了解各类开源模块,当时基于 npm 的模块下载量了解排名较前的相关模块,对各模块有了直观的了解后,则开始选择工作中有需要的各类模块深入了解其相关实现。
记得当时深入了解 express 相关源码后,自己尝试写了一些中间件,在自我感觉对 nodejs 的各类模块较为熟悉后,开始将工作中的部分功能切换为由 nodejs 来实现,实现由 1 到 10 的进阶。
在此阶段,我的心得体会是:建议基于工作中的项目选择合适的方式,切入新技术的同时也可延续自身的相关技术栈,避免完全切入一个全新的领域。在说服领导使用新技术时,一定要站在公司立场,提出对公司有利的方向,而不是仅考虑自身发展。此时我的开源项目基本以代码熟练为主,基于熟悉的模块去思考实现扩展功能,尝试在学习中完成。
在自己努力学习之下以及 nodejs 的热度,终于换到一家大公司。开发工作主要是前端,也包括部分 nodejs 后端。由于开发流程的规范化,不能再随意选择新技术来尝试,对于公司业务不熟悉且开发工作繁忙,此阶段新技术的学习停滞不前,对于开发工作我陷入自我怀疑,开始质疑是否应该作为终身职业。
在此期间,开源项目主要是把以前的一些想法实现之类的一些修修补补的提交。
在这个阶段,我的心得体会是:当你开始怀疑自己是不是适合继续做开发的时候,如果有更喜欢的发展方向可以多线发展学习,如果没有,别纠结太多。因为想再多还不如在当前的方向上多做实践。
由于后端开发人员的调动,后端相关开发工作完全交由我负责,我开始去思考系统整体架构,补齐系统监控、统计等各类指标。
此时开始对 nodejs 感到迷茫,不知道还有哪些可以深入(并不是说自己已经很精通,而是觉得遇到了瓶颈无法再进步),正好 golang 开始比较火,虽然公司项目中暂未有使用,但考虑到今后后端开发可能会切入至 golang ,也刚好想弥补以前实现 nodejs 的 web 框架遗憾。
由于工作上并没有 golang 相关的需求,公司性质也注定了无法自己随意尝试使用新语言,所以都只能在下班或周末时实现。在此不得不说 golang 的确容易上手,基本一周即可。
elton 则是当时学习的产物,主要参考koa的实现,完成了 web 框架以及十多个常用的中间件,后续基于 elton 实现了一个类似 varnish 的 http 缓存服务。
这时公司开始在后续业务中引入 golang ,工作中无缝切换至新的语言,但使用后又步入了和 nodejs 相同的境况,我不知道该如何继续提升,于是又开溜到另外一个方向。当时想了解 APP 应用的开发,学习 flutter 尝试写了一个小说类的 APP(主要方便自己平时看小说),最终上架之后由于没什么人用(卫斯理系列部分无版权问题的科幻小说),因此将应用下架。然后又想尝试一下 macos 的应用开发,搜索了解各类技术,看到了tauri,决定尝试使用 tauri 开发一个桌面应用,顺带学习一下 rust(几年前尝试过学习,最终从入门到放弃)。
在这个阶段,我的心得体会是:人生好像一直都是这样,找点事做便把时间打发了,每个人的选择可能都不一样,可以写代码可以玩游戏,也可以看电视剧。其实没必要太计较得失,也真不要想太多,尽可能让自己过得开心即可。
为什么一直在换语言而非深入再深入研究?除了刚毕业的时候,过往的事实让我明白其实自己就是一个普通人,可能靠努力能达到 80 分,但是很难靠努力能完成 80 到 100 的跃迁。
虽然创建了 200 多个开源的代码库,也占用了自己大部分闲余时间,效果那真是惨不忍睹,心酸也是真的心酸。一开始想着金子总会发光,后来的经验告诉我项目还是需要推广,因此还是厚着脸皮推广以下几个项目:
1
kkk9 2023-10-12 21:10:13 +08:00
《活着》😇
|
2
treexie OP 那还是需要好好的活着的
|
3
zhouhuab 2023-10-12 21:23:42 +08:00
推广的目的是什么呢?
|
4
jones2000 2023-10-12 23:34:49 +08:00 2
挖几百个坑, 不如深挖 1 口井。
|
5
kingjpa 2023-10-12 23:47:49 +08:00
我还是比较佩服你的,给你点赞 ,
我 14 年也狗模狗样的写了个弹出层组件,怂恿部门几个人点了几个星星,后就放弃了, 发现自己造轮子,永远慢一步。 后来就干脆就再没有过念想,但同时也失去了积累成体系知识的机会。 |
7
slert 2023-10-13 00:34:09 +08:00
必须要进大公司 跟对人 做重要的项目 有遇到大问题并解决的机会 才能提升
|
8
lizhian 2023-10-13 11:05:42 +08:00
感谢分享
|
9
guanguans 2023-10-13 11:26:16 +08:00
已 follow LZ github 。
|
10
sdl 2023-10-13 16:46:13 +08:00
这句话是真理 人生好像一直都是这样,找点事做便把时间打发了,每个人的选择可能都不一样,可以写代码可以玩游戏,也可以看电视剧。其实没必要太计较得失,也真不要想太多,尽可能让自己过得开心即可。
|
11
lete 2023-10-13 17:54:03 +08:00
看完后,我觉得我正在走你的这条路,仿佛看到了未来的自己轨迹
|
12
treexie OP 走自己的路,让别人去说吧
|
13
leon1 77 天前
是的,自己喜欢就好
|