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

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

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

[[276819]]

图片来自 pexels 

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

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

[[276820]] 

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

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

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

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

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

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

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

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

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

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

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

项目的规模

规模可以从两个方面看:

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

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

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

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

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

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

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

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

项目中的角色

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

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

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

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

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

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

项目的性质

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

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

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

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

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

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

自己折腾的项目

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

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

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

结语

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

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

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

 

责任编辑:武晓燕 来源: 大飞码字
相关推荐

2018-01-17 10:01:38

程序员高手菜鸟

2018-01-23 11:42:50

程序员编程代码

2017-12-12 18:10:30

程序员工作经验技能

2018-03-13 08:48:26

java程序员技能

2016-03-14 11:58:10

面试工作经验程序员

2012-05-10 13:31:48

程序员开发者

2015-04-08 15:38:17

程序员程序员差距

2012-04-25 09:14:57

C++

2018-05-29 22:38:49

AI程序员代码

2009-04-17 15:48:41

程序员价值

2015-07-15 09:53:16

程序员开发类工具

2019-08-07 11:00:07

程序员技能开发者

2016-11-24 15:32:35

云计算

2023-02-11 08:18:15

AI人工智能ChatGPT

2022-02-24 17:32:38

程序员互联网公司离职率

2012-09-24 01:18:32

程序员androidhtml5

2015-04-09 13:36:13

程序员大龄程序员出路

2021-12-02 22:45:02

互联网程序员失业

2017-03-27 10:17:54

程序员工作学习

2019-02-26 12:40:10

程序员架构师阿里
点赞
收藏

51CTO技术栈公众号