三年程序员和七年程序员的最关键差异?

大飞码字

共 2525字,需浏览 6分钟

 ·

2019-09-01 09:15

4dafa8fc9e6c59c33223ec91e8f3623e.webp

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


我们公司内部有一个技术等级的标准,但我感觉那种描述太虚。实际面试的过程中,一般面试官也不会询问那些太虚的东西,反而更看重实际的项目经验。所以通过项目经验来判断一个人的能力,我觉得是最普遍且客观的。


程序员的经典段子:“Talk is cheap, show me the code !”  在实际面试和衡量一个人的技术能力的时候,我觉得就是  :“Talk is cheap, show me the project !” 。你知道什么不重要,重要的是你做过什么。


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


很多同学都有持续学习的习惯,有时间都会去钻研新技术,学习新知识,这当然是极好的,但这个不是能力成长的终点。我觉得能力成长的终点,应该是将所学的东西应用到实际的项目中,形成真正的能力。


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


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


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


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


第二个是项目质量的不同正常来说,对同一个人,工作七年后所做的项目质量应该是要高过三年时候的。如果工作了七年,但发现所做的项目,以及在项目中所承担的角色还是跟三年时候一样,就要十分警惕了。这让人感觉,你的三年跟七年似乎是没有区别,没有成长的。



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


项目的规模


规模可以从两个方面看:项目参与的人数和产品的用户数

项目参与人数越多,说明项目的复杂度越高,在项目里遇到的问题也会越多,越难,用于解决这些问题的技术难度也会越大。比如说,两人参与的项目,就软件构建层面来说,怎么搞问题都不大,大不了两人打一架,总可以统一到一起。但如果是五十人参与的项目,难度就大很多了,如果没有统一的开发规范,不遵循一般的设计模式,设计原则,项目最后就会陷入泥潭。

产品的用户数是一个很核心的指标,特别是互联网公司。其实无论是服务端,客户端,前端,还是算法方向,技术遇到的难题都是跟用户数量成正比的。服务端很好理解,千万用户的和亿级用户对服务器数量的要求完全不同,服务器数量可能是近10倍的增长,而复杂度的提升比十倍还高。

客户端,前端,在用户规模大起来后,会面临更加复杂多变的环境,比如一些长尾机型的适配,一些难以兼容的浏览器等。算法同学要面对的是更大的数据量。更大的数据量,意味着数据的多样性会更大,噪音也会更大,这也提升了数据内容理解的难度。


项目中的角色


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

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

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

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

很多同学说自己天天写 if else ,做的项目没有技术含量,但你真的有思考吗?有花时间去了解过系统的整体设计吗?不同的模块之间是怎么衔接的?整个系统最难的是什么?再者,多问一句,你知道系统存在的问题吗? 你可以把它设计得更好吗?

这些其实是日积月累的,人跟人的区别,也就在于这多一步的思考。


项目的性质


这个需要解释一下。对于工程系统,可以做这么一个大概的划分,业务系统,中间件,基础组件。一般情况下,就技术含量来说 :  基础组件 > 中间件 > 业务系统, 就业务能力来说,是反过来的。

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

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

算法的方向,也有区分,主要区分是应用研究和基础研究。这里主要是岗位的匹配度。基础研究去面应用研究应该要容易些,一般面试官担心的是,基础研究的同学有没有实际的业务经验。应用研究要面基础研究,估计就会比较难了。


自己折腾的项目


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

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

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


结语


项目经验,我觉得是程序员最值钱的东西。除了校招的时候,对项目经验的要求比较低,其他时候,项目经验都是决定技术等级,收入的关键。所以我们对项目经验的积累要非常的重视,除了项目的数量,也要更多的考虑项目的质量。

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


推荐阅读:

说一个忐忑的事情

程序员的精力呵护指南!来自十年程序员的精力管理经验

技术人,遇到瓶颈,怎么破?来自十年程序员的经验分享

大飞哥,我要进大厂!

来自十年互联网人的大厂等级晋升攻略

基础知识的学习,来自十年程序员的经验分享


你好,我是大飞,十年互联网人!

如果你喜欢我的文章,就给公众号加个星标吧,方便阅读。



提升技术认知,助力技术成长 :

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报