【分享】学长的安利来了~~O(∩_∩)O
前言:应栋哥要求,学长把演讲稿稍微整理下发布出来,这可以算是一篇安利文,也可以说是一篇经历文吧。作为一个确确实实从软工里收获到挺多东西的过来人,学长希望可以通过学长的经历来让你们对软工更加期待。
安利
学长是栋哥开设的软工实践这种新的教学模式下的第一届学生。也许到现在,你们对这门课程只感觉到累,熬夜到快崩溃了,学长可以跟你们说,熬下去,过不了多久你们都会有自己的收获体会的。
学长们当初也是这样子熬过来的,也在这门课程里收获到很多东西,尤其在实习和找工作过程中,这门课程提供了很大的帮助,可以这么说,学长收到的 offer 都是靠用软工的经历来说服面试官的。
所以,学长是觉得栋哥的这种教学方式是一种很好的方式,学长那届是第一届,有些方式也还在探索中,学长也希望这种教学方式可以不断完善下去。所以作为第一届的学生,今天就过来跟大家聊一聊。
换句话说,其实,学长今天过来也就是给你们安利下栋哥的软工实践这门课程的,虽然你们现在已经在栋哥的班上了,但还有下一届的学生,下下届的学生,学长希望可以带个好头,让更多同学知道栋哥这门课程的好处,吸引更多的学生,让栋哥这门课程越办越好。
既然是过来安利的,就先跟你们说说这门课程有哪些好处,然后再说说学长的一些软工经历,以及找工作和实习中的一些体会吧,你们应该会对这方面比较感兴趣点,毕竟下学期开始也会陆续有一些公司开始春招了,不管你们是要考研还是就业的,下学期也都需要开始着手做准备了。
首先是好处,你们选课前应该也都有看到栋哥这门课程的介绍了,栋哥跟你们说,上完后有机会到福州最好的自主餐厅吃一顿,学长可以跟你们说,吃两顿也是够的,而且是最好的。
另外,你们还有机会可以得到 BAT 这种大公司的关注,学长那届大概是在春招的那段时间,腾讯的 hr 直接找栋哥要学长们的简历,虽然最后有些可惜,但这样你们至少比别人多了次机会,相当于是有了内推的机会。
而且栋哥说,把软工这门课程做得越出名,这种机会只会越多,所以这就需要大家共同的努力了。
还有,在实习过程中,你会发现公司里的很多处理方式跟软工实践是那么的相似。在找工作中,面试时,学长自己的体会就是软工的这些经历面试官都挺感兴趣的,兴趣一来跟你也就越聊越多,面试通过的机率也就更大。
最后,你们还有机会跟栋哥合作,有机会让栋哥辅导你们发表论文,有机会体验一把助教的工作,栋哥会带你们到其他学校参与教学交流、分享,栋哥也会把你们拉进像邹欣老师,周筠老师这些前辈、名人的圈子里。
软工经历
对于软工经历,印象比较深的基本都是团队开发期间的一些事了。学长是比较幸运的,因为碰到了一个挺负责任,能力也挺强的一个组长。
学长的团队是除了组长外,其他三人都是刚开始学习安卓,所以我们的组长就这样带着我们三个小白,硬是把项目给做了出来,最后还可以去福州最好的自助餐厅吃一顿。从质量上来说,我们的项目比其他挺多团队都要差点,但就像软工课程要教给我们的思想一样:做软件,做项目,不是只会敲代码就可以的。
就像,《构建之法》中提倡的 Learning by doing 这种教学理念,其实,等你们实习时会发现,在工作中很多布置到你手上的任务都是你没学过,也没接触过的知识点的。很多工作,都是需要你从零开始学习,边学边做出来的。
所以,有的同学是这学期才刚接触开发,刚开始学习 java,学习安卓,学长想告诉你们,不用一直说你才刚学,你还是个小白,时间不够,最后会做不出来之类的话。Learning by doing 本来就是一种收获,公司不像学校,没有时间,也没有精力先教会你该怎么做,然后才让你去做。
所以,公司看中的都是你的学习能力,你的学习效率。栋哥不教你们语言,只教你们怎么开发产品,为的就是让你们能更好的适应和掌握 Learning by doing 这种方式。
回想一下,你们以前上过的实践课,基本也都是老师先教你该怎么做,然后才让你开始做,这是在学校,有这个时间来等你先掌握。
所以,为什么学长说收到的 offer 都是靠软工的经历说服面试官的,为什么面试官会对软工的这些经历感兴趣呢。因为栋哥的软工,是让你体验,掌握 Learning by doing 的能力,面试官经常喜欢让你说说你的一些经历,也就是希望从你的经历中听出,看出你的学习能力,学习方式。
所以,学长建议你们,不要一直担心自己能力的问题,你们的熬夜,你们的坚持,等到你们最终把产品做出来的那瞬间,你们也会自己感觉到特自豪的。特别的是,如果你适应了,掌握了 Learning by doing 这种学习方式,你们在今后的工作中会成长更快的。
说一些经历吧,学长比较有印象的一件事是每日会议吧,我们组长对这些事要求比较严格,他让我们开会的时候不能嘻哈,不能坐着,也不能倚靠着门或床沿,大家尽量围个圈,然后每个人汇报自己昨天都完成了什么,接下去做什么,有没有碰到什么困难。至于这样的好处,我们组长说,这样方便他掌握项目的整个开发进度,也好让他更好的了解组员的能力,以便做出安排,划分任务。
学长不是 PM,体会不到这些,只是从队员的角度来感觉的话,学长觉得每日会议的好处就是提高了我们的开发效率。因为按照我们组长的要求,我们每日会议的氛围是挺严肃的,然后在这种氛围中,如果汇报的时候说自己昨天什么也没完成的话,总会感觉有些不好意思。所以,自己都会熬夜把当天的任务完成了之后才睡觉。
还有一点好处就是,学长实习期间,每周都是要开会的。而开会的内容跟栋哥让我们做的每日会议的内容基本一样,都是组长先总结上周完成的工作,上周未完成的工作,还有就是布置下这周的工作,然后就是每个人汇报下自己上周的进展,这周的计划。
有一点不同的就是,我们在学校时,时间可以自由安排,也就是说如果有人碰到困难需要讨论时,我们可以不用顾忌开会的时间,一直讨论下去。但是在公司里,开会一般都是半小时到一个小时之内,如果你遇到什么困难,并不是在开会期间就讨论该怎么解决,而是你要把你碰到的困难,在你的发言时间内表达清楚,让组长明白你遇到的到底是什么困难,开会结束后,组长会再找时间跟你讨论。
所以,学长是建议你们每日会议不要水,也不是要求说一定非得像我们那么严肃,每组有每组的风格,只是说,认真的参与进去,这样以后进公司后相关的一些会议就会比较有经验了。
其他记得比较清楚的经历就是项目管理和团队协作开发,也就是 git 的使用,和代码冲突的解决。
我们组长对这部分的要求还是很严格,我们当时是用 github 托管代码,我们组长不给我们直接 push 的权限。我们组员只能通过 fork+pull request 的方式来提交代码,提交的代码经过组长审核后,确定没提交一些没必要的东西时他才会合并到项目中去。(你们如果不明白这种方式,可以在网上搜索 fork 和 pull request 的相关资料进行了解)这样做其实是因为,当时我们团队都才刚接触 git,以前也都没有什么团队开发经验。
在开发过程中经常会碰到一些代码冲突,就是当你更新项目的时候,发现你修改的部分也有其他组员修改过,git 又没办法自动合并时,就产生冲突了。当时是因为有些组员对于 git 使用不是很熟悉,也没多少解除冲突的经验,然后直接将有冲突的代码提交到 github 上,导致其他组员更新项目后,项目编译就报错了。
所以,我们组长才要求,为了保证大家提交的代码里没有错误的代码,把我们 Push 的权限都关了,只有经过他审核过才合并,审核不过退回去重新改完再提交。其实,这样也让学长养成了每次提交代码前都会再检查一遍的习惯。所以这点,也还是挺好的。操作也不会很麻烦,如果对 git 操作熟悉了后,也就是多了一步 pull request 的步骤。
而且,在学长实习期间,因为带学长的那个前辈比较忙,他说如果代码写完了直接提交到仓库就可以了,学长当时都有点惊讶了,他都不检查下直接让学长提交,万一改动了不该改的地方提交上去了怎么办,所以自己养成的复审习惯,让自己每次提交前都会小心再小心,这总是好的。
还有一点,栋哥让你们使用 git 来管理项目,学长也是建议你们按照栋哥说的来,我们那届其实还是有些团队平常都是用 QQ 来传递代码,手动复制粘贴来整合项目,只是最后才通过 git 提交到 github 上去的。
git 的功能其实是很强大的,也许你们刚接触,很多都不理解,反而觉得耗费时间,但可以的话,学长还是建议你们多抽点时间出来学习,熟悉下 git 的使用,多用用 git 总没坏处的。
学长刚去实习时,公司就是给了学长一个访问 git 服务器的 SSH 秘钥,然后给了学长一个项目地址,让学长自己去学习 git,去把项目下载到本地来。学长有个同学,他情况比学长好点,他是他们公司有给他们一些git的教程,让他们自己去学。所以栋哥让你们学习使用git并不是在***难你们,你们学的这些在日后都是挺有用的。
最后,软工的经历就这些吧,如果你们有兴趣可以去看看学长的博客,学长有把这个经历以故事的方式记录下来。你们可以当作是看短篇小说。下面就给你们说说学长找工作的一些经历吧,找工作时软工这门课程确实提供了非常大的帮助。
面试
你们现在也许还没考虑到就业的问题,但应该对这些会挺感兴趣的,毕竟你们已经大三了。学长先给你们稍微讲讲,那些能力很强的同学,也就是那些有实验室经历,或者参加过各种软件开发大赛,项目开发经验很多这类同学,基本上都不用担心会找不到满意的工作,但这类同学毕竟是少数的。
大多数的同学则是到现在还没有任何的实验室经历,平时也没跟同学组队参加过什么比赛,那么这部分同学找工作就会相对来说比较困难一点。但也不会特别难,你们要把握好校招,公司对应届生的能力要求一般也不会特别高,(当然 BAT 这类公司就肯定需要一定的能力了),所以要让面试官在跟你聊天时,从你的经历中体现出你的学习能力。
秋招一般都是每年的 9 月份,10 月份这段时间。算算时间,你们大概有一年左右可以做准备。如果是想考研的同学,大三下基本就要开始准备复习考研了,如果你想做两手准备,那么也就只剩下这个学期的时间了。
一年的时间看似很长,但其实如果想增加一些项目经验,想做些有价值的项目基本要花费的时间也跟你们这学期软工差不多。而且,这学期的软工还是有个栋哥在后面督促着你们,给你们规划好了时间的安排,让你们的效率最大化的了。
所以,软工的项目,软工的经历也是你们在面试时比较有底气的依靠了。学长也是属于大多数的同学这类,在上软工前没什么实验室经历,也没参加过什么比赛,连安卓都是在上软工时才开始学的,而且因为大三下学期自己的事比较多,没做多少准备,最后到秋招时,学长简历上的项目经历比较有含金量的就是软工实践的项目了。最后也是靠着这个软工项目找到了学长自己很满意的公司。
栋哥第一节课应该也有给你们说过的,很多毕业后初入公司的学长,都会说软件工程是大学里最有用的课程。虽然学长还没毕业,但软工确实是帮助最大的一门课程。
给你们讲讲面试的事吧,通常情况下,来学校宣讲的公司,面试是分三轮,首先是笔试,然后是 hr 面,还有技术面。有的是先技术再 hr,有的是 hr 和技术官一起 2 对 1 面试。
笔试是基础,至少要对你要应聘的岗位掌握一些基础知识。学长有一些同学,他们应聘的是测试岗,女同学。跟她们聊天的时候,她们有说过,笔试上的题目,大部分都是软工课程书本上面的知识点,你们现在应该也还没教到测试的部分吧,所以之后栋哥在讲这部分的时候可以好好听讲。
Hr 面,通常也就是 hr 在跟你聊天,hr 除了要了解你的一些基本情况,在学校的一些表现,以及未来的一些规划外,剩下的时间就是跟你聊你简历上的东西。
简历的话,如果没有其他什么亮点的话,能聊的东西也就只剩下项目可以和 hr 聊了。
Hr 通常也是不大懂技术的,所以他不会问你项目都用到了哪些技术点,这些技术点的原理是什么。对于项目,hr 通常都是让你介绍一下这个项目,然后再让你说一下你负责了哪些部分。然后再根据你的回答进行一些提问,所以这种时候就要尽量的说些让 hr 感兴趣的事。
学长的面试经历并不顺利,9 月份,10 月份学长参加了挺多场的宣讲会,因为学长是个比较偏内向的人,口才并不怎么好,不大懂得怎么去套路面试官,所以前面的几场面试都是被刷掉的。
刷着,刷着,也是给学长刷出了经验吧,学长渐渐了解了面试官会对你说的哪些内容感兴趣,面试过程中也渐渐可以掌握主导权,把面试官会问的问题引导到你熟悉的项目上去,这样下来也就渐渐的比较有把握了。
你们求职的时候,学长并不建议你们像学长一样,基本上每场都参加,你们应该要事先就想好要去的公司,找些学长学姐了解一些公司的情况,尽量做好准备,争取在你想去的公司校招时就可以通过。学长当时心里是已经想好了去哪,但是学长知道自己口才并不好,担心直接参加那公司的校招时表现不好会被刷,所以在那之前参加很多宣讲会来锻炼自己。
参加了这么多的宣讲会,被hr刷了那么多次的面试后,学长渐渐感觉出来,当学长聊到软工的经历时面试官都会挺感兴趣的。也不是只聊软工的项目,而是说,将学长自己在软工过程中参与的事都跟面试官聊了,面试官对这些事反而会更感兴趣。
也就是栋哥给你们布置的那些作业,让你们去见客户,去谈需求,去整理文档,去设计原型,去分析别人的产品,去写博客,去设计架构,去学习团队如何管理,项目如何协作开发,版本控制工具 git 如何使用,以及让你们坚持每日站立式会议等等这些。
或许,你们现在对做项目,做软件的理解还是觉得等价于敲代码,学长很长一段时间也是这样理解的。后面渐渐觉得,栋哥为什么让你们在敲代码前做了那么多准备,等你们结束软工课程后会发现,整个软工实践过程,实际上花费在其他工作上并不比编程的时间少多少。
其实,除了栋哥的这种软工经历外,你们如果有其他的项目经历的话,是不是发现只有栋哥才会不断的强调除了编程之外的工作的重要性,强调文档的重要性,强调团队管理方式的重要性,强调PM的重要性。
学长经过实习的经历后觉得,也许栋哥这么做是想让你们尽早的体验模拟公司的工作情况吧,实习期间很多事情跟软工的经历的确很相似的,像上面说过的每日会议。
还有一点,公司是很重视文档的,也许你们现在会觉得栋哥让你们写的文档没多大的作用。学长记得,北航的软工课程里有这样一次作业:链接
如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新、最稳定版本的软件编译出来,并运行必要的单元测试?(在这过程中,不需要和老队员做任何交流)
而且,学长在实习时,就更觉得文档是有多么的重要了。学长实习时,老大是直接把一个老项目交给我,然后让我自己去熟悉一下整个项目,熟悉一下各功能的实现原理。
这个项目是有两三个工程,几十个包,上百个类,但是一份文档都没有。学长当时是完全不知道该从何入手的,好在,他的命名还不算太糟,后面基本是通过命名来理解的。所以,你们可以想象下,如果你们不重视文档,不统一一些编程规范,那么如果要让你们项目交给别人继续开发时,别人需要花费多少代价。如果是你们接手这样一个项目呢。
既然说到这,学长得在这里表示下歉意,学长那届很多都是在摸索中学习的,那时还没有这么多的体会,所以,对于接手我们项目的小组,辛苦你们了,估计你们在看我们项目时也会像学长一样一直在吐槽的吧,学长们做好准备接受你们的吐槽了。但这确实是个挺不错的经历的,也是个让你们体会,印象都很深的经历,在你们以后面试过程中很有帮助的。
好像跑题了,总之,学长想说的就是,栋哥给你们布置的每次作业都是很高大上的,也都是挺有用的经历,希望你们能认真参与进去,有参与也就会有自己的体会。回到面试上的问题来。
之前说到跟面试官面试的时候,要尽量的让面试官对你感兴趣,尽量让你说给面试官的经历中体现出你的学习能力,你的态度。
学长在最初的几次面试里,没有什么经验,介绍自己的项目时,大多都只是简单的说一下项目的功能,还有自己负责了哪些模块,然后等待着面试官继续提问,然后面试官通过会再多问一两个问题,比如你做项目时碰到最困难的事是什么,你怎么解决的之类的。通常,一场面试下来也就 10-20 分钟左右,面试过程没什么亮点,基本都是一问一答。最后,学长基本也都被刷掉了。
后来,学长在介绍项目时,开始带上了自己在软工里的一些经历,学长可以感觉出来,面试官当时就表现出了兴趣。
学长说到见客户,谈需求时,有的面试官就感兴趣的问,"你们跟客户是怎么沟通的,你们最后验收的时候,有碰到过客户又改了需求了吗"。
学长说到设计原型时,有的面试官明显会很感兴趣的说,"你们还设计了原型啊,那么用的什么软件,有把原型展示给客户吗,客户怎么说..."。
学长说到文档部分时,有的面试官会问,"除了需求说明书外,你们还写过其他文档吗"。
学长说到团队开发,每日会议,git 管理项目时,有的面试官就会问说,"你们会议谈的是什么,git 使用时有碰到到什么问题吗"。(这点相信有去使用 git 的同学都特别有话说的吧,初学者刚接触git通常都会碰到各种各样的问题,也许你们现在也还没理解清楚,不用担心,用久了,用熟悉了,后面渐渐就会都理解了,印象也就更深刻了)。
上面的这些问题,大多数都是在技术官谈项目时,技术官问的问题,学长猜想,可能技术官会觉得作为一名学生,能接触过这些比较正规点的,类似公司级别的软件开发过程的经历,挺不错的吧。所以,学长还是再说一遍,栋哥给你们布置的各个作业,其实都挺有用的。
如果是 hr 面的话,hr 更多的是想听你的经历,听你的总结。在跟 hr 聊天时,学长通常也是在介绍项目时,顺带把软工的一些经历说出来:
有的 hr 就会问说,"你觉得你们团队怎么样,你们服从你们组长的安排吗,有过观点冲突吗,有的话你们又是怎么说服对方的"
有的 Hr 会问说,"你刚才说的那个每日会议,有没有印象比较深的一次,说一说"
有的 Hr 也会问说,"你觉得你们队员怎么样,给他们打分的话你打多少,为什么。让你给你们团队成员排个名,你会怎么排"
也有的 hr 会问说,"你们团队有碰到过很困难的情况吗,在这种情况下你有没有做了哪些比较有亮点的事。你觉得你给团队贡献了有多少"
当然,通常也都会问,"你从这个经历中有收获到什么吗"。
所以说,hr 并不会像技术官一样,要去明确你的能力有多少,通常 hr 更想听你的一些经历,听你自己过后的一些总结。学长建议你们,开发过程不要太顺利了,整个过程团队也不要一直都很和谐。
不要怕碰到困难,碰到一个,你反而就有一次可说的经历,这个问题基本每个 hr 都问过学长。跟队员观点有不一致时,尽量说出来,讨论起来。当然,有新的体会,新的理解时如果可以总结一下,记录一下是最好的了。
通常在面试时,把你的软工经历讲出来,把面试官会问的问题引导到你熟悉的地方,这样面试过程就会是由你来主导,一个软工经历聊过来,一场面试时间基本都可以在 30 分钟以上,能通过面试的几率也就大了。
最后还有一点,作为 PM 的学弟学妹们,面试官对你们可是很感兴趣的,有这样的一次管理团队的经历。学长有好多次的面试中,hr 直接跟学长要 PM 的联系方式,还问说,你们 PM 现在工作找得怎么样了,你可以让他来试一试。虽然 PM 的工作会更辛苦点,但收获也会更多的,我们组长就去给栋哥当过助教,体验了一把。
但这些,都需要你们软工实践的每次作业都认真参与进去,有参与进去,你才会有所体会,也才会多多少少有些话可以说。如果你们团队一直很和谐,开发过程中没碰到过困难,每日会议只是应付下,前期的原型工作,文档工作都不怎么重视的话,这些过程你自然就没多少体会可以说了。
寄语
上完软工,学长是觉得:做项目,做开发,不是等价于敲代码这么简单。能力也不是衡量一切的标准。
学长希望,你们可以认真的参与软工实践。让软工这个经历,可以成为你们在以后求职中的一大助力,也可以成为你们考研的后手准备。
虽然熬夜是多了点,但可以跟伙伴们一起在活动室里看看凌晨五点钟的福大,何尝不是种美好的回忆。等软工结束,你们可以跟其他软工班级的同学交流下,即使最后你们没能去最好的自助吃一顿,收获和体会仍然会比他们多的。因为栋哥这门课不水,他不会让你们只是拿到学分而已。
当然,这也取决于你对待这门课的态度。
最后,学长祝福你们上完软工都能有自己梦想的收获。