很多人都说写代码最多到 35 岁,妥妥的青春饭,然而科学分析不这么认为。《Is Programming Knowledge Related to Age?》论文对 1694981 名 StackOverflow 用户的研究发现,程序员的平均年龄是 30.3 岁,其中数据清洗后参与分析的用户是 84248 名程序员,平均年龄 29.02 岁。
在年龄分布中,人数最多的是 25 岁,中位数是 29 岁。然而分析发现,程序员的能力从 25 岁左右开始上升,一直到 50 岁后才会开始下降。论文还研究了程序员对新技术的跟进,发现不同年龄的程序员对新技术的学习并没有差太多。大龄程序员对某些新技术的学习甚至超过年轻程序员。所以论文得出的结论是,程序员的技术能力上升可以到 50 - 60 岁,并且大龄程序员跟进新技术的能力和年轻程序员相差不多。
从身边的观察发现,30 岁的程序员积累了大量经验,可能才刚刚成为优秀的人才,架构设计能力、领导力需要大量的实践积累,不是能够轻松掌握的。互联网是一个新兴行业,大部分从业者都是后期加入的,平均年龄要低于其他行业。
一个程序员在 30 岁后,可能面临技术专家、技术 Leader、架构师三个发展方向的选择。
技术专家很好理解,在一个领域深耕,对业务和代码都有很好深刻的理解,经验丰富,能够用技术解决公司遇到的实际问题。成为技术专家需要大量的实践积累,正常发展情况下差不多都要到 30 岁左右。正常来说,技术专家是人才梯队中非常重要的角色,对技术方案设计有很大影响。
前几天看到有个公众号转载一篇高并发的文章,一个看起来一年内工作经验的作者展示了漏洞百出的技术方案,还能发上线,可见技术专家对团队的重要作用。没有技术专家的团队,人才梯队很难建立起来,团队内成员的成长可能也会受影响。
技术 Leader 会开始涉及技术管理方面的事务。注意这里是 Leader,不是 Manager。Manager 是管理者,而 Leader 更多是领导者。作为技术 Leader,需要重点保障核心业务、做技术建设、提升业务效果。为团队设定合理的目标,做好排兵布阵,协调各个团队和资源。所以业内往往称为“技术管理”而不是“管理”。
技术 Leader 比团队其他同学视野更开阔,对长远的发展趋势看的更准,有技术前瞻性。虽然已经成为团队中最牛逼的程序员之一,但是也要逐渐学会借他人之手写代码,专注于写代码的时间比以前减少很多,而这一点正是优秀程序员转变为技术 Leader 所面临的最大挑战之一。
架构师是一个非常出名的称谓了,然而却很少有专门的架构师岗位。阿里前几年有架构师岗位,不过现在也回归“技术专家”这样的纯技术岗位了。架构师必须是最出色的程序员,拥有技术深度和广度,有系统性的认知和技术前瞻性。
架构师通常和技术 Leader 有部分重叠,尤其是在团队规模比较小的时候,两者往往是同一个人。随着软件规模的增大,架构师开始在比技术 Leader 更高的高度上看待问题,这时候架构师和技术 Leader 开始分化为不同的人。架构师也不一定是公司任命的权威领导者,但是在团队内部通常有非权威领导力,是团队内部非常信任的技术领导者。
这三个发展方向可能会有重叠,对个人来说,还是最好想清楚侧重点是什么。
越是到职业发展的后期,越不能依靠代码本身。所有人都使用着同样的开发语言,掌握着同样的语法和脚本。作为执行者很难体现出优势,总不能说掌握的语法和二方包比别人多吧。优秀的程序员能比别人写出更好的代码,主要还是在如何写代码,以及代码背后的思考,也就是程序员的方法论。
方法论英文单词是 methodology,也就是说它是关于方法(method)的学问,是关于人们认识世界、改造世界的方法的理论,是人们用什么样的方式、方法来观察事物和处理问题。简单地说,方法论是成熟的思维方式。
成熟的方法论有很多。前面文章提到的黄金圈法则,是思考问题、分析问题的方法论。领域驱动设计是架构设计方面的方法论,能够帮助解决复杂问题。金字塔原理,是思考问题、解决问题、写作、PPT 演示方面的方法论。系统化思维,是对复杂系统如何观察和分析的理论,也能指导设计复杂系统。
我们常说的“抓手”、“赋能”、“共建”、“打法”、“对焦”等看起来比较虚的东西,其实就出自于方法论,是方法论中对具体事物和行为背后的客观规律的总结。脉脉上很多人对此嗤之以鼻,成为了大家吐槽的对象,但是这都是很成熟的概念。
如果长期停留在使用框架的层面,容易陷入工具误区,把使用框架当做技术,思维方式也被局限在框架里。会有一种技术很牛逼的错觉,但是和其他人相比,却没有多少优势,容易被更年轻更有活力的后辈取代。
最后
感谢您的阅读,在文末给大家准备一个福利。本人从事Android开发已经有十余年,算是一名资深的移动开发架构师了吧。根据我的观察发现,对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
所以在此将我十年载,从萌新小白一步步成长为Android移动开发架构师的学习笔记,从Android四大组件到手写实现一个架构设计,我都有一一的对应笔记为你讲解。
当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。
最后,赠与大家一句诗,共勉!
不驰于空想,不骛于虚声。不忘初心,方得始终。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
于虚声。不忘初心,方得始终。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!