我 2010 年开始在 Github 上开源自己的代码 。在 push 代码之前我根本没想过为什么 。只是因为我当时学了 git,而且我又觉得 Github 很方便,可以用来备份自己的代码 。
而后我就参加工作了,在工作之余我还会写一些感兴趣的代码分享到 Github,没事也经常在上面瞎逛,找一些自己感兴趣的代码来学习 。我自己写的博客后来现在都托管在 Github 上了 。
没想到这么多年下来,在 Github 上玩开源已经成为自己的一种习惯、爱好和生活方式 。近一年工作轻松些了,有更多时间投入在这上面 (忽略最近两个月的大量提交数据,因为有个自动脚本在同步笔记等等 )
文章插图
最近越发觉得,和这个世界交互、分享越多,就会有更多的可能性 。这里分享一下开源的收获和感受 。这里仅从开发者角度考虑这个问题,因为公司是否考虑是另外一个更复杂的事 。
自我提高分享是为了自我提高 。
我建议任何在学编程的人参与到开源活动中来 。现在的软件开发已经过了刀耕火种、徒手编码的年代,软件开发需要复用大量已有的库和工具,大型软件开发是一种社会化的、集体性的智慧活动 。在 Github 上分享代码,给其他开源项目做贡献,是最好的一种方式来练习这种编程能力、协作能力和复用已有代码的能力 。在 Github 上混久了,就形成一种自然而然地做贡献的习惯,在这里我们不只是使用者,也可以是创作者 。
- 我想学学 WebAssembly,所以找来一个 runtime 实现看看,顺便修复一些自己发现的问题 。
- 看到这个 Obsidian 插件有些缺陷,自己修一把然后和作者讨论一下怎么完善 。
- 在使用 Rust 的时候,看到了一个重复的警告,在 Github 上一搜索发现别人也碰到过,提一个 PR 修复一把 。
- 我想看看 container 是怎么实现的,所以找来开源代码 containers/youki 看看,然后顺便修复自己发现的问题,后来还成了 maintainer 。
创造价值绝大多数代码不值钱 。写代码的时候内心戏不要太多,自己几斤几两也要有个数 。纯代码不值钱,业务才能赚钱,所以代码得运行起来 。如果分享出来的代码对别人有用,就能产生价值,产生价值就附带可以赚钱 。
举个例子,我在自己看书《Enssential of Programming Language》的时候,一边学习一边把课后习题用代码实现了,chenyukang/eopl: my solutions to EOPL3。
这个代码如果一直留在我硬盘的某个角落,估计就是分文不值 。我总不能把它当作传家宝留给我的后代 。但是开源之后居然每年都会收到一些邮件咨询这方面的问题 。因为这本书是国外一些大学的教材,他们学编程语言相关的课程就需要做这些编程题,还有一些课后项目 。
所以,有的同学就付费让我咨询 。对于我来说,我当然愿意,一个小时能赚 2000 左右这不比上班划算么 。嗯,大学能出国的人有的还挺有钱 。
当自己的成果帮助了其他人时,也能收获一些满足:
文章插图
另外一个例子,我分享了自己在学习数据结构和算法时实现的一个生成迷宫程序,然后还写了一些 A* 算法相关的文章 。后来上海大学有个教授看到我的文章,问我能不能帮他们看个程序,他们需要在 1w 多个节点里面计算 k-th shortest 路径 。我花了一些业余时间帮他们把核心算法用 C 实现了,他们后来把文章发表了出来,还把我的名字署上了 。Identification of hepatocellular carcinoma related genes with k-th shortest paths in a protein–protein interaction network - Molecular BIOSystems (RSC Publishing) 。我可从来没想过自己会发表一篇分子生物类的文章 。
这就是分享的奇妙之处,你不知道自己的分享什么时候就帮助了别人,创造了价值 。
这些如今牛逼的开源项目都是从最开始一个小的分享举动开始的,Linus 在分享自己的小 Kernel 时估计并未曾想过整个操作系统行业被自己改变了,尤大在分享自己的前端成功时也未料到过 Vue 发展成这样 。
推荐阅读
- Python如何构建自动在线刷视频
- 国企岗位推荐,程序员求职速来看
- HTTP 报文详解
- windows cmd 环境下载文件的几种方法
- 狗肉不能与什么同吃呢
- 眼部刮痧的注意事项有哪些
- 生病喝中药能喝绿豆汤吗
- 古天乐为什么能当会长?
- 甲减病人能适当的吃海带吗?
- 点痣后可以吃苦瓜的吗?