代码开源生涯十年-百有一用是开源 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
treexie
V2EX    程序员

代码开源生涯十年-百有一用是开源

  •  
     
  •   treexie 2023-10-12 20:59:51 +08:00 3229 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    高考选择专业的时候,并不了解软件开发具体是什么,那时候想法是 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 多个开源的代码库,也占用了自己大部分闲余时间,效果那真是惨不忍睹,心酸也是真的心酸。一开始想着金子总会发光,后来的经验告诉我项目还是需要推广,因此还是厚着脸皮推广以下几个项目:

    13 条回复    2024-10-12 11:17:57 +08:00
    kkk9
        1
    kkk9  
       2023-10-12 21:10:13 +08:00
    《活着》
    treexie
        2
    treexie  
    OP
       2023-10-12 21:14:15 +08:00
    那还是需要好好的活着的
    /table>
    zhouhuab
        3
    zhouhuab  
       2023-10-12 21:23:42 +08:00
    推广的目的是什么呢?
    jones2000
        4
    jones2000  
       2023-10-12 23:34:49 +08:00   2
    挖几百个坑, 不如深挖 1 口井。
    kingjpa
        5
    kingjpa  
       2023-10-12 23:47:49 +08:00
    我还是比较佩服你的,给你点赞 ,
    我 14 年也狗模狗样的写了个弹出层组件,怂恿部门几个人点了几个星星,后就放弃了, 发现自己造轮子,永远慢一步。 后来就干脆就再没有过念想,但同时也失去了积累成体系知识的机会。
    zhouhuab
        6
    zhouhuab  
       2023-10-13 00:09:15 +08:00
    @jones2000 直接挖到美国本土
    slert
        7
    slert  
       2023-10-13 00:34:09 +08:00
    必须要进大公司 跟对人 做重要的项目 有遇到大问题并解决的机会 才能提升
    lizhian
        8
    lizhian  
       2023-10-13 11:05:42 +08:00
    感谢分享
    guanguans
        9
    guanguans  
       2023-10-13 11:26:16 +08:00
    已 follow LZ github 。
    sdl
        10
    sdl  
       2023-10-13 16:46:13 +08:00
    这句话是真理 人生好像一直都是这样,找点事做便把时间打发了,每个人的选择可能都不一样,可以写代码可以玩游戏,也可以看电视剧。其实没必要太计较得失,也真不要想太多,尽可能让自己过得开心即可。
    lete
        11
    lete  
       2023-10-13 17:54:03 +08:00
    看完后,我觉得我正在走你的这条路,仿佛看到了未来的自己轨迹
    treexie
        12
    treexie  
    OP
       2023-10-13 20:19:01 +08:00
    走自己的路,让别人去说吧
    leon1
        13
    leon1  
       2024-10-12 11:17:57 +08:00
    是的,自己喜欢就好
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2633 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:04 PVG 14:04 LAX 23:04 JFK 02:04
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86