作为实习生的一年

0X00 When and Why

我是大三下学期即将结束的时候出来实习了,故事说来比较诡异。一天下午像往常一样背着包到教室准备上小学期的课程(小学期就是为期一个月的综合实践),一个朋友跑过来悄悄跟我说“hey 大家都在找实习了,你怎么还不着手找哇”。当时一听我就慌了,很慌的那种慌,然后那天下午把之前准备的简历投了出去。毕竟学期即将结束,其实我是想要回家过一个暑假的,所以我也就没打算真的找到实习,只是说尝试着面试一下赚一些面试经验。那既然目标是赚取面试经验就只投大厂呗,小公司面试经历的用处可能没有那么大。当天下午我就只投递了“知道创宇/知乎/陌陌”三家,结果还没下午课程还没结束呢就收到了创宇的面试通知。另外两家其中一家拒绝了我,另一家一直没有回馈信息。

后来面试还算比较顺利,拿到了offer后就咬牙放弃了最后一个暑假回家的机会,退掉了好不容易抢到的火车票,在2017-07-24就正式入职创宇的实习生岗了。所以说我几乎是被朋友忽悠出来实习的,再加上运气好拿到了创宇的offer,要不然我还要回家过暑假呢,哈哈

0X01 面试&笔试

面试当天到了公司,在前台登记后给了我一份笔试题,内容是真的记不起来了,不过都比较简单。多是关于Python语言的一些问题和Linux系统操作的一些问题还有一些基础的SQL,没有问到关于我应聘岗位使用的Django框架。笔试题答好后我现在的部门总监就来开始面试了,除了问我笔试题的答题思路以外还问了些我搞不懂为什么问的问题。比如问了我“栈溢出攻击”,然而我并不懂安全而且部门也不是安全产品部门,所以我并没有答出来,后来还是面试官给我科普了一下“栈溢出攻击”是什么。我记得后面问的最具技术性的问题就是我学过什么Web框架,我说了解过一点点Flask后面试官问了我为什么选择优先学习Flask。在此之后就是“会不会用梯子?梯子是买的还是哪里的?会不会用Linux?用的什么浏览器?”这类更偏向“程序员文化”的东西了。最后面试结束的时候问了我简历上的个人博客和Github有没有在更新,我说在更新后面试就差不多结束了。

因为互相加了QQ,在入职之前还给我说过感觉我Github上项目的代码比较整洁,挺合格的。其实当时我Github上就一个小项目,很小很小的那种,所以说Github在求职过程中还是非常非常有用的。

0X02 入职时的水平

当时刚刚入职的时候,部门的技术栈几乎是全不懂(全不而非全部,是真的不会)。只有了解过一点点docker/flask/操作系统/网络等知识,对Linux的使用和操作比较熟悉,Python只有在语言上比较熟悉,而项目中大量使用的框架Django和git工具是从来没有用过的。

现在想来,其实不管什么语言什么框架的公司,熟练掌握”操作系统、网络、Linux、git“等这种通用的理论和技能都是绝对没有错的。所以大家不知道学什么的时候就可以去学习这些通用知识,任何时候学习通用知识和技能都是绝对不会错误的。

0X03 实习一年在干嘛

从最初入职的时候写单元测试开始,因为写单元测试可以比较快速的了解项目的业务逻辑,也会看大量的业务代码,是新手上手一个成熟项目的良好办法。之后就从单元测试->小功能->从0到1的小项目->几个小项目的主要维护人。现在就是在负责几个比较小的项目,感觉虽然没有扛起重担,但是起码能够独立担任一些小项目的各项适宜了。

这一年里也逐步的学习了更多的东西,目前来说工具上的git和docker已经和其他同事差不多同水平了,最重要的Django部分也是一直在变得更好。最近因为前端人手不够用,还开始接手一些前后端绑定的任务,着手写一些功能简单的Vue。

当然了,作为一个实习生中途肯定多少会有一些做零活的时候,比如搞一些Excel之类的。不过公司这点还是很棒,招实习生的目的就是未来成为正式员工,所以没有给安排很多零活,大多都是符合当前定位且对转正后工作又帮助的任务。

0X04 创宇真的好?

最初面试的时候,我的面试官给我说”我们部门不加班的“。其实当时我是不信的,不过后来才发现是真的,实习整整一年后我提的加班都不到16小时(两个工作日)。这无疑是一个很大的诱惑吧,一家程序员不加班的公司谁不喜欢呢。

还有就是公司倡导的扁平化管理,虽然领导就在同一个办公室,或者就坐在你隔壁你对面,但是大家完全不会拘谨。互相之间只会喊X哥或者其他绰号,即使是上级叫下级也是直接叫X哥或者绰号,很少直接叫名字的。而且上级安排工作也是会真正的考虑到大家的感受,并不会强行安排工作到头上。

公司还会给提供培训的机会,比如参与各种相关交流会、分享会等,各种会议的入场费都是可以报销的。而且公司也会时不时举行内部的培训,很多时候都是针对技术的而非一味强调战略、管理、文化这些。上周才刚刚参与了公司专门针对应届毕业生的培训。整整两天的时间,公司的销售总监、人事行政总监等高管专程从北京飞到成都来给我们上课。

这还不是我对公司印象最好的地方,我觉得创宇最棒的地方在于你的同事会像学校里的老师一样给予指导。我的mentor曾多次站在我身后给我讲代码和业务逻辑超过半个小时,从来不会说因为自己没空就不提供指导,更不会因为自己没有好处拿就找借口不管。最近我在接触Vue的时候也是,前端同事多次站在我身后给我讲前端需要注意的东西,给我说需要看哪个教程,甚至会给我布置作业。这种细致入微的指导恐怕很多学校的老师都做不到吧。有着这么好的条件,不仅能够学到东西还能拿到不错的工资,能不喜欢才怪呢。

0X05 谁都有挫折

当然了,工作不会是一帆风顺的。最初开始做一些功能性任务的时候,受到挫折最大的一次,自己提交的一个commit总共只有200行左右的代码,在Review的过程给打回了80多90个修改意见,也就意味着每两三行就会有一个问题。那段时间写完代码都不敢提PR上去,提了PR上去之后整个人都是提心吊胆的。

在对语言和框架熟悉一些后,代码Review上的问题越来越少了,写代码也就快了起来。不过这样一来Bug也就随之出现了,最多的时候一个月出现过两次轻微的线上bug和一次小的生产事故。所以后来每次发布带有我代码的版本时,整个人也都是虚的,总觉的马上就会爆发线上BUG甚至是生产事故。

不管是之前的Code Review恐慌还是后面的BUG恐慌,都曾经有过”要不离职吧“的想法。后来想了想,虽然被项目经理叫出去谈过话,但是也只是让我再多注意一些,并没有很暴躁或是有让我走人的意思。所以应该还没有到走人的程度,毕竟作为实习生公司是可以随便让我走人的。那段时间我就一直在调整状态,也一直在学习,更要随时注意细节,防止再次发生问题。在经过这些事情之后,现在感觉比以前好了一些了,起码不会觉得自己要离职了。谁的职业生涯会是一帆风顺的呢,幸好我坚持过了那段压力很大的时候,感谢自己吧。

0X06 目前水平

这一年实习下来,在Python的语言和Linux上没有明显的进步,毕竟Python常用到的地方也就这些,那些高级用法用到了再去查一查也无可厚非,而Linux的卓面版也整整用了一年了,虽然没有太多运维技术上的提升但是起码用的更加熟悉了,也找到了一些适合我使用习惯的软件来支持我。

一年来进步比较大的就是Django和两个工具:Docker和git了。Django从入职时候的0基础,到现在可以独立负责一些小项目,应该也算是入门了吧。Docker和git两个工具平时用的很多但是却用不到比较深入的功能,所以已经和其他同事的水平差不多齐平了。

最近两个月以来,自从接触了SpaceVim之后使用Vim的比例大幅度提高,Vim的技能比原来高了好多,哈哈哈

0X07 未来的计划点

目前技术上最重要的就是Django/DRF框架和前端的Vue。Django/DRF再多学多用一些,争取尽快达到其他同事的水平和大家追平吧;Vue就慢慢来,争取能够自己独立完成一些前后端数据对接和简单逻辑的工作。

还有比较重要的一点就是提升自己的软实力,其实好多时候去分析遇到的问题都不是直接的技术不足导致的,所以时刻注意提升自己的专注力、思维发散能力、产品思维也是非常重要的呢。