技术负责人工作思考

从2015年出来创业到现在已经过去5年了, 当初选择出来创业,目的很简单,就是想掌握游戏开发的各个方面,从头到尾做出一款完整上线的游戏。如今最初的目标算是达成了。作为团队的技术负责人, 从最开始的单人做DEMO到现在在盛趣游戏体系内带领游戏开发团队,已完整做了两款游戏,经历了游戏开发的各个阶段。游戏类型上从2D到3D,玩法上从单人闯关到实时同步战斗,大世界,Roguelike等,技术上客户端服务器各个方面都有涉及。 在这五年中经历了很多,也成长了很多。通过这些经历,对于技术负责人这么一个岗位有了一些思考,在此记录一下。

先对我这里讲的技术负责人作一个定义:它是指负责带领开发团队完成项目开发工作的人。需要负责的工作包括技术调研、具体方案实现、代码审核、招聘人员的面试筛选,团队的管理等等。 这样的人在各个公司可能会有各种各样的名称,例如技术总监,主程序等,而在技术负责人下也会设立组长、经理等来分担这些职责。在后面文章中统一使用技术负责人这一个词来做统称。然后所说的项目、产品是指网络游戏。

首先项目开发分为三个阶段:DEMO预演阶段、迭代开发阶段、测试及上线维护阶段。DEMO预演阶段指的是前期产品的构思及预演尝试阶段,以立项为止。项目立项后进入迭代开发阶段,这一阶段就是以既定的方向及版本规划按时完成功能,直到产品第一次上线测试为止。最后是产品测试及上线维护阶段,测试阶段不会涉及太多新功能开发,但需要根据测试反馈结果查漏补缺,而最终上线后还需要考虑产品迭代,线上维护更新等等。这三个阶段不一定是顺序不可逆的,它可能是循环上升的。在不同阶段技术负责人的工作重心也有所不同。

在前期的DEMO阶段,需要充分与制作人、主策主美等团队核心沟通项目的定位及设计。结合玩法、美术表现需求,还有团队成员的技术水平,擅长方向,开发周期,目标定位等等来选择合适的实现方案。这项工作考验的是技术负责人的开发经验及对新技术的了解掌握情况。新的技术总是如此吸引,但新技术的掌握程度、产品定位,时间周期,外部风险等等我们都需要充分考虑。曾经做过的方向肯定是最有把握的,但如果下一款产品与以前做过的一摸一样,那是否依然具有吸引力,竞争力,是否能在将来吸引用户就是一个问题了。结合各项因素,在技术创新突破与保证完成之间达成一个合理的平衡。在此之后就需要细化每个版本的技术要点,规划好哪些工作要在哪个时间节点内做到什么程度,分析每个时间点的主要风险。是否选择了一个合适的技术方向,是否能在项目前期就尽可能的规划好各种技术细节将直接影响到后面项目开发的难易程度。

在迭代开发阶段,项目的重心就是按时按质量完成版本计划内容。为了达到这一目标,技术负责人需要做好两方面的工作。一是质量把控,二是团队管理。质量把控工作包括指定合理的工作量,控制开发的每个环节,代码review、实现文档与单元测试的监督落实,BUG跟进等等。遇到实现方案上的难点,需要带领大家一起讨论解决,并且重新审视当初定的框架或方向是否合理。团队管理方面分两块,一是引入新人,二是提升现有成员的产出。在DEMO阶段通常团队不会有很多人,在立项后进入迭代开发阶段一定会招聘新人。在引入新人这件事情上,负责人需要做好筛选及带领的作用,筛选合适的新人加入团队,无论是技术上还是工作态度,价值观上都要考虑。新人进入团队后要安排合适的工作让他们逐步上手工作及融入团队。而提升现有成员的产出这件事情,实际上包括很多方面的事情,例如组织培训分享,在他们工作遇到的具体问题时给予帮助及指引,安排合理适合他们自身特点的工作,鼓舞团队士气等等。关于管理的话题非常广泛,在这里就不一一展开了,之前有一篇《格鲁夫 给经理人的第一课》读书记录,大家有兴趣可以去看看。有一个值得思考的问题是,不管是在创业公司还是在大公司里面都有非常多的团队倒在了这一阶段。当然原因会有很多,排除资金、市场变化等我们无法控制的因素,有两点我们是可以尽量避免的。一是项目做着做着做不出来了,二是团队做着做着就散了。半路做不出来这种情况往往是DEMO阶段对技术方向及细节规划不够清晰,后续实现阶段才发现很多无法解决的问题;也有的是在迭代阶段时方向已经偏离了最初的设计。出现这种问题,技术负责人都难辞其咎。作为技术负责人一定要把控这些风险因素;至于团队做着做着就散了,因素肯定也是多方面的,我们应当多关注团队成员的工作状况,是否有他们难以胜任的工作打击了他们的积极性,是否安排的工作量已超出他们的能力范围,影响质量及心态。平时需要多了解他们的想法,灌输团队价值观,增加团队内部及各部门之间的沟通理解,让大家保持积极的心态。当然每个团队都有每个团队的困难,并没有什么万能公式可以解决所有问题。在这里提出的目的是让技术负责人在项目迭代阶段不仅要关注技术实现,产品质量,还需要考虑项目的潜在风险,是否会有技术上或团队上的问题导致项目无法进行下去。

来到线上测试及正式运营阶段,技术负责人更多的工作就是要应对各种突发情况。客户端闪退、服务端宕机、发错道具、存库失败,卡号登不上、某个机房网络不通等等。虽然说这些都是上线前应该测试保证没问题的,但事实上总会有意向不到的情况出现。当出现这些问题时就考验负责人在开发阶段是否有做好预案,并且根据当时的情况做出判断选择。遇到这些情况时最重要是心态不要受影响,无论是否开发的原因导致的,无论是具体实现的问题还是设计的问题,最重要的是尽快找出损失较小的解决方案。除了应对突然情况,在上线后的版本迭代开发上,对于内容及时间节点也是需要谨慎考虑的。当产品已经在运营阶段每次的更新都时不小的挑战,都需要认真对待。开发新功能或修复BUG都要考虑是否会对原有用户数据造成影响。上线后无论项目出现什么情况,是好是坏,都不要影响心态,上线只是开始,后续还有很多挑战。直白一点的说就是顺风不要浪,逆风不要投。

在不同阶段技术负责人的工作重心会有所不同。除此之外,在不同规模的团队里,该职位的定位也会有区别。在创业团队中和在大公司中做项目是会有不同的需求的。

在创业公司里,作为技术负责人大部分时间及重心就是带头开发产品。技术负责人不仅需要能把握整体框架,核心功能,还需要承担大量甚至是最多的开发工作量。因为创业阶段人员少,时间有限,能不能在计划时间内完成功能就是最重要的事情。相对而言,人员管理培训及技术调研等并不需要花太多时间精力。创业项目的技术选择上也应该趋于保守,因为时间成本非常高,新技术往往需要更多的时间去试错才能运用到项目中。比拼新技术的运用也往往不是创业团队的取胜点。

如果是在大公司内做项目又是不一样的情况。技术负责人对于技术方向、架构及核心功能的规划及把控是肯定需要的,但在具体实现上就应该更多的交由团队成员承担。自己更多的时间应该放在人员管理培训及新技术调研上。大公司都会有很多公共资源,例如技术中心、质量中心等。他们会提供很多技术及服务,用好这些公共资源有的时候比自己实现要更加事半功倍。而项目是否能得到重视,是否能要到更多的资源往往又与项目亮点(噱头)有直接关系。这个时候就需要我们更多的调研引入新的技术。而且与创业相比,大公司通常能给与更多的资源保证项目上线,所以我们在技术选择上应该更积极创新一点,不怕试错,更多的尝试新技术从而给项目带来更多亮点。人才招聘及培训也是一项非常重要的工作。引入一个优秀的人才,用好人才,给与他们正确的指引及培训,让他们在自己擅长的岗位上发挥所长,这些做好了往往比自己独立承担各项功能,写好具体某一个模块的代码更重要。

最后聊聊技术负责人自身的一些要求。第一点也是最重要的一点是持续学习新知识。无论是前端的还是后端的,引擎渲染的或者是逻辑架构的,都一定要学习掌握,只有不断学习新的技术,才能规划项目的技术方向。而对于新技术不能只停留在表面了解上,需要清楚原理并掌握运用。因为只有这样才能预见项目未来会面对什么样的问题,并且在面对具体问题时做出正确的判断选择。同时对技术的掌握程度也能帮助我们获得下属的认同,并为他们带来提升。第二点是要善于总结,发现问题,并从结构或制度层面解决这些问题。如果某些模块或者流程容易出BUG,或者经常需要修改,往往意味着这些地方结构设计有问题,并且具体负责实施的人员在能力及态度上可能也是有问题,我们需要及时采取有效措施解决问题。第三点是要合理安排时间,要从一大堆事情里找出现阶段最有效帮助项目发展的事情,并将精力集中在上面。什么都做,或者只做喜欢(擅长)的事情,对项目发展来说都不是最优选择。我们需要对项目发展及自身定位有一个清楚认识,从而在最有价值的事情上投入精力,推动项目发展。

以上是我从这五年的工作中总结的一些想法,可能很多都是泛泛而谈,也肯定具有局限性,大家批判的看看就好。写这篇文章更多的是希望回顾一下过去的工作,总结经验,在以后的工作中尽量避免一些犯过的错误,在以后的工作中做得更好。

Bookmark the permalink.

Comments are closed.