我第一次接触到「开源」完全没有像各位同学一样有系统的去从头开始梳理,比如开源的发展、开源的一些的关键细节,反而刚开始就是非常直接的有学长告诉我,其实也就是我在 ifLab 社团里的师傅,现在叫导师,我跟他说这个东西写不出来啊,好难啊,我想了又写,写了又删,都两三天了,问题太多了,跟我师傅说完这个事情后呢,他一针见血的说出,你直接去搜开源的组件啊,为什么要自己写,这又不是你的关键点,师傅这么一说,感觉就好像有人点通了我的任督二脉一样,对啊!这并不是我写这个东西需要去解决的关键点啊,发展到后来就变成了写一个 app 或者写一个系统,只要不是关键点统统使用开源的解决方案,大大加速了开发进度。

给大家看一个例子,这是我参与了两年多的项目 vary app,如果大家感兴趣可以去 app store 里下下来玩一玩。

我们把与核心业务毫无关系的组件统统采用开源解决方案,比如网络请求、UI 布局、自定义相册选择器等等,大大减少了开发者的精力,能够让我们更专注在产品的核心体验上。

这个时候我是不需要直接把开源组件拿过来的,首先是因为我的毕设要尽最大可能的抛弃非必需开源组件,因为毕竟是我的毕设嘛,毕设相当于是对自己本科四年学习的检查嘛,本质上我还是想要去考验自己,所以非必需的开源组件,比如网络库以及类似于 JSON 数据格式转换等等这些过于底层的库就没法自己写了,因为写好一个这些库基本上也就是你的毕设了。

剩下的比如 UI 或者业务相关的组件统统自己写,这样造成的后果就是开发周期被极大拉长,是极大拉长,因为之前之所以要涉及到 UI 组件都要自己从零开始写,很大一部分原因是因为没有任何一个开源组件能够满足我的需求,我又不愿意低头,我就要在自己的毕设上达到完美,所以只能自己写,这导致最严重的后果就是我从 18 年的五一节前后一直写到 19 年的六月份答辩前期,都没写完,答辩的时候还有几个模块没写完,工作量太大,一个人搞不定。

后来我复盘了一下,如果我对自己降低要求,最大可能的使用开源组件,只需要不到两个月的时间就可以完成,这就是目前开源的力量,只要你不想写那些犄角旮旯的事情,总会有人已经帮我们做好了,让我们可以关注到最重要的环节。

接着跟大家聊聊工作,找工作最直接的就是简历,幻灯片上展示的这份简历比较老了,这是我去年毕业时的简历,个人认为结构还是不错的,没有废话,看完你能知道我会什么,产出了什么东西,这些东西有什么收益等等。

对于 个人来说开源都能够给到如此大的影响,那对于一家公司或者团队来说影响力那就更大了。目前哥哥公司或者团队都在尽自己最大可能的做开源,这在我大一或者大二或者前几年是完全不可能的,大家想想看,以盈利为目的的企业为什么把自己写好的代码或者一些系统组件开源给别人用呢?这不是明摆着自己降低竞争壁垒嘛?但今非昔比了,一家公司或者一个团队里的人才是最核心的资产,现在的产品或者系统越做越大,看上去好像谁都能写,但实际上想要找到一个活好还能产出高的人才是非常非常难的事情,折不像前几年大家的东西都还在摸索阶段,产品策略变化很大,现在的互联网产品形态基本上已经定局了,现在大部分都在做一些微创新,说是微创新实际上是一个非常好听的说法,包括用户实际上也 被培养得很挑剔了,想想看我们现在习惯了通过抖音快手去看短视频,习惯竖着滑动切换下一个视频,如果这个时候再出来一个短视频新产品,是斜着滑动切换下一个视频,这个产品做出来不会有人用的,因为用户都被抖音快手这些短视频霸主教育得很好了,对于短视频这个产品形态已经被培养了一种所谓的「习惯」,但是我非常不喜欢「习惯」这种说法,我觉得着说句不好听的就是强奸用户,说好听的叫绑架用户,所以在现在这种求稳的情况下,团队中的人变得比以往更重要了,那些随随便便裁员的公司就是扯淡,就是产品数据已经无法看了,只能通过裁员这种伤敌一千自损八百的下下策。

现在培养一个新人难度越来越大,所以之前很多同学出去找实习,有问到我说 HR 问我能不能实习三个月或者六个月起,但是我还要做毕设啊还要上课啊就说不能,导致就剩下 HR 面没过,我觉得这样真的太可惜了,如果后续大家出去找实习的时候经历过了一二三面,最终到达了 HR 面,HR 说什么要求你都答应,尤其是问你能实习多久,直接说双方适合的话,我可以一直干下去,这不是说我们去求 HR 给工作啊,这是一个策略,实习签的是劳务合同,想走随时走,工作是平等的。

说到了工作那就到了开源给我的第二个改变,这部分影响是最大的,前面铺垫了很多内容就是为了引入这第二个改变,如果各位同学也像我一样本科毕业后就想着工作,而且是找的计算机相关的工作,想想看大家未来可以在简历上写什么,无非就是绩点多少多少,上过什么什么课,拿了什么什么奖学金,参加了什么什么比赛,参加了什么什么项目 等等,这样的简历基本上大家全都是一样一样的,从结构上看几乎每一份都一样,但是从面试官的角度出发,我当过面试官,当时在滴滴实习的时候,面了几个实习生同学进来一起写代码,还是能聊一些的,我是从实际情况出发的啊,没有乱说,包括跟我的 mentor 和其他面试官也都聊过。

比如之前我们说的简历上写了上过什么什么课等等,这些东西面试官根本不看重,换句话说,你上过什么什么课这种事情只要说计算机相关专业都会上啊,为什么要把你上过什么什么课都放到简历上,难道你学的计算机和我学的计算机专业不一样吗?我学了操作系统你没学过吗?或者换句话说,这些基础知识本来就是应该掌握的,为什么要着重浪费篇幅去写呢?

前几年当我大二出去找实习的时候,哪有企业像现在一样可以允许零基础入职,简直天方夜谭,当时我一样找的还是 iOS 开发的岗位嘛,去的是在北辰附近的一家公司,在北辰是哪家大家想想也应该能知道,我就不说了。

当时都不给我做自我介绍的机会,上来就一份试卷,全都是跟 iOS 开发直接相关的题目,比如如果实现一个图片下载器,如果实现一个京东首页海报轮播图,卧槽,我当时整个人都傻了,心里想着我只是个大二的臭弟弟,生活对我下手了。

完全懵逼的状态,然后就让我走了,最后我当天晚上还傻乎乎的睡不着,当时看着办公环境好棒,太想进去实习了,凌晨给面试官发了一条长长长的短信,说我其实很有潜力的,求求了给我一个机会吧,我会好好珍惜的,一定会抛头颅洒热血等等之类的事情,但是很明显嘛,面试肯定就凉了。

所以这么一看,我们能够写到简历上的东西就更少了,之前我帮同学改简历的时候,他真的没有东西写了,我帮他删掉了一堆废话,比如籍贯、性别、兴趣爱好、上过的课、在某些学生组织里做的事情,比如协助举办元旦晚会等等之类的废话,这是一份技术简历,你为什么要让面试官知道你协助举办了元旦晚会,我不是说协助举办元旦晚会不好,而是这是一份技术简历也,这份简历你的面相对象是技术背景的面试官也,你在技术简历上不突出你的技术能力,突出你在元旦晚会上调灯光干啥?

最后我的这个同学他的简历精简后只剩下不到一半的 A4 纸,最后没办法了,再怎么没东西写也得凑够一页 A4 纸吧,我开始给他梳理之前做过的课设都有什么,给我的答案惊了,我这个同学做过难度最高的跟技术相关的就是安卓课上做的计算器,我当时都吓坏了,但我没好意思表露出来,我只能不停转换简历上的修饰词,帮他不停的润色,比如说结合使用了栈、队列和链表等数据结构实现并优化了连续四则运算过程中出现的性能问题,降低了内存使用率,提高了对 CPU 瞬时计算的压力,这话说的,我写完自己都觉得不好意思,实际上他只实现了加减乘除,连加连减不会,就没有这个功能。他知道意思,但就是写不出来,我只能给他支个招,面试官如果真问到这个,你就直接说思路就好。

但结合前面我们说的这一堆,在企业已经转变了思路,从以往的封闭到现在拥抱开源,并且是几乎只要是个比较大的互联网公司或者企业都在拥抱开源,再给大家支个招,以后找实习或者工作的时候,去搜一下看看这家公司有没有做什么开源的事情,如果没有就别去了,因为有极大可能这家公司对技术可能,我说可能啊,可能不会那么看重技术,但国企、有军工背景之类的事业单位就别这么看了,不是一个类型。

在企业已经转变思路的情况下,在企业已经拥抱开源的情况下,我们去做一些符合目前大部分企业去做的事情那是最好不过,换句话说就是,我们也要去拥抱开源,不是说大家上完这个课就叫拥抱开源了,要去做一些开源的事情,而且这些事情要做到能够登上简历的事情,举个例子,之前我的一个 WWDC 期间认识的一个小伙伴,人家就给 Swift 语言提了一个 Merge Request,还被 accept 了,被合并到了主分枝上,Swift 大家或多或少听说过,Apple 目前的官方开发语言,如果这个小伙伴以后去找 Apple 生态圈相关的工作,比如开发 iOS 或者 iPad OS 甚至是 macOS 平台的工作,简历上写了给 Swift 语言修复了一个 Bug,并且被合并到主分枝,这个简历含金量是巨大的,注意我的用词——巨大,这就是实打实的能力,好过凑各种乱七八糟的项目啊、比赛啊靠谱多了,而且是相当靠谱,这份简历拿出去,不可能被 HR 刷走,并且99%的概率实习随便找,剩下1%找不到工作的概率是看我这个小伙伴想不想找了。

所以如果我们能够转变自己的思路,不要再写出千篇一律的简历,多关注一些目前企业正在做的大方向事事情,并且如果我们的目的还是为了工作的话,提前或者从现在开始就去做一些开源相关的事情,不管这个事情是大是小,对我们的帮助都是巨大的。

在我还是跟大家处在同一个时期就是大二和大三的阶段,这个事情之前也有分享过,因为这个事情彻底改变了我对技术的认识,所以我觉得非常有必要每次都说,这件事起因是这样的,我也是上课不好好听课,刷微博刷知乎,当年的知乎真的能看到不少东西,现在就算了,都是人在美国刚下飞机。刷着刷着看到一个关注的技术大佬我忘了是他在发起还是在分享这个事情,说如果我们能够每天都去 github 上提交代码,去做一些提升自己的事情,这个事情不一定非得是解决啥啥啥问题,不一定非得是修改了什么开源组件的 Bug 之类很长尾的事情,而是一些小的点,而这个小的点又是自己不知道,比如每天一道算法题,每天学一个 CSS 知识,每天完成一个 android 或者 iOS 的小动画或者小功能,比如模仿推特的开屏动画,模仿头条的信息流布局等等,每天就做一个小事,然后每天提交代码,持之以恒,坚持一年,在 github 上的小绿点都打满,这样找工作对于你来说就是顺便的事,不是一个必须的事,我当时看到这个消息后非常激动,当天就开始,并且当时离 18 年的元旦不远,也把这件事作为了 18 年的年度计划,后来还真的是坚持了一年,但因为事情真的太多了,导致我已经尽了最大可能去提交代码了,可能有些同学会觉得提交代码我随便写点不也提交了嘛,但别忘了这件事是做给自己看的,不是给别人看的,为了完成每天的任务敲几个空格就 commit 这没意义啊。

我记得非常清楚的是这一年的时间很长,就算是做自己的事情做学校的课设啊比赛啊什么的,还是会出现每天不知道写什么,然后我就开始接触了大量的关于大前端的东西,小程序、React Native、Web 开发等等几乎当时我能够想到的都摸了个遍,并且还做了不少好玩的小东西,重点来了啊,在做这些事情的时候,因为我最开始就是做 iOS 开发或者也可以认为是 Apple 生态圈开发者,导致我在学习其它技术的时候会有一个对比和总结,恰巧转机就出现在了这个我做的对比和总结上,我还会把这些文章发到其它技术平台上,经过了一段时间的积累,我成为了当时的一个技术小博主,吸引到了不少公司发来的工作邀请,也是在这个时间段,认识了很对圈子里的人,并且也是这个时候我才上道了,这个时候我也才认识到最开始我的认识是错误的,大一刚入学,觉得自己解决了老师布置的任务,实验啦,我就已经是所谓的程序员或者说是计算机行业人员,但这根本不是,这根本就没有进入到圈子里,我们手上一点资源没有,不认识人,没有社区交流,我们毕竟还是要和人打交道对吧,之前还有人跟我说搞计算机很舒服,可以不用和其他打交道,大家想想看,这可能么?那些被媒体宣传得彷佛不食人间烟火,但实际这些大佬在各个邮件组里比微博上的那些公知们还活跃。

总的来说呢,这件事我是非常推荐每一位同学去做的,不管基础好坏不管兴趣大不大都可以并且一定要去做,最开始我也挺烦小程序的,这破烂玩意儿体验这么差,两年前的小程序 IDE 更是一坨屎,根本没现在这么舒服,但硬着头皮自己还是深入进去了,也确实了解了张小龙所要表达的东西,但现在再活过头去看当初自己为什么要做这个让自己接下来两年的时间里每天都花费如此大量的时间去提交代码的事情,折海不是因为当时自己的喜欢嘛,我喜欢实践出真知,这句话说得多好听,其实就是不怕死,换句话说叫闲的,正常人怎么可能会让自己每天处在如此焦虑的情况下,纠结今天要学点什么好,得抓紧学点东西,要不然今天的没代码提交了,当时每天晚上就是倒头就睡,其实这一切就是喜欢嘛,喜欢并且感兴趣这是做事情的前提。

给大家借助这个机会再分享一个事啊,先做个小调查,有同学知道 WWDC 是什么么?有同学知道 WWDC Scholarship 是什么么?

我为什么要说这件事是这样,WWDC 是 Apple 全球开发者大会,也被称为科技界春晚,这个 title 给的应该不需要我多说什么了吧?如果我们想要以个人身份去参加这个大会呢,首先你需要支付换算成人民币一万块的门票,花钱就算了,这还不是每个人都能去,需要被抽签,抽中了你才能去,跨国机票自己付,一周的住宿费自己付,Apple 在会场里只提供了早餐和午餐,巨难吃,一万块人民币的钱能够做出这么难吃的东西,也只有苹果才能干得出来。。。后面会放图。

这一来一回,花费得两万上下,个人花两万块才能去一次,这对于我们这种学生开发者来说几乎没有人能够负担得起啊,那怎么办呢?苹果爸爸非常贴心的提供了学生奖学金也就是 WWDC Scholarship,这是令所有开发者都羡慕的奖项,Apple 免费给你提供了价值一万块的门票、免费的住宿,有需要还可以申请来回机票,换句话说,你在加州待的这一个星期,如果你想省钱的话,你可以一分钱都不需要花,如果你还是个初高中学生的话,苹果爸爸真的就像个爸爸一样派个小哥哥跟着你,可能是印度人可能是黑人可能是拉美人,总是你会和这个小哥哥过上一周非常美妙的生活。

每年的 WWDC Scholarship 在大中华区(港澳台)都会有将近 30 人获奖,并前往加州圣何塞参加 WWDC,但由于今年情况特殊,均无法前往。我们学校从去年也就是 19 年开始已经连续两年都有同学拿到了奖学金 ,今年是徐正科学长,不过今年有点可惜,我都跟他说好了要给我带全套 Apple Park 纪念品。不过去年我是一个人摸索出来的套路,有可能是运气,但今年徐正科在准备的时候,我把去年准备过程中的建议和思路都给他说了一遍,当然其他一起在准备的同学我也说了,但至少在社团层面上,我们已经有了一套可行的计划,获奖概率大大提高,如果大家感兴趣的话,可以进入社团后一起准备 21 年的奖学金。

给大家大概看看我们学校这两年获奖的作。

2019

2020
上面这个是去年徐正科学长的作品,他做的是他小时候玩的万花筒,可以在他的作品里教你如何通过代码做一个万花筒,大家如果感兴趣的话,可以直接找他,我就不多说。

说到这个就顺便再带上一些关于我的小组项目介绍,大家应该或多或少都知道这两年少儿编程或者叫编程教育非常火,Apple 从 2016 年开始推出了 Swift Playground 等相关的一系列针对编程教育的软硬件,而 Swift Playground 也是每年 WWDC Scholarship 唯一的项目入口,只能通过 Swift Playground 去实现你的想法来完成参赛作品,如果放得更大的层面来说,只要家里的小朋友或者就是大学生,任何专业又甚者是各个年龄段从未接触过编程的人,只要你有一台 iPad,无论价格高低,就可以学习编程,用现在公知的话来说,就可以学习到这个通往未来的语言,说是这么说,但是说的确实没错。

在小组项目里,大家可以选择去修改或优化增加已经写好的 Playground,通过 Playground 去实现我们的奇思妙想,可以是做一份讲解 HTTPS 流程的工具也可以做一份迷宫寻路算法的游戏,甚至你还可以利用 AR 的能力完成悬空画画等等大家想要实现的东西。

如果大家感兴趣的话可以一起玩耍,B 站或者 Apple 官方的开发者 app 上有成堆的关于 Swift 或者 Apple 生态圈相关的视频和教程,甚至你还可以利用键盘和游戏手柄来创造属于你的游戏。