不同岁数需要不同竞争力
很多回答把自己工作年限说了,这个很好。不同阶段认知不同,在成功项目里,35岁的程序有的拿300万年薪,有的拿80万。那么大不同是怎么来的。现在20多岁的技术员到了40会是什么样,怎么发展。
我给的最重要建议是结识一些年纪大混的不错的技术员朋友。多听听,别老自己瞎琢磨。也别听同龄或者比自己大不了太多人的话。互联网降低了信息门槛,但没多少认知就喜欢输出的人太多。才工作几年,技术还不算真入门,听噪音太多了影响发展。第一代信息化时代大生产的程序员已经40多了。那些35以上的技术员现状比较有参考意义,找到好技术带头人的团队有好处,甚至是决定性的。
关于软件技术人才能力,不光是编程能力,我给个参考,分普通、中层和高阶。
普通层面
一个技术人员能掌控技术生产力的深度和创新能力。深度就是难易度,别人觉着程序难搞不动的,你能搞定。这个涉及基本功,技术扎实程度,技术掌握的多寡,用技术解决问题的能力,创新能力是技术创新创造,以及创新性利用技术的能力。
这个层面比较单纯,也是目前回答绝大多数涉及的层面。
我看有人说图形编程……我公司从2000开始自研3d引擎,这东西最多用到线性代数和微积分。13年上了国内第一款自研的延迟着色引擎产品,图形学很形象,容易理解。而且现成引擎很多开源的,书籍论文技术介绍算法代码浩如烟海……时间砸下去就行。可能最大门槛在于大学没深入毕业工作忙没时间自修。这事就是个吃点苦的事,游戏业已经没有什么技术壁垒了,太卷
中层
对业务需求理解能力,软件工程能力,以及合作能力。
游戏是几个不同工种配合完成的复杂软件工程,策划,美术,程序,QA,游戏对技术人员能力本质是软件工程能力。而不是coding能力,软件工程是一门特别有意思和挠头的学问。光看书没用,必须在具备理解需求能力基础上理论结合实际,才有可能具备这个层面的核心能力。
软件工程包含的需求分析,包括功能性与非功能性需求分析,这个阶段的解决,能够保障软件开发项目50%以上成功率。否则,bug 延期加班熬夜之类少不了,工程计划制定涉及到软件复杂度评估和不同水平人员工期准确评估。工程流程涉及到现在说的工业化生产的规模化产能和效率,也包括快速灵活敏捷的开发方法论,白盒与黑盒是确保软件质量最终把关。以上这些,都是对于产品开发最核心的。这些都远远超过了代码层面。
到了软件工程这个层面,大部分游戏公司就是门外汉,也包括不少上市公司,毕竟游戏开发大家都是野生的体系。我们也是经过几年摸索走了很大弯路,弯路有多弯,我从2001开始项目,失败了俩,2008才上线成功第一个产品。当时多数公司都是工程不行靠人力与工期填,因为大家的引擎,工具,客户端,服务器,全是自研,技术失败率很高。现在开发幸福了,引擎底层最多就是改一改现成的,服务器技术也非常成熟,可参考的书籍代码不计其数。但软功能力依然是核心能力之一,工具和底层都完备,大家更要内卷工程能力……
这些都不是工作两三年的人能把控的范畴。甚至认知都不会有。
协作能力,是与他人合作完成任务的能力。涉及沟通能力。
需求理解能力,涉及视野和认知广度,一样程序能力的人,热爱游戏理解游戏的那个人,要更强。
高阶层面
高阶核心能力取决于人员掌握技术生产力和解决问题的规模,就是一个人能搞定多大事,主程,架构师,技术director,技术管理等。这个需要前面两层的基础和成功实践经验,也和管理水平直接相关。Lead Programmer为啥加Lead 这个字,琢磨一下,你能带多少人一起搞定多少事。也算你的核心能力,到了这个层面,能够管理大项目,成功上线,为项目内一切技术相关的事负责,这个能力已经比较金字塔顶部了。
再往上还有,技术团队的组建,培训培养,技术文化建立实施,人员考核需要你对软件复杂度和工程复杂度有深刻认知,否则大家奖金谁多谁少?平时工作怎么量化评分?
再往上还有,全公司技术体系的建立,工程流程统一和改进。比如技术方案制定的方案,也就是元方案。全公司底层技术和工具集的集约化开发,核心成员和技术管理人才的培养选拔。公司技术发展方向的制定,前瞻技术研究,公司技术竞争力的保持和增强,技术创新对公司产品价值的增长,等等
最后,个人成就一定是因为跟对了团队,通过你团队的努力,成功赚钱,并且你在里面发挥了巨大作用。所以找到好技术团队和带头人,非常重要。可以先找机会进入成功成品团队,增长一下见识,别老在一些不成功产品和团队里跳槽。