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

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

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

文章插图
 
【工作3年和工作7年的程序员到底差在哪里?】 
图片来自 pexels
我们公司内部有一个技术等级的标准 , 但我感觉那种描述太虚 。实际面试的过程中 , 一般面试官也不会询问那些太虚的东西 , 反而更看重实际的项目经验 。
所以通过项目经验来判断一个人的能力 , 我觉得是最普遍且客观的 。
 
工作3年和工作7年的程序员到底差在哪里?

文章插图
 
 
程序员的经典段子:“Talk is cheap , Show me the code !” 。在实际面试和衡量一个人的技术能力的时候 , 我觉得就是 :“Talk is cheap , Show me the project!”。
你知道什么不重要 , 重要的是你做过什么 。这里引申出一个很重要的问题 , 作为程序员 , 做什么事情才能够给自己带来真正的 , 最终的成长 , 我觉得就是项目 。
很多同学都有持续学习的习惯 , 有时间都会去钻研新技术 , 学习新知识 , 这当然是极好的 , 但这个不是能力成长的终点 。
我觉得能力成长的终点 , 应该是将所学的东西应用到实际的项目中 , 形成真正的能力 。
就像我们在听一个人介绍一个大牛的时候 , 不会说 , 这个大牛会 xxx 语言 , 会 xxx 框架 , 而是会说他做过什么项目 , 项目的规模有多大 , 影响有多大等 。
再回过头来看 , 同学们提的问题:一个三年工作经验的人和一个七年工作经验的人 , 在能力上有什么不同?
这里的不同当然是多方面的 , 但就技术能力来说 , 最关键的还是项目经验的不同 。
第一个是所参与项目数量的不同 。就同一个人而言 , 工作七年时候的项目经验肯定是要比工作三年时候多的 。
第二个是项目质量的不同 。正常来说 , 对同一个人 , 工作七年后所做的项目质量应该是要高过三年时候的 。
如果工作了七年 , 但发现所做的项目 , 以及在项目中所承担的角色还是跟三年时候一样 , 就要十分警惕了 。这让人感觉 , 你的三年跟七年似乎是没有区别 , 没有成长的 。
那如何来看一个人的项目经验呢 , 我觉得可以从这几个维度来看 :
项目的规模
规模可以从两个方面看:
  • 项目参与的人数
  • 产品的用户数
项目参与人数越多 , 说明项目的复杂度越高 , 在项目里遇到的问题也会越多 , 越难 , 用于解决这些问题的技术难度也会越大 。
比如说 , 两人参与的项目 , 就软件构建层面来说 , 怎么搞问题都不大 , 大不了两人打一架 , 总可以统一到一起 。
但如果是五十人参与的项目 , 难度就大很多了 , 如果没有统一的开发规范 , 不遵循一般的设计模式 , 设计原则 , 项目最后就会陷入泥潭 。
产品的用户数是一个很核心的指标 , 特别是互联网公司 。其实无论是服务端 , 客户端 , 前端 , 还是算法方向 , 技术遇到的难题都是跟用户数量成正比的 。
服务端很好理解 , 千万用户的和亿级用户对服务器数量的要求完全不同 , 服务器数量可能是近十倍的增长 , 而复杂度的提升比十倍还高 。
客户端 , 前端 , 在用户规模大起来后 , 会面临更加复杂多变的环境 , 比如一些长尾机型的适配 , 一些难以兼容的浏览器等 。算法同学要面对的是更大的数据量 。
更大的数据量 , 意味着数据的多样性会更大 , 噪音也会更大 , 这也提升了数据内容理解的难度 。
项目中的角色
一个十人项目里的主负责人和分模块的负责人 , 肯定是不一样的 。主负责人需要更高的技术视野 , 更全面的思考 , 也需要有更好的协调能力 。这个是技术 , 统筹能力的综合体现 , 毫无疑问会更加有含金量 。


推荐阅读