学校里面的每门编程语言课都是上一点上不完的,实验课写的代码最长一两百行,而在真实的工作环境中,程序员写代码是怎么样的,每天是不是要啪啪啪手敲成千上万行代码,和在学校写代码,有什么异同呢?
本文来自知乎问答摘录,原题链接:
https://www.zhihu.com/question/36022013
1
一本正经回答
在驾校开车和在马路上开车的区别
学校里完成功能就行了,工作中是处理各种意外
原来还有产品经理这货,还是专门派来跟我吵架的?
学校里的习惯不要带到工作中
因为工作中一切错误与正确都是钱
没啥大区别,就是和学校学的完全不一样而已
这1w行我先干为敬
2
认真脸回答
学校里,代码越多,水平越高。
工作中,水平越高,代码越少。
学校里,程序哪怕错了一百次,
只要跑对一次,也算是及格了,也就是过了。
工作中,你跑对一百次是应该的,
只要错一次,就是错了,就过不去。
3苦口婆心回答
1、规范性
在学校写的代码,除了你自己可能没有第二个人看,可以不写注释,命名随意起,int i、int a;在公司,代码需要遵循一套严格的规范,这样做利人利己。每行代码需要经过至少一次其他人的Code Review,我在学校自认为代码比较规范,结果到公司经常被师傅提很多Tala(修改建议)。
2、测试
在学校,代码写完运行起来跑一下、随便点一下就行了;在公司,相比较开发的时间,写单元测试和接口测试的时间只多不少,一行代码需要好几行代码、好几个用例来测试。我认为没有经过测试的代码等于没写。
3、性能(并发)
在学校,写的代码充其量只是个小玩具,用户量一只手数得清,甚至再变成玩具之前就已经夭折了;在公司,每一行代码要面对的用户上千万、甚至上亿,性能以及随之带来的并发问题不得不考虑。这就好比在公园盖一个厕所,装修华丽,环境很好,但是坑位只有五个,结果节假日几百号人同时上厕所,那场面自行脑补。
4、严谨
在学校写的代码,出错了最多被老师批一顿,改一下就完事了;在公司,尤其是大公司,一行代码出错可能会带来几十万、几百万甚至更严重的资金损失,这种坑把你卖了都填不上。借用一位前辈的话:对你的每一行代码保持一颗敬畏之心。
4
故事版回答
刚进公司时,在你正式动手写代码前,很可能要理解code base。这一过程至少持续1个月,取决于你所在项目的规模。你会发现你不得不使用你浑身所学之能事,理解上古程序员是如何解决一个个实际的问题的。有的时候你沾沾自喜,“哈哈,这个技巧劳资经常用,你们也算有点见识”。但大部分时候你很糊涂。
在此阶段,你每天的工作就是看文档,看设计图,读代码,放断点debug,hack,fix,问同事。
你很累。你很无聊。
此外,刚进公司的你,会发现你的项目组正在使用一些奇葩工具、冷门技术,他们非常不好用,尤其跟你大学时候用的成熟IDE相比。你可能会想砸键盘,“谁特么想出来的用这个工具!谁特么写的这么sb的工具!”
你很失望。
渐渐的,你开始了解了你们的业务领域,所谓的掌握了一定的领域知识,你开始有能力判断哪些是权衡,哪些是权宜,哪些是极精妙的设计,哪些是遗留代码。
你的领导也发现了这一点,于是开始给你安排简单的任务。他们可能是改一些显而易见的bug,可能是实现一个最简单的新特性。此时你会有一种驾驭的错觉,你很快的写好了功能,提交,开始幻想自己精妙的代码收到表扬。当然,不出意料的是,你提交的100行代码里被找出了10个bug,其中2个是很严重的逻辑错误,4个是未实现的需求,2个是ui错误,2个是边界条件未检查。
你心里十分不爽,“妈的劳资这么屌炸天的代码你们都不懂得欣赏!”
此时你的领导过来轻描淡写地来了一句,“我们提交之前要进行code review”。
于是你找了你身边比较和善经常解答你问题的小哥来代码检视,10分钟之后,你漂亮的代码被改得面目全非,你欲哭无泪,又不想得罪前辈,于是默默地提交了这不知道是谁写的代码。
就这样挣扎着过了几个月,你开始摸清了门道,于是你开始运用你大学时期课内或者课外学到的引以为傲的技巧和知识了。领导自然也发现了这一点,于是他开始安排你组织技术交流会,你精心准备好了ppt,自己在家排练,并且试图加入一些或者高冷或者没品的幽默段子。
会议很成功,你感觉到同事开始对你刮目相看,你开始飘飘然,重新拾回“驾驭”的感觉,心想“就你们这帮码农,劳资以后可是架构师!”
渐渐的,你开始进入了状态,你提交的代码越来越多。刚进公司时你从来没打开过的代码规范文档开始回来找你麻烦,不过这不是大问题。领导开始对你强调质量,而你则在心里抱怨旧代码的设计。你想要重构,你想要创新,你想要搞一个大新闻。
与此同时,组里新来了一位同事老李,是从其他部门调过来的老员工,领导组织组里盛情欢迎了他,你心里不服,但是他是个好人,你们谈笑风生。
机会来了。
公司要紧急实现一个演示功能,百万级的合同能不能拿下来就看这次了,你的领导已经亲自飞往客户那里坐镇,他走时跟你说,“组里就靠你和老李了!”
你十分激动,买好了泡面和零食,准备通宵作战,给领导提供最犀利的火力支援。
第一个功能点谈下来了。领导发给你了要求。
你发现你半懂不懂。
里面提到的一些其他模块,你在每月组织的技术交流大会里听说过,但你写过的那点代码里从没调用过他们的API,你更没读过他们的代码。你有点不知所错,开始心虚。
不管了,先开始干。
你找到了一些相似的功能,翻出了一些发霉的陈年旧代码,注释里写着2004/06/18。你没有时间完全读懂,你开始复制粘贴,直接debug。当然,代码报错了,你开始挨个解决,就这样,一个通宵。
第二天早上,你总算把你熟悉的后台部分调通了,你发现了新的麻烦。
是前台。你对前台并不熟悉。你知道javascript的原名叫ECMAScript,你知道JQuery对象和dom对象的区别,但是你发现你还是看不懂你们的前台代码。
怎么办?
好吧,你决定拉下脸,问老李。老李看你的样子,说,“你去睡一会吧,我来帮你看”。你心里有些不甘,有些不好意思,也有些感激。你很想自己把它们做出来,但你不会,而且时间也来不及了。你想学学他是怎么做的,但是你的大脑已经停止工作了。于是你疲惫地笑了笑,“好,交给你了。你看一下这里这里还有这里...我就去睡半个小时,一会就回来找你。”
你这一觉睡到了下午。
你醒来一看表,震惊的弹起来,赶紧回办公室找老李。老李已经从你的座位回到自己的座位上了,正在慢悠悠地喝茶。你有些惊喜地问他,“怎么样?”他回头看见你回来了,说,“放心吧,已经给一线调试了,你去吃点饭吧。”
你哪里有心思吃饭。你惊讶地对老李说了声“好的!太好了!”然后回到你的座位上迫不及待得打开代码开始运行。正如老李所说的,功能已经实现了。你轻舒一口气,拿出一碗泡面泡上,开始啃代码,心里想的是“这次一定要准备好,防止下次再出乱子。”
啃着啃着,你有些不耐烦了,因为你发现代码越看越多,已经超出了你的大脑容量。你想了一下,决定先放在一边,查收一下邮件放松一下。
邮箱里又是塞满了新员工培训的资料,各个部门的联谊活动通知,当然最多的是服务器发来的build report和test report。没什么有趣的事。
你想了一下接下来要干嘛。算了,还是接着写新特性吧,测试们还等着你呢。但是你其实很忐忑,你的心早已飘去了前线,但是你知道你不能发邮件问状况,因为你领导可能几天没睡了,何况你也并没有什么特别紧急的事。你破天荒的把邮件客户端开着,留意每一个新收到的邮件。
就在这样的忐忑中,一天过去了。反正也没什么事,你回家好好洗了个澡,定了个早早的闹铃,安心的睡觉了。
第二天一大早你就跑去公司,果然邮箱里有了领导的邮件,上面写道“演示很成功,客户很满意,接下来是谈判阶段。家里的开发兄弟你们太棒了!”
当然,你很高兴。但是又有一点失落。你不太明白为什么,于是你想了一下。随后你似乎明白了,虽然这是一个好消息,但是好像跟你又没什么关系,跟任何人似乎都没什么关系,好像是一件自然而然的事情一样,并没有“holy shit”超神的声音。
过一会,你的大领导,项目总经理回复了你领导的邮件,说“干得好!同时也对家里的兄弟提出表扬!回来开庆功会!”你心里略有一些期待,“不错”,你想到,虽然主角不是你,但是你毕竟也是功臣。
你为庆功会暗自准备了很久,你在网上浏览跟领导吃饭该说些什么,你想好了很多概括性的有内涵的问题来证明你对项目的理解,你也想多了解一些项目的大方向。
几天之后,你领导回来了,大家开了庆功会。饭局上,大家聊聊家常,聊聊你领导在国外的见闻,大领导知道了你的名字,大家似乎很随意的打了一会牌,就这样平平淡淡的结束了。你略有一些失落。
生活回归正常。
未完待续。。。。
其实每个行业
都是如此
所以
不如编程
聊天不如编程
谈恋爱不如编程
让我们一起
学编程