|
|
51CTO旗下网站
|
|
移动端

工作3年和工作7年的程序员到底差在哪里?

有不少同学问过我技术能力的问题。比如说工作三年的人,应该有怎样的技术能力。

作者:大飞码字来源:大飞码字|2019-09-16 09:46

有不少同学问过我技术能力的问题。比如说工作三年的人,应该有怎样的技术能力。

图片来自 pexels

我们公司内部有一个技术等级的标准,但我感觉那种描述太虚。实际面试的过程中,一般面试官也不会询问那些太虚的东西,反而更看重实际的项目经验。

所以通过项目经验来判断一个人的能力,我觉得是最普遍且客观的。

程序员的经典段子:“Talk is cheap,Show me the code !”。在实际面试和衡量一个人的技术能力的时候,我觉得就是 :“Talk is cheap,Show me the project!” 。

你知道什么不重要,重要的是你做过什么。这里引申出一个很重要的问题,作为程序员,做什么事情才能够给自己带来真正的,最终的成长,我觉得就是项目。

很多同学都有持续学习的习惯,有时间都会去钻研新技术,学习新知识,这当然是极好的,但这个不是能力成长的终点。

我觉得能力成长的终点,应该是将所学的东西应用到实际的项目中,形成真正的能力。

就像我们在听一个人介绍一个大牛的时候,不会说,这个大牛会 xxx 语言,会 xxx 框架,而是会说他做过什么项目,项目的规模有多大,影响有多大等。

再回过头来看,同学们提的问题:一个三年工作经验的人和一个七年工作经验的人,在能力上有什么不同?

这里的不同当然是多方面的,但就技术能力来说,最关键的还是项目经验的不同。

第一个是所参与项目数量的不同。就同一个人而言,工作七年时候的项目经验肯定是要比工作三年时候多的。

第二个是项目质量的不同。正常来说,对同一个人,工作七年后所做的项目质量应该是要高过三年时候的。

如果工作了七年,但发现所做的项目,以及在项目中所承担的角色还是跟三年时候一样,就要十分警惕了。这让人感觉,你的三年跟七年似乎是没有区别,没有成长的。

那如何来看一个人的项目经验呢,我觉得可以从这几个维度来看 :

项目的规模

规模可以从两个方面看:

  • 项目参与的人数
  • 产品的用户数

项目参与人数越多,说明项目的复杂度越高,在项目里遇到的问题也会越多,越难,用于解决这些问题的技术难度也会越大。

比如说,两人参与的项目,就软件构建层面来说,怎么搞问题都不大,大不了两人打一架,总可以统一到一起。

但如果是五十人参与的项目,难度就大很多了,如果没有统一的开发规范,不遵循一般的设计模式,设计原则,项目最后就会陷入泥潭。

产品的用户数是一个很核心的指标,特别是互联网公司。其实无论是服务端,客户端,前端,还是算法方向,技术遇到的难题都是跟用户数量成正比的。

服务端很好理解,千万用户的和亿级用户对服务器数量的要求完全不同,服务器数量可能是近十倍的增长,而复杂度的提升比十倍还高。

客户端,前端,在用户规模大起来后,会面临更加复杂多变的环境,比如一些长尾机型的适配,一些难以兼容的浏览器等。算法同学要面对的是更大的数据量。

更大的数据量,意味着数据的多样性会更大,噪音也会更大,这也提升了数据内容理解的难度。

项目中的角色

一个十人项目里的主负责人和分模块的负责人,肯定是不一样的。主负责人需要更高的技术视野,更全面的思考,也需要有更好的协调能力。这个是技术,统筹能力的综合体现,毫无疑问会更加有含金量。

在实际面试过程中,面试官可能不了解你公司,也不了解你所在的团队。你说你是项目负责人,说白了,他也无法证伪,所以这里更重要的是,要有主负责人的那种技术视野和思考深度。

在实际面试的时候,你说你是负责人之一(实际的负责人可能不止一个),然后你又体现出了相应的技术视野和思考深度,其实也是可以的。

这里也给了我们一个启发,无论自己在项目中是什么角色,对系统的思考都是很重要的。

很多同学说自己天天写 if else ,做的项目没有技术含量,但你真的有思考吗?有花时间去了解过系统的整体设计吗?不同的模块之间是怎么衔接的?整个系统最难的是什么?

再者,多问一句,你知道系统存在的问题吗? 你可以把它设计得更好吗?这些其实是日积月累的,人跟人的区别,也就在于这多一步的思考。

项目的性质

这个需要解释一下。对于工程系统,可以做这么一个大概的划分,业务系统,中间件,基础组件。

一般情况下,就技术含量来说:基础组件>中间件>业务系统,就业务能力来说,是反过来的。

在实际面试的过程中,大部分的面试官比较喜欢有技术含量的项目,纯业务逻辑的阐述比较难获得面试官的认可,所以有机会去尝试一些基础系统的开发或中间件的开发,这是应该好好把握的。

如果实在没有机会,也要学会抽象业务系统中的业务逻辑,抽象描述比起直白的业务逻辑陈述,给人的感觉肯定是不同的。

算法的方向,也有区分,主要区分是应用研究和基础研究。这里主要是岗位的匹配度。

基础研究去面应用研究应该要容易些,一般面试官担心的是,基础研究的同学有没有实际的业务经验。应用研究要面基础研究,估计就会比较难了。

自己折腾的项目

这个我觉得在面试的过程中,一定是有加分的,先不论项目本身做的怎样,会主动去折腾项目的人,对技术一定是有激情的。

对于毕业生,在大学的时候会不会自己找项目来做,在技术职业发展上,已经是一个很大的分水岭了。

对于已经工作的人来说,如果能够参与一些开源的项目,面试官无疑是会多看一眼的,不过目前国内企业的工作时间太长,我估计大部分人没有这个时间和精力了。

结语

项目经验,我觉得是程序员最值钱的东西。除了校招的时候,对项目经验的要求比较低,其他时候,项目经验都是决定技术等级,收入的关键。

所以我们对项目经验的积累要非常的重视,除了项目的数量,也要更多的考虑项目的质量。

程序员在自己的职业生涯中,要经常思考自己所做项目的规模和技术的难度,如果发现自己长期处于小规模,低技术难度的项目中,就要想办法为自己找寻更好的项目了!

【编辑推荐】

  1. 程序员最重要的技能:知道什么时候不写代码
  2. 程序员吐槽:互联网屌丝没眼界,985就横着走,打工比的过做生意?
  3. 那些程序员小白还没掌握的30件事
  4. 一年中的第 256 天,程序员你懂的
  5. 百度程序员吐槽自己工作两年薪资不如应届生,网友:你985吗?
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

用Python玩转excel

用Python玩转excel

让重复操作傻瓜化
共3章 | DE8UG

110人订阅学习

AI入门级算法

AI入门级算法

算法常识
共22章 | 周萝卜123

108人订阅学习

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

120人订阅学习

读 书 +更多

Linux服务器安全策略详解

Linux主要用于架设网络服务器。如今关于服务器和网站被黑客攻击的报告几乎每天都可以见到,而且随着网络应用的丰富多样,攻击的形式和方法...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微