毕业就能拿到上万薪资的程序员他们都做了啥?
每个程序员都是从学校里走出来的,那么现实工作中和在学校里会有什么不同呢?让我们来看看三位程序员说的:
程序员A:在学校编程的时候,有着一头乌黑的秀发,现在发际线惨不忍睹;
程序员B:在学校的时候没钱觉得配不上女神,现在有钱了觉得好像并不是钱的问题?
程序员C:在学校起码能靠帮女同学修电脑和炫技装X,现在在公司连个可以装X的对象都没有;
在学校里编程,不外乎三种情况:
一是课堂或课后作业;
二是期末考试或毕业设计;
三是课余时间参与维护的开源小项目。
开发团队要么是学校社团成员,要么是同宿舍的几位室友,大多数情况下都是一个人同时身兼数职,承包了产品经理、开发工程师、测试工程师甚至还包括美工的所有工作。
在学校里编程,只要根据老师布置下来的课题,实现主要功能,经简单测试可以运行就算及格。你可以各种花式炫技,也可以随便应付了事,因为在学校里编程最主要的目的是:能够将课堂上或者自学到的理论知识付诸实践,检验自身对于知识的掌握和运用程度。
在工作中的编程除了文首说的直观的不同当然还存在着许多深层次的不同,这些不同只有经历过的人才能明白。如果你正打算去做一名码农,以下我的总结会对你有一些作用的,具体有以下几点:
1. 工作中工具的使用呈现多样化
在工作中,需要使用公司专门要求的工具来完成编程,同时还有可能需要用到多种工具,这就需要程序员对于工具的熟练运用呈现多样性;而在学校编程因为实现的业务功能单一,所以使用的工具也较为单一,基本都是主流的IDE,相对要容易得多。生动一点地说就是在学校里,你可能只用一个电饭锅就能解决一顿饱饭,而在工作中,你可能还需要烤箱、打火灶、汤锅、炖锅等等更多的工具来完成。
2. 工作中,程序命名规范很重要
在工作中,代码需要遵循一套严格的编写规范,因为在工作中的代码不是属于某一个人的,它是需要大家共同维护的。阿里巴巴的开发团队就有专门的开发手册,每行代码都需要经过至少一次其他人的Code Review,因此,遵守命名规范利人利己。
在学校里写的代码可能没几个人会看,命名可以随意起int a、int b等等,最后只要实现功能就好,并且过后很少会被再拿出来看。而在工作中,从来不写注释或者简单注释几句的代码,一段时间之后可能自己都看不懂了,这种情况是不被允许的,因为这些代码可能会被持续使用很长的时间,需要不断地维护和更新。从某种程度上说,你写出的代码就代表着你拥有的专业态度。
3. 工作中,测试的重视度高于开发
在工作中,相比开发的时间,写单元测试和接口测试的时间只多不少。一行代码可能需要好几行代码、好几个用例来测试,通常需要使用工具,按照规范的流程来进行调试。并且,在工作中,测试是重于开发的。就像生产一个玩具小汽车,设计出来,还要测试它能不能跑,跑得快不快,遇到撞击会怎样等等,在工作中的程序在投入使用前同样也是经历了无数次的测试,才最终与用户见面的。而在学校,大多数情况是这样的:代码写完运行一下、肉眼看一下,偶尔会使用工具,碰到bug可能会蛋疼一下午。
4. 工作中代码量贵精不贵多
在工作中,解决同一个问题,能够用更少的代码的人水平更高,你写的每一行代码都必须保证是精华。因为在工作中代码写完并不代表结束,后期可能还要持续维护,就算你离开了,也要保证接手的人能读懂,所以写的代码贵在精而不在多。
在学校里编程,可能写的代码越多,会感觉自己越牛逼。有时候一天能撸上千行代码,感觉自己太牛X了,然而这在工作中并没有什么用。
5. 工作中,团队合作是常态
在工作中,你负责的往往会是一个大工程中的一个模块。完成一个大工程的开发工作是一个团队的事情,因此你必须学会团队合作,也就是说你的代码要让更多的人看懂,也能让更多的人拿来即用。
在学校,教的都是一些经典算法,解决些通用的问题,但是当面临实际的问题时,这些往往没有卵用。举个例子,比如排序算法,课本上有很多,有些同学甚至能将各种排序算法都默写出来。可他们永远不明白关系型数据库是如何实现排序的,因此当你问他们如果内存装不下所有数据该怎么排序时,他们只能一脸懵逼地望着你。
6. 工作中,性能要求更高
在工作中,可能一行代码面对的用户会达到上千万甚至上亿,所以就要求开发者在开发的时候要把很多可能会出现的问题考虑进去。也就是说如果你编写的是一个把猪肉放进去可以做成火腿的程序,你还要考虑到如果有人放进去的是一袋面粉,程序是否能够完成对它的加工。
以12306为例,在使用阿里的云计算平台之前,每年到春运的时候网站几乎都会因为访问量过大而瘫痪,铁道部受到铺天盖地的吐槽,这可能就是当时开发者没有考虑到或者是没有解决的问题。后来,随着阿里的云计算平台的支持,很好的解决了访问量过大的问题,还提升了网站的性能,极大的提高了网站的承载量及用户体验,口诛笔伐明显平息了很多。
而在学校里,我们写的代码充其量只是个小玩具,用户量一只手数得清,甚至在变成玩具之前就已经夭折了。在学校里如果你想实现苹果去皮的功能,只考虑这一个功能就好,很少需要再去考虑如果是一个橙子,该怎么办。
7. 工作中,时间分配多元化
在工作中,你的时间会被分配到多个环节,包括了解精准的业务目标,预研需要用到的技术手段、如何选型、详细设计、编码实现、配合测试、上线及上线后的维护等等。
每一步都都要评审,降低返工风险,具体到每一个项目时遇到的问题可能会更多,比如怎么测试,怎么部署,怎么更新,怎么监控和保证健壮性、效率以及规模。用户量多了怎么办,被攻击了怎么办,你依赖的东西挂了怎么办,你部署的环境变了怎么办。更深层的考虑是不是要开源?这个东西能维持几年?有啥竞争性的产品?他们都怎么样?下一步该做啥?等等等等……会多出来好多事情。所以工作中,coding所分配到的时间可能只是你的工作时间很少的一部分。
在学校里,所谓的编程更多的时间就真的只是coding,或者是通过算法解题,一个小的算法解决一个问题等等。这跟实际工作中的强度和时间分配相比,有很大差别。
8. 工作中,对代码质量要求更高
在工作中,代码要考虑可用性、易用性、安全性、健壮性等因素。假如你身处金融机构,哪怕一行代码出错,都有可能导致上百万、上千万甚至更多的资金损失。所以,对于你所撸的代码一定要常怀一颗敬畏之心,要经得起考量,质量比数量更为重要。
“莫愁前路无知己,总有bug跟着你”,说起来也是蛮心塞的!
而在学校里,只需要考虑指定的功能是否得以实现即可,即使存在问题也只是重新修改,或者请老师给予指正,不会带来实质性的影响,因此在Coding的时候也不需要非常的谨小慎微。
9. 工作中,代码会带来直接收益
在工作中,作为程序员的你,编程是你安身立命、养家糊口的基础,也是在职场彰显个人才华的根本,对于整个职业生涯的发展发挥着至关重要的作用。如果在IT公司或者互联网公司任职,技术太水的话是过不下去的,轻则拿不到理想的收入,重则与心仪的公司无缘。很多人都知道程序员的收入比其他工种普遍偏高,其实他们的投入成本也极大,可能每周工作996或者997。好在收入与所付出的努力能够成正比。
在学校里,完成作品带来的可能仅仅是精神上的愉悦,或者是得到老师的褒奖及奖励,与工作中的直接收益结构是完全不同的。也就是说:在工作中,你在编程上的造诣越高,一般都会获得相应越多的收入。
共同学习,写下你的评论
评论加载中...
作者其他优质文章