在真实工作中的编程是咋样的,与学校里有啥不同( 二 )
■看图,
骚年悟到了么
■小慕决定先说一下比较直观的不同:
程序员A:在学校编程的时候,有着一头乌黑的秀发,现在发际线惨不忍睹;
程序员B:在学校的时候没钱觉得配不上女神,现在有钱了觉得好像并不是钱的问题?
程序员C:在学校起码能靠帮女同学修电脑和炫技装X,现在在公司连个可以装X的对象都没有;
程序员PHP:在学校的时候我不知道谁才是最好的语言,在工作中我终于明白……
言归正传,小慕认为在实际工作中的编程,跟在校期间相比,是炮火纷飞的战场和与世隔绝的象牙塔之间的区别。
在学校里编程,不外乎三种情况:
一是课堂或课后作业;
二是期末考试或毕业设计;
三是课余时间参与维护的开源小项目。开发团队要么是学校社团成员,要么是同宿舍的几位室友,大多数情况下都是一个人同时身兼数职,承包了产品经理、开发工程师、测试工程师甚至还包括美工的所有工作。
在学校里编程,只要根据老师布置下来的课题,实现主要功能,经简单测试可以运行就算及格。你可以各种花式炫技,也可以随便应付了事,因为在学校里编程最主要的目的是:能够将课堂上或者自学到的理论知识付诸实践,检验自身对于知识的掌握和运用程度。
在工作中的编程除了文首说的直观的不同当然还存在着许多深层次的不同,这些不同只有经历过的人才能明白。如果你正打算去做一名码农,小慕的总结会对你有一些作用的,具体有以下几点:
1.工作中工具的使用呈现多样化
在工作中,需要使用公司专门要求的工具来完成编程,同时还有可能需要用到多种工具,这就需要程序员对于工具的熟练运用呈现多样性;而在学校编程因为实现的业务功能单一,所以使用的工具也较为单一,基本都是主流的IDE,相对要容易得多。生动一点地说就是在学校里,你可能只用一个电饭锅就能解决一顿饱饭,而在工作中,你可能还需要烤箱、打火灶、汤锅、炖锅等等更多的工具来完成。
2.工作中,程序命名规范很重要
在工作中,代码需要遵循一套严格的编写规范,因为在工作中的代码不是属于某一个人的,它是需要大家共同维护的。阿里巴巴的开发团队就有专门的开发手册,每行代码都需要经过至少一次其他人的CodeReview,因此,遵守命名规范利人利己。
在学校里写的代码可能没几个人会看,命名可以随意起inta、intb等等,最后只要实现功能就好,并且过后很少会被再拿出来看。而在工作中,从来不写注释或者简单注释几句的代码,一段时间之后可能自己都看不懂了,这种情况是不被允许的,因为这些代码可能会被持续使用很长的时间,需要不断地维护和更新。从某种程度上说,你写出的代码就代表着你拥有的专业态度。
3.工作中,测试的重视度高于开发
在工作中,相比开发的时间,写单元测试和接口测试的时间只多不少。一行代码可能需要好几行代码、好几个用例来测试,通常需要使用工具,按照规范的流程来进行调试。并且,在工作中,测试是重于开发的。就像生产一个玩具小汽车,设计出来,还要测试它能不能跑,跑得快不快,遇到撞击会怎样等等,在工作中的程序在投入使用前同样也是经历了无数次的测试,才最终与用户见面的。而在学校,大多数情况是这样的:代码写完运行一下、肉眼看一下,偶尔会使用工具,碰到bug可能会蛋疼一下午。
(举个栗子:项目上线发布后有个模块挂了)
4.工作中代码量贵精不贵多
在工作中,解决同一个问题,能够用更少的代码的人水平更高,你写的每一行代码都必须保证是精华。因为在工作中代码写完并不代表结束,后期可能还要持续维护,就算你离开了,也要保证接手的人能读懂,所以写的代码贵在精而不在多。
在学校里编程,可能写的代码越多,会感觉自己越牛逼。有时候一天能撸上千行代码,感觉自己太牛X了,然而这在工作中并没有什么卵用。
5.工作中,团队合作是常态
在工作中,你负责的往往会是一个大工程中的一个模块。完成一个大工程的开发工作是一个团队的事情,因此你必须学会团队合作,也就是说你的代码要让更多的人看懂,也能让更多的人拿来即用。
在学校,教的都是一些经典算法,解决些通用的问题,但是当面临实际的问题时,这些往往没有卵用。举个例子,比如排序算法,课本上有很多,有些同学甚至能将各种排序算法都默写出来。可他们永远不明白关系型数据库是如何实现排序的,因此当你问他们如果内存装不下所有数据该怎么排序时,他们只能一脸懵逼地望着你。
6.工作中,性能要求更高
在工作中,可能一行代码面对的用户会达到上千万甚至上亿,所以就要求开发者在开发的时候要把很多可能会出现的问题考虑进去。也就是说如果你编写的是一个把猪肉放进去可以做成火腿的程序,你还要考虑到如果有人放进去的是一袋面粉,程序是否能够完成对它的加工。
以12306为例,在使用阿里的云计算平台之前,每年到春运的时候网站几乎都会因为访问量过大而瘫痪,铁道部受到铺天盖地的吐槽,这可能就是当时开发者没有考虑到或者是没有解决的问题。后来,随着阿里的云计算平台的支持,很好的解决了访问量过大的问题,还提升了网站的性能,极大的提高了网站的承载量及用户体验,口诛笔伐明显平息了很多。
而在学校里,我们写的代码充其量只是个小玩具,用户量一只手数得清,甚至在变成玩具之前就已经夭折了。在学校里如果你想实现苹果去皮的功能,只考虑这一个功能就好,很少需要再去考虑如果是一个橙子,该怎么办。
7.工作中,时间分配多元化
在工作中,你的时间会被分配到多个环节,包括了解精准的业务目标,预研需要用到的技术手段、如何选型、详细设计、编码实现、配合测试、上线及上线后的维护等等。
每一步都都要评审,降低返工风险,具体到每一个项目时遇到的问题可能会更多,比如怎么测试,怎么部署,怎么更新,怎么监控和保证健壮性、效率以及规模。用户量多了怎么办,被攻击了怎么办,你依赖的东西挂了怎么办,你部署的环境变了怎么办。更深层的考虑是不是要开源?这个东西能维持几年?有啥竞争性的产品?他们都怎么样?下一步该做啥?等等等等……会多出来好多事情。所以工作中,coding所分配到的时间可能只是你的工作时间很少的一部分。
在学校里,所谓的编程更多的时间就真的只是coding,或者是通过算法解题,一个小的算法解决一个问题等等。这跟实际工作中的强度和时间分配相比,有很大差别。
8.工作中,对代码质量要求更高
在工作中,代码要考虑可用性、易用性、安全性、健壮性等因素。假如你身处金融机构,哪怕一行代码出错,都有可能导致上百万、上千万甚至更多的资金损失。所以,对于你所撸的代码一定要常怀一颗敬畏之心,要经得起考量,质量比数量更为重要。
“莫愁前路无知己,总有bug跟着你”,说起来也是蛮心塞的!
而在学校里,只需要考虑指定的功能是否得以实现即可,即使存在问题也只是重新修改,或者请老师给予指正,不会带来实质性的影响,因此在Coding的时候也不需要非常的谨小慎微。
9.工作中,代码会带来直接收益
在工作中,作为程序员的你,编程是你安身立命、养家糊口的基础,也是在职场彰显个人才华的根本,对于整个职业生涯的发展发挥着至关重要的作用。如果在IT公司或者互联网公司任职,技术太水的话是过不下去的,轻则拿不到理想的收入,重则与心仪的公司无缘。很多人都知道程序员的收入比其他工种普遍偏高,其实他们的投入成本也极大,可能每周工作996或者997。好在收入与所付出的努力能够成正比。
在学校里,完成作品带来的可能仅仅是精神上的愉悦,或者是得到老师的褒奖及奖励,与工作中的直接收益结构是完全不同的。也就是说:在工作中,你在编程上的造诣越高,一般都会获得相应越多的收入。
但是,程序员的辛苦也是众所周知的。
所以,在回答的最后,请各位IT、互联网公司的产品经理大大,或者说,如果你身边有“程序猿”朋友,请千万记得一定要对他好一点,没事帮他捏捏肩捶捶背,没事多请他吃吃饭,多帮他买买单,编程的压力已经很大了,请理解他,帮助他,毕竟猿生已经如此的艰难,真要把天天加班又没有对象的他们惹急了,后果会是……
还有如果你是程序员的女朋友,想为程序员男朋友做点什么,那么请参考用户@韩食的回答:
“我是一位程序员的女朋友。和他见面的时间不是很多,但是也不会有生疏感。他有时工作到很晚,压力也比较大,我尽量就是在他专注的时候不打扰,在他运行完一段程序后给他递上一杯热饮。没有工作的时候,我和他一起出去玩,去山林中休憩和在城市中探险。他之前也是一个焦虑的人,他现在是一个很开朗快乐的人。他生日的时候,我送了他一把机械键盘,本来我对这些外设也是一窍不通,也是慢慢查资料了解哪些更适合。把护眼灯调柔和一点,在座椅上摆上舒适和坐垫。我们一起的时候很快乐,真诚,信任。他抱着我睡觉的时候,我能感觉到他的疲惫,他的呼吸声也是我的安眠曲。
然而,以上都是我编的。我是那个程序员,我没有女朋友(笑”
最后送大家一段程序员专用霸气代码注释:代码永无bug!!!
1.//_ooOoo_
2.//o8888888o
3.//88"."88
4.//(|-_-|)
5.//O\\=/O
6.//____/`---\u0026#39;\\____
7.//.\u0026#39;\\\\||//`.
8.///\\\\|||:|||//\\
9.///_|||||-:-|||||-\\
10.//||\\\\\\-///||
11.//|\\_|\u0026#39;\u0026#39;\\---/\u0026#39;\u0026#39;||
12.//\\.-\\__`-`___/-./
13.//___`..\u0026#39;/--.--\\`..__
14.//.""\u0026#39;\u0026lt;`.___\\_\u0026lt;|\u0026gt;_/___.\u0026#39;\u0026gt;\u0026#39;"".
15.//||:`-\\`.;`\\_/`;.`/-`:||
16.//\\\\`-.\\___\\/___/.-`//
17.//======`-.____`-.___\\_____/___.-`____.-\u0026#39;======
18.//`=---=\u0026#39;
19.//
20.//.............................................
21.//佛祖保佑永无BUG
22.//佛曰:
23.//写字楼里写字间,写字间里程序员;
24.//程序人员写程序,又拿程序换酒钱。
25.//酒醒只在网上坐,酒醉还来网下眠;
26.//酒醉酒醒日复日,网上网下年复年。
27.//但愿老死电脑间,不愿鞠躬老板前;
28.//奔驰宝马贵者趣,公交自行程序员。
29.//别人笑我忒疯癫,我笑自己命太贱;
30.//不见满街漂亮妹,哪个归得程序员?
以上。
更多慕课网相关回答:
各个编程语言都有哪些「黑点」?
2017你觉得未来五年最具前景的一门编程语言是什么?
怎样成长为一个优秀的Web前端开发工程师?
程序员面试要准备哪些方面的内容?
【在真实工作中的编程是咋样的,与学校里有啥不同】2017年你所在的行业和领域发生了哪些大事?
■我本科的专业是软件工程,大一的C++基础课学的还不错,后面数据结构与算法也学得挺认真的,数据库结构学的时候搞不清那么多范式有什么用,UML直接睡过去了,软件生命周期搞不懂是怎么回事,测试这门课老师都没怎么好好讲。所以上面几门课直到毕业也没觉得有什么用,感觉C++的基础好,数据结构和算法好,就是编程好了。到了工作中,才发现原来还有【需求】这种东西,不是课程作业那种胡搞瞎搞,差不多就行的了。而且做出来的程序不能只是自己演示正常就可以,要经受的住用户的各种胡搞瞎搞,被各种奇怪操作导致的BUG打回来,才知道什么叫程序的健壮性。接手了一份胡搞瞎搞的数据库之后,才知道范式说的是什么,师傅说我司数据库每天要备份六次,我问为什么不多备份几次,他说,因为每次备份需要四个小时...后来做了很多外包项目,才知道需求管理,或者说讨价还价其实也是个重要的编程技能。不是每个程序员都可以干干净净的只搞技术研究,做一个科学家。程序员应该是个工程师,工程师的话就要以实现为目标,很多时候,算法效率不是最重要的,有时候为了工程上的需要,还要牺牲程序效率换取工作流程上的效率或者框架的可维护性。以前上学写的代码就像是高中物理中飞天遁地光滑无阻力无摩擦的小滑块,没有需求变更,没有雷劈机房,没有瞬发流量,没有兼容版本,没有很多奇怪的东西,完全是在理想状态下写代码。
推荐阅读
- 马上毕业本科生,北京19W和苏州16W的工作,咋抉择?
- 「北京有 6000 『中介业主』手里有 300 『间』房屋」的说法真实吗
- 每天工作学习十几小时,睡眠六七小时的高效人士就不累吗
- 怎样更好的简化自己的工作和生活呢
- 现在的你,跟小时候想象中的你,吻合吗活成了自己想要的样子吗
- 怎样看待北京理工大学良乡校区肝糖元教师节晚上宿舍灯光阵型工作人员公器私用趁机表白
- 在当下社会,想在经历「最底层的工作」和「最低级的待遇」后再去成功,这种想法很蠢么
- 怎样评价《说唱新世代》中的个人battle战
- 咋样可以在家里高效的工作
- 你的工作地离你家有多远
