主程,在游戏行业这个称呼大家都了解的。非游戏行业也有叫团队长的,反正就是团队的leader呗。
既然叫主程序员,那就是还有次程序员,次要程序员哈,不是技术比较差的意思。
主程的职能
首要职能-开发,主程还是要写程序的,实现程序需求,若这个都做不到要你何用呢。
其次,搭建程序框架,从选型到实用,再到底层代码实现,最后形成一个可用的框架,剩下的就是往框架里比较容易的放置代码而运行。这个一般都是招聘的基本要求,面试的时候也会经常被问到是否从头完整做一个项目,这个项目的底层框架是否是你自己完成的。
再次,优化程序与解决问题。这两个在国内大多数项目中这两个都是一起进行的,就是上线以后集中解决,因为前面很少给更多时间做这些事。但是有经验的主程会提前进行压力测试一类的工作,可以提前解决一些。优化可以是从各个方面的,架构、代码、性能等等,这个一般靠经验和程序需求。解决问题也是最能体现主程价值的,能解决并且尽快解决才能尽量小的影响线上用户或玩家。
最后,管理。有一半的公司招聘主程的时候不会考虑他的管理能力,但是管理团队是主程无法逃避而且也是体现主程能力的一个点。一个好汉三个帮的成果,肯定比一个好汉把自己累死的成果多。
主程的要求
1.技术,主程肯定是团队中的技术骨干之一,但是单论技术可能不一定是最牛逼的,但是论综合能力应该是最牛的。这里不是说主程技术可以不好,而是说单方面可能不是最好的,比如算法可能需要手底下的算法大牛来做,数据库方面优化可能需要手底下的数据库大牛来做,但是这些也要都懂,也力争各方面都能够以“德”服人。另外一个就是技术要比较宽泛,有利于架构和给出各种解决方案。
2.管理,做程序的人大部分人不会管理,也不愿意去管理。高效的管理完全可以避免996这种工作制度,利用有效的工作时间超额完成任务这是完全可以做到的。这里管理的不只是人,还有事,还有技术选型与应用,还有其他团队与资源的协调。
3.沟通,前面说到管理中的管理人和与其他团队的协调这就少不了沟通。有效沟通可以节省时间提高效率,有效沟通仅是工作的沟通,而平时闲聊玩笑调节气氛不算的啊。有效沟通包括:沟通的主题(为啥沟通)、目标(沟通之后想要的结果:确定时间或者获取资源等)、过程(达到目标经历的过程和参与人)、达到目的时间(目标达成时间)、再次沟通时间(有可能本次沟通没有结果,或者需要分阶段沟通,那么定一个下次沟通的时间)。
4.责任心,顶压力,顶事这是主程肯定要做的,作为主程上有领导和老板,下面有自己的小弟,夹在中间的压力不算大,但是也不小的。迎难而上、关键时刻挑大梁、不如软弱撂挑子。就算是管理工作能做的非常棒,但是上线后总会有非常棘手的问题,通宵加班解决家常便饭。
5.远见,前面说的技术、管理和沟通都需要远见,技术可以看到未来技术趋势而提前准备和应用,管理可以看到可用的和可培养的人才,沟通可以未雨绸缪获得更多资源和支持。这点不是必须而且也无法进行衡量,我们能做的无非就是不要封闭自己,一直处在空杯状态去寻求新的知识。
未来的发展
资深专家,这个就是一直在技术领域深造,达到无问题不能解,甚至是能够防患于未然。吃技术饭,就得活到老学到老,不过也可以乐在其中。
管理,主程本来就有管理工作了。日后也更容易登上更高得管理岗位,项目经理(侧重项目进度方向)、技术经理(侧重技术底层)、CTO等。这些技术管理岗都是你未来比较不错得归宿。
其他,培训培训、devops、自动化测试等,这些方向也都是见过比较多的转型,还有技术型销售。有的会说这是吃不动技术饭而退缩了,其实有一部分是发现自己更加更兴趣也更拿手的方向了而已。
最后,以前的一个领导和我说过,做程序的能做的不错的,做什么都能做的比较好。主要是程序员的几个特点。第一喜欢总结归纳,这就是工作中经常做抽象的结果。第二就是做事比较懒,但是经常思考如何可以更懒,这样就能保证效率的情况让事情做到更好。最后就是喜欢试错和调整,这就是程序员调试bug的过程了。
最后,预祝未达到主程级别的加油早日达成成就,已经是主程级别的能更高升一步,主程以上级别的能做的更好同时来给兄弟提提意见或者沟通聊聊。