在真实工作中的编程是咋样的,与学校里有啥不同

百赞啦,又想到了一些,更新一波~文档:学校:口口相传工作:别人都用Markdown写文档,快把你的Word收起来……delay:学校:deadline之前搞定了就好,先休息半个月再说工作:每天都要发项目日报,你的老板和你老板的老板都盯着呢……联调:学校:自己和自己联调,左右互搏……工作:我:##¥¥%!……\u0026amp;*!!对方:没听懂……需求:学校:定期和老师汇报进度就行,需求一般不会发生变化工作:时常会碰到来求助的运营MM故障:学校:就算真的遇到了,顶多挨顿骂工作:这个季度的kpi又悬了……上级:学校:才不管你怎么实现的,也不会看你代码,能用就好工作:不但会问你怎么实现的,也会review你代码,还会强行让你用一些新技术……代码复用:学校:复用全靠写函数工作:就算跨项目也要强行复用……造轮子:学校:轮子是什么工作:这个季度造个什么轮子吹比呢……bugs:学校:以空指针居多工作:只有想不到,没有遇不到……吐槽:学校:好烦啊,做了这么多事情一点好处也没有工作:运营又说改版了,之前的代码可是PHP的啊,确定这样也能改版?--------------------------------------------------------------------项目:学校:基于XXX的XXX系统的设计工作:商家处罚中心工作来源:学校:老师或者是自己工作:产品或者运营工作内容:学校:实现完整的项目工作:实现完整项目是少数情况,大部分是新增功能需求开发之前:学校:打游戏看电影刷拖延一下工作:开会评审需求,分配工作开发人数:学校:前端后台产品设计全是自己工作:前端2两人,后台3人,产品一人代码:学校:所有代码自己搞定工作:只负责规则模块规范:学校:实现功能就好,代码写成什么样不重要,从来不写任何注释,代码之后自己刚写完的几天才能看得懂工作:每一个模块都需要完成相应的单测,并且保证测试通过。代码需要简洁美观,变量、类等命名严格遵守驼峰命名法,需要附加完备的注释框架:学校:框架是什么,实现功能就行工作:公司对各个功能(例如链接数据库等)进行了封装,必须要使用相应的框架封装:学校:为什么一定要面向对象,怎么简单粗暴怎么来工作:进行一定的封装是必须的,要考虑代码的复用性,尽可能避免代码冗余。差的封装是会被吐槽的debug:学校:肉眼,偶尔使用工具,一碰到蛋疼一下午工作:使用工具,流程化排查问题疑难杂症:学校:自己蛋疼摸索,直到放弃向研究生师兄请教工作:蛋疼摸索一会,请教大牛发布:学校:随意发工作:每次发布需要请示老板,你多发几次试试……review:学校:review是啥……工作:发布之前必须review,被挑到刺打回去再正常不过maven:学校:maven是啥……工作:每个模块的打包发布都有严格的流程,maven依赖必须要仔细,否则很容易遇到问题,有专门的工具对maven依赖进行检查git:学校:coder只有一个,用git干嘛……工作:git的命令牢记于心,stash,merge,checkout花式命令,键盘敲起来氛围:学校:开发累了,打会游戏休息一下工作:老板就在旁边,你打个游戏试试……设计模式:学校:闻所未闻工作:原来这种方法这么机制,赶快学一下,以后说不定能用上先想到这么多,后面想到了再来更|第一名答案给的是一个在学校里屌屌的学生,进去一家传统公司,然后看不上一切别人垃圾代码的视角。我带来一个,毕业眼界也挺高,觉得自己技术不错,然后面试被真正的大牛虐成狗,然后还跪舔进入公司继续被虐的,游戏公司,第一视角。给我一份爱,还你一夜情。第一视角,现在开始。10年进入大学,无限憧憬大学,然后就傻逼了整个大一上学期,大一下学期买了电脑接触了dota,两年刀塔路,步步皆辛苦。大三下学期开始意识到,毕业总得赚钱吃饭,现在的节奏感觉会要饭,然后就开始敲代码。一开始无任何头绪,找到某培训机构视频开始看,我学java,据说ssh搞完,出去就有6k以上,我无耻的硬了。不对,我傻傻的信了。现在想想,多单纯啊,6k就感觉吊炸天了。大四下学期,独自一人去了广州,学校同学还在学校里接受培训机构培训。我觉得教的都会了。就先出来了。2013年11月18号,到了广州。投了一圈,没反应。感觉人生挫败了。这时候,有时候不得不说可怜之人偶尔也有运气好的时候。在qq上碰到一个公司发招聘,我完全不抱希望的尝试下,居然给了面试机会。当天去面试信心满满,然而并没有什么卵用。老大直接从基础问到虚拟机,计算机原理,编译原理。当场直接跪了,我现在都还有心理阴影。整整差不多一个小时,我感觉像是一个世纪。印象比较深,老大问编译原理,我说我们没有开编译原理的课,事实是真的没有。老大原话,“你们他妈没有编译原理也敢叫软件工程专业!”,我完全无法接下去。最后老大问,你坚持最久的一件事是什么?大三一直都在跑步,我说,跑步,跑了一年多。老大说,那你感谢你的跑步吧。就这样我留了下来。得到了全公司最低的月薪,别问我怎么知道的,不可能有人比我更低就是了。忘说了,老大长发,那种中长发,飘逸的那种,第一眼真心就觉得大牛。至今无法忘记见老大的第一眼。好了,不能再说了,再说会有gay的即视感。留下来后,下周二入职,周一我去看了牙齿,做根管治疗。大学里面完全不知道游戏怎么做,游戏服务端是怎么做。一丝一毫的概念都没有。第一天几乎没啥事做,我自己配了下环境,上网看了看游戏相关的东西。还是完全都不了解游戏到底怎么做。我的座位靠着一个项目组老员工,我就看他和别人一句话过来一句话过去,然后看看代码什么的,后来才知道这叫连调。第二天,旁边的老员工问我是新来的么,然后让我去找xxx要学习视频,然后拿两本书,一本Java并发编程实战(JCP),一本EffectiveJava。然后就开始看视频,看书,看视频,看书。视频也是一个培训机构录的视频,后来才知道,那是我老大几年前在一个培训机构讲课录的。大概看了一周多视频,终于有了个小任务,写一个拉日志的小程序。暂时就叫那个老员工鸟哥吧,大家都那么叫,一直我也不知道为什么。鸟哥讲了需求,给了点思路。我第一次知道延迟队列,第一次知道Executor线程池,然后就自己去搜,搜了然后去用,然后去写,写完去找鸟哥,鸟哥直接在我电脑上看代码,分分钟把问题找出来,看了多少篇文章,都不如鸟哥直接指出来,来的印象深刻。写完之后大概有看了一周的书,等到了第二个入职的新人,终于有了个伴。然而后来我问了,人家工资都比我高。我就说我全公司最低啦。第二个人进来后,我和他两人开始做第一个测试项目。SVN管理系统。在这之前,我对SVN真心都不太熟,只是知道这东西。第一个版本,鸟哥说写个命令行版本的,就直接在命令行能交互就行,我当时虽然被虐的很惨,但还是比较有信心的。毕竟当时我看培训视频,还写过一个OA的项目,当时我觉得OA就很牛逼了。没办法,眼界太低。开始做了才知道,这东西真心没那么简单,SVN写过代码的都知道,版本控制,有库什么的,原生版本好像是没有权限的,然后我们就是要在外面加一层控制,并把权限管理加进去,用一个RBAC模型,总之全都没听过,总之做的艰难前行。忘了说,当时面试进来,HR的老大就强调过,说他们公司对新人的淘汰率很高,每做一个小项目,都会有代码review,会有几个老大一起看,如果说不过,给次机会回去改,改了还不能过,直接辞退走人。童话里真的都是骗人的,我之前从来没有过这样的心理准备。你们有待过这样的公司么,真的是直接走人,真真的!后来看到有人review完,会议室里出来,就收拾东西去办离职了。你们感受下。在高压下前行,完成了第一个版本。第一次review,我不知道女孩子第一次是啥感觉,反正我进会议室内心是期待而又忐忑的。过去从来没有人这么正式的看过我的代码,一行一行的看。真的是一行一行的看!功能是最基础的,但是鸟哥真的不怎么在乎那些功能,他觉得那是必然要做到的。功能验证演示也就几分钟的事,功能看完就是看代码。在会议室,用个笔记本,远程桌面连接到自己的电脑上,然后直接投影到会议里,直接在eclipse里面看,从入口开始,一个一个方法,一行一行代码,那天整个人内心真的是被骂崩溃的。对的,就是被骂崩溃的。看到别人进入公司都会碰到一个和蔼的老李,我这边真没有老李,只有严厉的不能再严厉的鸟哥。代码中各种错误被鸟哥一处一处指出,包括各种编码规范错误,并发控制考虑,该抽出可配置文件的地方抽出配置文件去配,不能硬编码在代码中。印象很深的是不处理异常,直接就打印出来了。“你他妈打印出来给谁看,以后都是跑在服务器上的,以后不要让我看到syso在代码中出现”,然后还特意全局搜了下syso这句打印代码的数量,然后鸟哥一头黑线,因为我所有有异常的地方都是打印出来。当时加上设计错误,代码错误,反正记起来得有十几条,我写在笔记本上的,笔记本现在依然躺在我电脑边上。我是个恋旧的人。经过第一次review,我和另外一个哥们总算是感受到什么叫代码review了。那哥们比我早一届,已经毕业,之前在一家公司做过,我问他这咋办,真的是被喷成狗了。他说实在不行就辞职了。我没说话。/**2015/10/52点更新**/经过第一次review,回去改第二版,基本知道了问题有哪些,虽然被打击的非常惨,但是还是有信心可以把这些代码改好的。当时其中一个主要大的问题,就是在做多任务处理时,对多线程的处理,以及多线程异常的处理。当时鸟哥说,上传功能有可能当时是因为网速或者其他因素没上传成功,但是可能稍微多尝试几次就能成功,所以出错后要加尝试处理。当时我是真的没经验,我就觉得尝试嘛,得嘞,那捕获到异常,我就循环,while(true)一直就尝试上传操作,直到上传成功才跳出这段代码。所以当我上次看到那个图,一个哥们写代码,失败之后再强制去试100次的代码的时候,我真的是笑尿的,因为我比他更屌,我是试无限次。当然最后这里也是被鸟哥喷的狗血淋头,鸟哥说,你真牛逼。你这是在代码里面写了个死循环啊。我真的当时脸都绿了,因为我知道在服务器代码上写个死循环是什么后果,真的是一背都是汗。哦,插一段,当时第一次还是第二次review的时候,鸟哥看完代码之后,发现太多问题,实在没法看下去了,说,“你们的代码真的让我感觉到恶心。”。不知道你们review的时候,听到这么一句是什么感觉,反正我是一辈子忘不掉了,和我同期那个同事也是,至今一起吃饭每次都会回忆这句。当时经过了,几次改版,从基本命令行,到后来用bootstrap做个web版本,前前后后鬼门关走了得有7,8次,特别是当时做web版本,鸟哥要求使用restful风格,又是一个新名词,restful,好好休息么?我承认我当时真的是渣1的战力。不过鸟哥讲解东西真的是一绝,就三两下,真的可以把restful是个什么东西让你有个清晰的了解。restful当时还好说,springmvc本来就支持restful,真正让我差点挂掉的是js。JS我真的是学了一万年都没学好的一个东西,当时我和那个同事两人还是有点美术追求的,不想就写个特别简陋的界面出来,感觉至少也得让人能下的去眼吧,虽然鸟哥当时没有要求这个。后来我们两就想用bootstrap,一直都挺火的一个前端框架,但是也是完全没接触过,然后我还是9流的js程序,功能没花我太多时间,反而是界面真的是让我整个人都疯了。很难整体上做出一个比较好的效果出来。最后听说公司后台用的就是bootstrap,我们两就拿了公司的后台模板直接来改,但是中途发现公司有自己封装一层js,我的一个侧边栏点击,右边显示的效果死都出不来,但是这还是最重要的一个效果。搞得心好累,就是不出来。关键时刻,那个周末,我那个和我相依为命的同事,还去澳门玩了。我内心的怨念,你们可以感受下。因为他已经调出来了。没办法,我只能等他澳门回来,星期天晚上,12点多,我们语音,他跟我一起帮我调我的那个问题,最终解决。想想,那一段日子,没有他一起,还真的是很难坚持下来啊。相依为命的日子,一起深夜打车,冬天跑KFC买甜筒,一起感慨不知道哪次review完就要收拾东西走人。历历在目。===更了一段。待续。大家来点赞。要不好多人看不到。被压在下面。/**看了一眼,上一次更新时2015年10月5号,差两天正好一年,时间真的好快2016年10月3日更新*/感觉自己的记忆在一点点流失,趁着现在还能回忆起,我还是要坚持把我在那游戏公司的一年多写完。好不容易熬过SVN权限管理系统的痛苦黑暗的一段时期,差不多改了3个还是4个版本,从命令行一直写到WEB版本,方才罢休,总算是过了。不过忘记当时通过是什么感觉了,很后悔没有把但是最直接最真切的感受记录下,有可能这辈子都不会再有了。据之前已经通过试用期的同事小道消息,过了SVN权限管理系统之后就能真是接触游戏代码了,当时还是很兴奋的。马上要接触自己从没接触过的东西,好奇心所带来的兴奋感冲淡了那段难熬的痛苦时光。当时公司扩招的很厉害,办公位置不够,都是各种找位置挤,到最后没法挤了,就弄了个会议室,所有试用期的同学全部搬到了会议室改成的办公区。他们取名叫小黑屋。就是一个没有窗户的小会议室,挤一挤坐了7,8个人。后来我们也是在小黑屋里,结下了深厚的战友情,这是后话了。第二个测试项目开始涉及游戏,做一个黑市商店,也就是可以发布物品,然后玩家可以选择购买,然后扣费发放购买奖励什么的。但是听到需求的第一感觉是完全没概念的,没有任何整体的设计概念,知道像以前一样,定义个存储,设计一些接口啥的,对于实际游戏中的设计,或者说最佳实践完全木有概念。而且这次开始有了一个简单的公司框架给我们使用,我和我那个小伙伴简直如获至宝,感觉看公司的实际运行的东西是怎么写的,然而没想到木有源码,只是一个简单的架子,有些调用实例,底层的代码都是木有的。sigh.就这样做了第二个测试项目,过程快进了,和之前类似,都是被骂,修改,继续被骂,再修改。还好反正抱着必死的决心,也就坚持过来了。我那个一起吃甜筒的小伙伴中途还提过一次辞职,不过后来又被鸟哥两句话给安定下来了。我还记得那天鸟哥突然把我俩叫到会议室去,我一脸懵逼,然后就说我们就这么玻璃心,然后说我那小伙伴提了离职,问我怎么想的。我还一脸傻逼的笑着说,哈哈,我没有啊,还好诶。但是我的内心独白其实是,其实我也想过。经过了这个游戏项目,后面开始顺利很多,偶尔还会犯特别二的错误,但是已经可以整体理解真实游戏开发怎么做了。后面还继续做了两个测试项目,都是游戏中的真是模块,一个摇钱树,一个奴隶系统,我小伙伴抽到的是竞技场。反正就这么熬了下来。进到项目组之后,开始负责开发一些小玩法模块,修复一些产品提过来的BUG。老大已经不是鸟哥,换了实际游戏开发组的老大。不过要求没有一点点的减弱,每次上线的代码要review,会扣一些很细节的内存使用,数据结构使用,边界的处理从这个老大那里也是学到很多。对待代码的那种认真的态度,和对实际review中的错误代码敏感度,真是我到现在都很敬佩的。总是能在review中快速看出错误点,或者可能有疑问的地方,提出质疑。人真的是在高压环境下成长比较快,我很庆幸能一开始进入到这样的团队接受锻炼,提高自己的眼界。我一直觉得,代码眼界很重要,你要知道什么是好的代码。除了老大,组里的一些同事也都非常的执着认真,说实话,我真心感觉自己有时候就是个渣。当时坐我旁边的是一个成都的哥们,操着一口四川普通话,川普,你晓得的撒,真心是逗的飞起。不过他写代码做东西的速度也是快的飞起。而且看问题的角度经常能转换的非常快。近水楼台嘛,所以我的很多问题都是找他讨论的,总能找到一些新的思路。关键是!!!天天炒股还能不耽误工作!!代码照样写的飞起!!我也是没话说了。像我这种,只要想着什么事的时候,基本工作效率就为0了。还有个湖南的同事,工作经验比较丰富的,之前电信研究院做了4年还是5年,然后转行来做游戏。我们都叫他斌哥哥。我就记得当时印象最深的,我们在闲聊一个什么事情的时候,然后斌哥哥说他就是真心喜欢写代码的。从那以后这句话一直是我检验自己内心的标杆啊!不过页游最终是走下衰亡的趋势,是无法逆的。技术人再怎么努力,你也没法反抗市场的选择。页游市场被37几乎全部霸占,手游开始崛起,最终呆了一年多之后,我也是不得不选择离开。我的第一家游戏公司,又爱又恨的公司。到现在,我午睡的靠枕和毯子都还是这家公司发的。我说过,我是个恋旧的人。嘻嘻。好像写的越来越离题了,反正我其实也是在写给以后的自己看了。大家将就吧。■/*亲爱的维护者:如果你尝试了对这段程序进行‘优化’,并认识到这种企图是大错特错,请增加下面这个计数器的个数,用来对后来人进行警告:浪费在这里的总时间=40h*/潜水这么久,怒送一血,已然破百,答题之路才刚刚开始。谢谢大家答案非原创,纯属娱乐
■刚工作了三个月,简单谈一下我的感受。先说重点:最大的不同是质量。质量是个很广的概念,涵盖方方面面。1、规范性在学校写的代码,除了你自己可能没有第二个人看,可以不写注释,命名随意起,inti、inta;在公司,代码需要遵循一套严格的规范,这样做利人利己。每行代码需要经过至少一次其他人的CodeReview,我在学校自认为代码比较规范,结果到这里经常被师傅提很多Tala(修改建议)。2、测试在学校,代码写完运行起来跑一下、随便点一下就行了;在公司,相比较开发的时间,写单元测试和接口测试的时间只多不少,一行代码需要好几行代码、好几个用例来测试。我认为没有经过测试的代码等于没写。3、性能(并发)在学校,写的代码充其量只是个小玩具,用户量一只手数得清,甚至再变成玩具之前就已经夭折了;在公司,每一行代码要面对的用户上千万、甚至上亿,性能以及随之带来的并发问题不得不考虑。这就好比在公园盖一个厕所,装修华丽,环境很好,但是坑位只有五个,结果节假日几百号人同时上厕所,那场面自行脑补。4、严谨在学校写的代码,出错了最多被老师批一顿,改一下就完事了;在公司,尤其是我所在的支付宝,一行代码出错可能会带来几十万、几百万甚至更严重的资金损失,这种坑把我卖了都填不上。借用一位前辈的话:对你的每一行代码保持一颗敬畏之心。最后回答题主另外一个问题:每天啪啪啪手敲成千上万行代码——我还没听说过每天啪啪啪就能敲成千上万行代码的人,不啪啪啪也敲不了这么多。暂时想到的就这么多,后续有机会再补充。


推荐阅读