有生之年作为主程做的第一款游戏终于正式上线了(之前有2款作为普通程序的己上线的游戏),虽然现在依然保持着一周加班6天的状态。但是欣慰的是上线数据表现还不错,值得期待。做主程时间也有半年多了,从最初的手忙脚乱,诚惶诚恐到现在能够较好的应对,其中心酸历程只有经历过才能体会到。即使如此还是有很多做的不够的地方值得反思,要提升自己的综合素质。
在网络上搜集了各种资料和自己的经验(大部分内容摘自网络,主要也是为了提醒自己),总结如下:
- 服务端主程主要负责游戏开发中服务端的各项工作
- 包含但不限于:解决团队中别人解决不了的问题,制作提升工作效率的工具;
- 服务端技术人员管理
- 向上有汇报,向下能统筹
- 尽可能的快速实现策划的需求,提供解决方案
- 达到一个里程碑后能反馈,遇到难点短时间无法攻克,及时沟通,并说说自己能做到的程度,帮助策划思考替换方案;
- 改需求无法避免。(网上产品经理(策划)是被各种程序员黑,现实中调侃调侃可以,别过了,人家也是没办法。)
- 会反思,策划的功能对吗?为何有会这么设计?配表方便吗?
- 手下心中的好大哥,人品过关,技术过关。
- 保持对新技术的好奇心,多关注业内比较新的解决方案。因为一旦做新项目,技术选型就是你的本职工作,而且影响整个项目周期,换句话说到底未来需要踩多少坑,由你决定。所以你要有一套经过实践证明行之有效的学习方法论
对于一个刚刚晋升的同学来说,管理这一块是最棘手的,对于我来说也是这个阶段。这块其实也比较通用,不限于技术管理领域,但是管理这东西不能靠书本,在实践中总结,才是深刻的。你是主程了,那就意味这有一堆人会看着你做事。你怎么做事将间接的影响组员的做事态度。所以一个词——以身作则。别以为主程了就可以有些特权,可以迟到,可以工作时间扯淡,始终牢记:能力越大,责任越大。之所以把这条列在这里,我觉得管理包括自我管理和团队管理,而且前者是后者的基础;以前吧,你只要把自己的事情做好就算完成本职工作了,超出边界的工作,你做了那是加分,你的主程看到了或许还能表扬你,你不做也没关系。而现在你的事情就是整个游戏的服务端(甚至整个技术),任何报错,组员解决不了的诡异的bug,那都是你要解决的事情。
- 你的工作会被各种打断,来自各位组员,主策,主美,项目经理。所以整片的工作时间几乎只在这些人都回家了,你留下来加班才能获得。
- 可能你还有一件事情,就是给每个组员打绩效,项目经理说,SABCD各占一定比例,所以给你出个难题,你想想你怎么解决:这个月是项目上线前夕,大家表现得都很拼,都很优秀,你怎么打绩效。
- 你的内心要足够强大,因为会有人质疑你的决策。
- 你的沟通表达能力需要提升一个档次,因为你要给各个层次的人解释同一个问题;
- 你会有许多跨部门的沟通;
- 你的组织能力要跟上节奏,定期组织这帮程序单身男“腐败”,严谨点叫团建。还要开技术分享会议。
- 你要保持谦虚,明白个人能力再强,都不可能解决所有事情,你需要咨询你的组员。再优秀的人都有他的短板,你要做就是把一群互补的人凑在一起,各自发挥优势。
- 你要给组员尽可能清晰地提供上升阶梯。多年以后,当他成为主程了,你可以骄傲地对他说 我曾经推动过你的进步。
- 你最好能充分了解你的组员,分配任务要有明确的范围,不能存在模糊地带,要能给与一定的帮助。
- 你的组员能力不均匀,做事情不要一刀切,换句话说管理要分层, 不同层关注点不同
- 你是Leader,不是Boss。在雇佣关系中,好人谈钱,坏人谈理想。所以多为组员谋取福利吧。
- 你其实也是个打工的对项目经理负责,所以要有汇报
- 谁都不希望加班,但问题总得解决,更要命的是你还不知道怎么解决。咱们程序和美术不一样,美术基本上是工作量的事情,程序会有bug,deadline就在那里,问题还没解决怎么办?
一. 以德服人而不以技术高管制别人。 主程序一般技术水平高,在管理下面的程序的时候,多以自己的水平高而获得大家的认可,但是技术水平高和项目管理水平高不是同一个概念。一个技术水平高的主程序不一定能管好人,能带好人。如果以技术水平高自居,对下面的人肆意对待,他无法赢得项目成员的拥戴,无法获得大家的认可。程序员不是实现产品功能的工具,他是具备思考感情的人。在我所遇到的主程序中,有的很好,技术水平高,做事分明,不以水平高自居,而以自己的人格魅力赢得大家的尊重;有的则难言其好,技术水平高,但做事有针对性,常以水平高自居,对不服从的人进行压制。不同的风格,会产生不同的结果。我在此想说的是,一个人的技术是不可能永远保持先进性,而一个人的品德则可以永恒的。工作除了满足生活的需要之外,它带给人的还有快乐。一个优秀的主程序,应该公平、公正的对待每一个人,以德服人。让每个跟从的人体验到你不仅仅是技术水平高,人格更高。
二. 自由、共享、开放而不是限制、保守、自封。 主程序在项目中,对核心技术常常保留,隐藏,不公开,以防别人了解,学习,泄露,进而走进一个限制、保守、自封的怪圈。其实技术保留是没有错的,但是在这个自由、共享、开放的世界中,有时候是行不通的。因为中国的程序员有多少原创的技术呢?多是在互联网上,查查资料,共享下别人的经验,然后加以改造,修改,实现功能。每个人都应该很清楚,我们查询的资料是哪里来的呢?是那些有志于自由 ,共享,开放的有识之士发布的,我们从别人哪里学习,而我们为什么不把我们的经验心得也以自由,共享,开放的心态与天下的程序员共享呢?限制、保守、自封不利于技术的进步,不利于人才的成长。如果为限制、保守、自封找个理由,那就是为自己保留饭碗,惧怕被竞争。
三. 优秀的代码不一定创造优秀的产品,它只是更好的为产品服务; 优秀的产品并不一定建立在优秀的代码上,而是建立在市场和用户基础上。一个优秀的主程序,除了做好本身的编程,架构,设计工作外,更多的精力应放在如何设计优秀的产品而不是如何编写优秀的代码,产品是和市场赛跑,产品是和时间赛跑。抓住市场的先机,快速的创造出合格的产品比把心思放在如何写出优秀的代码价值大的多。衡量一个产品的成功,不是靠评价代码的优劣,而是靠是否赢得市场,是否赢得用户的欢迎。主程序常犯的一个错误是这行代码应该这样写,哪行代码应该那样写,完成的功能在不断的修改,修改。时间就这样消磨掉,推出产品上市的日期就被无限制的拖延下去。从而失去了市场的先机,走向失败。所以在我看来,一个优秀的主程序应该能够控制好时间,对市场的嗅觉要灵敏,对用户的把握要准确,只有这样才能保证产品能够在预期内推向市场,赢得成功。
四. 善于接纳意见,切忌专断 主程序有个很大的毛病就是专断,总是相信自己是对的,别人的意见不愿听从。先前曾经和一个主程序做事,他工作大概7年了,经验也很丰富,技术水平也很高。但是他做事的风格让人很难接受,在项目中要求别人必须绝对的服从,不容许有意见。即使项目组成员提出了合理的意见,也只是点头但不当回事。妄自尊大,孤傲自负的主程序,对项目是百害而无一利的。主程序要懂得尊重别人。只有互相尊重才有利于合作的愉快,项目顺利的完成。经验对于每一个来说,都可以随着工作阅历的增长而增长;技术水平也可以随着工作阅历的增长而提高。但是人格魅力,品德修养却非一朝一夕炼成的。懂得如何做人比什么都重要。具有人格魅力的主程序总是得到大家的赞赏。
五. 合理安排任务,不搞个人主义 在项目中,有的和主程序关系不错,主程序在安排任务时就把重要的模块分配给他,让其他人打酱油。这种做法不值得提倡和发扬。公平合理的安排任务,不搞个人主义,这也是对主程序的一个基本要求。从客观的说,项目中人人平等,每个人都应该得到应用的锻炼机会。在不影响项目进度的情况下,我们应该如何合理的安排任务呢?我们应该积极的和策划沟通,对每一个功能点,每一个细节进行衡量,判断所需要的时间,然后分配给项目组的成员。但是有的主程序的做法是自己先列出一个宏观计划,对某某A说,这个月你搞定这个;对某某B说,这个月你搞定那个。这种没有对每一个功能点进行细化的做法的结果就是,项目进度无限制性的延期。经验教训表明:宏观计划和微观计划二者是合而为一的,缺一不可的。
有些人,工作了很多年了,但差不多每年换一次工作,因为很多游戏研发周期只有1年多,结束就走人。然后最后手里会积累大量的代码资源,这些资源有可能是别人的,也肯定有自己的一部分,但是这个时候如果没有融汇贯通,那么这些东西都不是自己的,他手里的资源也就像一个人家里买了很多书但是从来不看一样,暴殄天物,可是一般情况一个人也看不了这么多的东西,最简单的道理就是msdn了,这就有了第一点的要求,能够进行大量的信息索引。就是说一个主程必须要有足够多的见识,同时必须要能够快速针对当前项目碰到的问题定位,并且在自己的知识库里找出来。当然我们不可能储存足够的信息在以后的工作中来用。但是必须要有快速上手一个新的项目的能力,如果项目中有大量的超出自己知识范围的东西存在,那么我的建议是放弃在这个项目中间做主程,因为无法准确评估项目需要开发的时间,无法把握功能难点。