大家好呀!很荣幸能够成为《开源软件开发技术》这门课的校外导师,羡慕大家能够在大学里上到这门课,发自内心的羡慕,但非常遗憾的是,我不能经常跟大家见面。

前言

两年前,我在这门课上第一次与大家分享了我的开源之旅。当时这门课是我第一次听说,在上台前的那天晚上因为过于兴奋而几乎没能合眼。在羡慕的同时又抛去嫉妒,羡慕能够通过这门课认认真真、明明白白的搞清楚到底什么是开源,嫉妒我大二的时候怎么没有这么课,这不太公平 🤣。

「什么是开源」这个问题曾经一直在困扰我,大一时我从 ifLab 的小组活动里了解到 「github」和「开源」这两个词,很长一段时间里这两词在我的脑海里是等价的。

随着时间的推移,我慢慢的做了越来越多的 side project,让自己花费更多的时间去实习,通过这两个方向上的活动,我好像理解了开源是什么,也明白了为什么要开源,但此时我对进行「开源项目」的理解还停留在「开放源代码」这一步。

后来,大师兄第一次在这门课上邀请我给学弟学妹们分享「我的开源之旅」,通过这个机会让我认真的思考了到底「什么是开源」。那次分享上,我说出了开源项目是怎么进入到日常学习中、怎么用好开源项目以及怎么选择开源项目,但这里少了一点非常重要的东西——「怎么参与到开源项目中」。

虽说当时我对「开源」火急火燎的进行投入,但一直没能参与到开源项目中,换句话说,其实我都是一个人在搞东西,没能理解到什么是「团队合作」,但,出去实习这不是「团队合作」么?

严格意义上其实也是,但在公司里干活,每个人的目的性非常强,很难感受到因为「兴趣」把大家结合起来一起做一件事的氛围。而参与开源项目本身就是一件非常耗费时间的事情,在耗费时间的前提下,还有人愿意一起跟你干,愿意跟你交流,这是很奇妙的体验。

接下来,我要和大家继续分享一些我认为对个人成长有帮助的事情。我从一些同学的口中得知:「学长,我也想变得跟你一样」等等类似的话,说实在的,这番话我大一的时候对 ifLab 的某些学长也说过,如今没想到也有同学对我说这番话。

我还记得当初大一刚开学时,班主任让我们写一个大学四年的规划,每一年你都要取得什么样的成就都列出来。毕业之际,当我再从印象笔记里翻到曾经大一时写的这些东西,久久不能释怀,没想到自己能够变成这样,没想到自己的能耐有这么大。

对成长有帮助的东西

项目

这个非常非常非常重要!!!

你可以不好好学习,你可以花红酒绿,你可以浪迹天涯,但你不可以不做项目。项目对个人视野拓宽有巨大的帮助,在课堂上我们只能从一个「点」出发去看一件事,但通过做不同的项目,慢慢帮我们补齐了这些「点」和「点」之间的空隙,把这些「点」串成了线,最终这些线会慢慢的成为一个面。

那么,项目怎么找?回顾我的大学,几乎我每个学期都会「搞一个事情」,最开始因为视野有限(大学之前我没写过一行代码,存粹靠兴趣在撑啊!)可能只是课设的延伸,后来我在越来越多的社交网络上活动(知乎等),了解到了越来越多有趣的事情。

有一天可能是在上离散课(两年前),我在刷知乎,看到了日本的一个 app 在知乎上火起来了,可以在课本上通过荧光笔涂抹重点内容,使用它的 app 进行拍照识别,处理之后原本被荧光笔涂抹的区盖上了黑色的遮罩,点击一个按钮可以消除或者显示这个黑色遮罩。

当时看到这个视频后,我极其兴奋,心想着这简直就是「神器」啊!在 App Store 搜了一下,居然没在中国区上架,在内心埋下了自己也要自己实现一个的种子。

后来我就把这个小东西给实现出来了,如果你对此感兴趣可以看这里,靠着这个上了当天的 GitHub Objective-C 语言分类榜全球第一,当时我非常开心啊!通过这个 side project 把计算机视觉跟现实真正的结合了起来,入门了 OpenCV,还上了 GitHub 的全球榜。

这是一件「延迟满足感」的事情,这个 side project 从筹备到最终完成耗时差不多四个月,原本打算是做成上架收费产品的,团队也都找好了,但是最后我发现我找到的同学对此都不感兴趣,大家只是对「收钱」这件事情本身感兴趣,后来也就是不了了之,一气之下直接开源。

PLook

只是没想到后续这个开源项目对我的影响这么大,阿里和快手都邀请我去工作,甚至还有团队邀请我去做技术合伙人等,这些事情都发生在短短的一两个星期之中,让当时的我整个人都懵掉了。

后来,这个「延后满足感」的事情补上了我的「反馈环」,正反馈从此开始。我做了越来越的 side project,不停的向外开源,不停的收到各路豪杰的交流,总之,很棒!

所以,项目是一个非常重要的东西。如果你不知道如何找到一个好的想法,可以先从观察生活开始,从解决生活中的一个小问题出发,通过这种方法可以锻炼出你对生活细节的留意。

实习

个人推荐整个大学中要经历至少两家公司的实习,可大可小,但第一家推荐去稍微小一点的公司,或者就是创业公司。为什么呢?首先,在所谓的「大」公司里工作,初入职场,我们都是小兵小卒,很难从战略层去考虑一件事,换句话说,你啥都不是。

在这种「你啥都不是」的前提下,我们的视野是非常受限的,不知道为什么要做这件事,就算可以看到一些所谓的「产品文档」,这些已经被产出的文档也只是用来描述这个「产品」的意义(也就是只画饼,不告诉你为什么要画),我们还是很难知道为什么要做这个产品,从整个公司的战略层面上,一无所知。

曾经我也在一家创业公司实习过,时间不长三个月左右。在这三个月里,我和另外一个小哥分别负责 iOS 和 Android 客户端的开发,做的是游戏开发。起初知道我要做的是游戏开发,内心非常拒绝,之前被游戏坑害过好长一段时间,已经彻底厌烦「游戏」本身了。

但最后还是咬牙坚持下来了,也确实是学习到了之前非常想搞的东西,我觉得最重要的是通过和 boss 的几次交流,上架时被 Apple 告知抄袭,封账号等等这些事情,让我对「游戏」本身产生了一个巨大的转变,让我真正明白了游戏是一个真的能够改变一些事情的。从一本书里看到这段话:

90后以及之前的人认为所处的世界是真实的世界,游戏里的世界是虚拟的世界,00后或者10后,父母因为太忙,在两三岁的时候丢一个 iPad 给他玩,在他未接触到真正的人际关系前,会认为游戏里的世界是真实的世界,真实的世界是虚拟的世界。

被告知抄袭的游戏,但已改版

再到后来,我越来约沉迷于实习,甚至疯狂翘课。究其本质,窃以为对于当时的我来说,通过在各大公司里实习能够得到比在课堂里更多的东西,同时我是一个坚定的「工作党」,所以很多事情可以舍弃。

实习,我推荐大二结束的那个暑假就可以开始。大一大二在学校里好好修炼,做做一些好玩的项目,在合适的时机参加几个比赛,体验与同龄人同台竞技的快感(秒杀他们的快感)。

比赛本身其实也可以算作实习的一种,你可以打各种比赛,如果你青睐于算法之流,大可对其宠爱有加,刷爆一两个 OJ 平台上的题目,成就感爆棚。如果你偏向于项目驱动(我是这样的),想通过项目去让自己接触到不同的东西,学习到不同领域的知识,那得多多留意一些社交网络上的信息,很有可能旁人的一句抱怨之时,就是你新想法火花的碰撞之际。

划水拿了个银奖

博客

我个人非常喜欢写东西,在当初高三每天轮轴转的日子里,半个小时左右的日记时间是我一天中最享受的时候。写作,首先是一个自己与自己对话的过程,其次是一个梳理的过程,最后是一个输出的过程。大一的时候我因为初来帝都,人生地不熟,巴不得天天粘到舍友屁股上,他们去哪我去哪,深怕不合群被「抛弃」。

后来,我慢慢感觉到这种做法好像不太对,我貌似都在为其他人而活,我没有了自己的时间,很多时候刚要进入学习状态,舍友的一声「走」,就把我拉了出来,想要再次进入状态,可谓艰辛。

但我总要写东西啊,最开始的做法是印象笔记里写,每个月给自己定一个目标,通过每天的日记去梳理自己为这个目标做出了哪些事情,明天还需要做哪些事,一周过去了还有总结,也有月度总结。后来慢慢发现我对学习上的内容变得开始游刃有余了,想要找一个地方去输出。

申请了微信公众号和百度贴吧,公众号因为不好用(不能被检索)而放弃,贴吧一直用了大半年,后来因为太 low 也不用了,最后自己吭哧吭哧的重装了 17 次服务器才把 Wordpress 搭好,我的个人网站 pjhubs.com 从此上线了,在互联网上,我也有了自己的一个「自留地」。

后来博客时不时被打,甚至有段时间被打到怀疑是不是腾讯云让我买它们的防火墙。最后实在折腾不起,从 17 年末彻底把博客切换到 github pages 上并一直持续到现在,虽说之前写的二十几篇记录大一大二的文章没了十分可惜外,剩下的还算 OK,推荐大家也这么玩。

写博客的好处之前我说过非常多次了,总结来说有以下几点:

  • 输出自己所学;
  • 结识小伙伴;
  • 打造个人品牌;
  • 获得工作机会;
  • 提升个人影响力(与打造个人品牌类似);
  • 学会「说话」。

其中我认为最后一点「学会说话」非常重要,大部分情况下我的博客文章都是 5000 字起,在完成一些课设报告或者论文时,七八千、一两万甚至三四万字不会感觉到任何压力,因为我已经学会了如何通过文字去展开描述一件事情。

「学会说话」本质上是学习自己如何组织语言,通过良好的语言组织能力把一件事明明白白的写出来,写得让他人一看就懂,写得日后自己回顾时能够再次醍醐灌顶,当然,这点我也在持续学习中。

从去年开始我给自己定下的博客文章目标是 50+/年。这相当于每周都要写至少一篇博客,刚开始我觉得这貌似不太现实,到现在我经常一周写超过三篇博客。其实仔细想想,不管是学习还是生活,如果我们真的实实在在做一些事情,每天其实都会引发不少思考,如何把这些思考后的结果记录下来,是一件非常重要的事情,甚至我们还是走在时代前沿的那一群人,这个行业看上去就给人一种「深不可测」的感觉,给人一种徒步在「马里亚纳大海沟」的感觉,在日常学习中通过博客去记录总结所得,既帮助了他人自己又得到了成长。

读书

读书是一件自己得到输入的事情,小学的时候我特别喜欢看漫画书,就是父母口中的小人书。三四年级的我非常非常青涩,并且也爱闯风头,甚至偷拿妈妈的钱凭一己之力在班里做了一个《隆聚图书馆》,每天早上谁想看什么漫画书都写上去,中午放学后用偷拿妈妈的钱把这些小人书都一本本买下来,没算错的话,当时把多啦 A 梦全集都买光了,最后看着一箱满满的小人书,成就感巨大。

再大一些,五六年级和初中时期,郑渊洁的《皮皮鲁和鲁西西》我也买光了全系列,甚至爱上了动物系列的小说,比如《狼图腾》和《猫武士》,其中《猫武士》给我了一个非常大的冲击,刷新了我对猫星人的看法。

高中时虽然课余时间不多,很难有时间看完一整本书,开始慢慢的迁移到杂志上,整个高中下来跟了《电脑爱好者》每一期,甚至还买了几本全年合集,还跟了几本类似「探索•科学」之流的杂志,每个学期结束时,枕边的书从头几乎要排到了脚,隔壁几个宿舍的同学都来我床上拿书。

大学之后,时间又变得多了,书看得开始随心所欲起来,甚至有时候沉迷其中无法自拔。记得用了一个晚上熬夜看完了《活着》,当时看完后,连夜写了一篇博客,几乎可以说是边哭边写,第二天还去看了葛优翻拍的电影。接着《三体》就火了,用了四五天晚上看了整个系列的三本,给我的影响又是巨大的,我之前从未看到过把宇宙描绘得如此庞大的小说,再次刷新了我认知,看完引发了我很久的思考。

去实习之后看书的时间几乎没有了,但是每天花费在通勤上的时间变多了,去年国庆节时忍下心买了当时 kindle oasis 2,对于学生时代的我来说简直是巨款(2200+),凑了好久都凑不够这钱,最后走的分期。

在 kindle 上我看了将近 50 本书,之前我认为读书一定是在某个区域进行阅读,总之就是一种非常传统的方式进行这个活动,但因为实在太久没读书了心里痒痒,到现在回过头去看,没想到每天实习上下班的通勤路上可以看这么多书,但是现在换公司后,上下班时间大幅度缩短,三个多月的时间只看了不到三本书。

我现在特别怀念当初在宿舍里挑灯夜读的氛围,听着舍友的呼噜声(或者游戏的「厮杀」声),独自一人沉浸在自己的世界中,通过眼前的书本跟着作者去领略不同的风土人情,感受不同的人生轨迹。

总的来说,读书是一件在大学里我认为同样非常重要的事情,大学里的时间真的太多太多了,可以做非常多的事情,可以认认真真的和自己来一场心灵上的交流,来一次自我探索的旅程。

今年的读书计划

兴趣爱好

我听到过太多同学当别人问起来「你的兴趣爱好是什么?」,回答都是千篇一律的「写代码」。曾经一段时间我也是这么回答的,但现在回头去看,当初我对这个问题的回答,可能是因为当时的我只喜欢做这个,并且只擅长做这个。如果这个问题你的回答,现在也是「写代码」,可能要好好思考一下自己是不是陷入其中了。

窃以为,「写代码」这件事是我们要必须做好的,而不是把「写代码」这件事占据了我们的所有时间。当然,不可否认的是,我曾经还真的就认为「写代码」写得好,是一件非常自豪的事情,实话实说,写得一手好代码确实是一件十分值得自豪的事情,但,我现在对此产生了怀疑。

不知道大家是否有写代码写多了就会产生一种「抑郁」的状态,感觉自己好像脱离了这个世界,窗外发生的一些事情自己好像与之隔离,舍友们每天所讨论的话题,同学们每天所进行的活动,都被自己「我要写代码」这一句话给统统「一叶障目」掉。

曾经有一段时间我感觉自己好像不太对劲,我好像慢慢变得「孤陋寡闻」了,后来看了一些书后,我明白了一些东西。人是群居动物,一旦脱离了「群居」,就会开始慢慢变得「孤僻」,慢慢变得「社交迟钝」,如果你也想像《瓦尔登湖》里描述的那般崇尚简朴生活,热爱大自然的风光,让自己变得像个智慧的老人,闪现着哲理的灵光也未尝不可。

但是别忘了,梭罗每周也是会到集市里采购物资,在湖畔边上的小木屋里与朋友谈天说地,他只是「独居」,并不是脱离「群居」。

大一时因为我还是要「合群」,跟舍友玩了好久的王者荣耀,甚至还会一起玩各种游戏,接着我花了 800 块钱买了第一台 22 寸的小山地自行车,把北京城刷了个大遍,但是每次骑车回来屁股都很痛。

跟几个同学凑了点钱,每个人借了 100 块买了台 iPod touch 6 作为我 iOS 开发的开发机,后来发现用它来摄影还不错,开始有意识的让自己学习一些摄影构图等知识。前两年北京夏天特别闷热,去北科办了张游泳卡,开始有空的时候就去划水。

大三时觉得玩滑板好帅呀~在淘宝上买了个滑板,因为太重导致玩了几次后就丢掉了,后来收到了一个生日礼物,没想到是「 github 限定版」,让我重新开始玩起了滑板,学了几招,摔了几跤(记得戴个手套)。

github 限定滑板

前段时间发现自己又脱离大自然了,狠下心用第一个月的工资买了相机,以此逼迫自己每周都要去拍片,逼迫自己去靠近大自然,继续感受生活。前两周发了第二个月的工资,又狠下心买了辆入门级的公路自行车,想要去更远的地方,迄今为止已经跑了将近 200km。

是车车啦

兴趣爱好这个东西,个人认为同样非常重要,能够让我们从工作学习中脱离出来去逼迫自己「切换状态」。在 ifLab 里流传这么个事情,「如果遇到特别难搞的问题,去睡一觉,一觉醒来就明白了」,这个做法是真的不错,究其本质也就是让我们切换个状态,让大脑从「僵硬」的思维中抽离出来,切换去做一些不同的事情让大脑「清醒」。

比较遗憾的是我不会任何乐器,之前跟着舍友学了好几天的尤克里里,只能弹出《小星星》这种非常入门的曲目,拓展自己的乐器弹奏技能也是一个不错的选择。

后记

以上所说的这些事情都只是从我个人的角度出发,可能有些点不太正确或者过于私人,但整体回头去看,这些点对我整个大学的学习生活都有不少帮助,希望也能够对你有所帮助。

这门课虽然在我大二时并没有,但你们大二时可以进行选修,可以说你们的起点都比我们这一届好太多,至少能够系统的理解「开源」本身,学校的安排固然有其考虑,但我还是希望大家能够有自己的思考,多用一些时间去思考自己的未来要怎么走,多用一些精力去探索适合自己的道路,多去尝试,多去失败。

当初我对自己的定位是 T 字形人才,总的来说就是「尽可能的拓宽自己的知识面,尽可能的深挖一个点」,目前来看虽说做的还不足,但也还在持续推进中。现在网上的学习资源比我当时优秀得太多太多了,很多知识甚至都不需要花费一分钱就可以拿下,知识付费可以,但不要盲目付费,韭菜就这么多,割多了容易断苗。

对了,当初给 2019 新生写了一封信,可能也会对大家有帮助。