`
iamzealotwang
  • 浏览: 121864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】游戏开发项目管理入门

阅读更多

当你预期的那一天,也许是害怕的那一天,终于来到了:从工程师的队伍里你被提拔到了软件项目领导或者团队领导的位置。这也许就是你选择的职业道路,或许你不太情愿,将就尝试一下。无论在哪种情况下,你都可能缺少工程学科、人员管理以及领导能力的相关教育。
  这需要更多的领导能力和管理(它们不是一回事),而不能象Dilbert(译注:著名IT漫画主角)那样简单地和老板对抗了。当你考虑新的目标时,请 考虑下面的活动计划列表。一次就抓住了每个亮点,这是不可能的。但是这份建议说明可以帮助你将注意力放在可以提高你和你的团队绩效的活动上。

建立优先级
  作为经理,首先要做的、最重要的事是你需要有意识地建立优先级。当你仍陷于繁重的软件开发活动中时,你需要一套新的职责。过多的经理新手不能抗拒技术的吸引而陷于此类活动,这将导致项目组的其他人员想要获得经理的帮助时,却得不到帮助。
  有成效的领导知道他们首要的任务是为其他组员提供服务。这些服务包括训练和指导、解决问题和冲突、提供资源、建立项目目标和优先级、提供适当的技术指 引。要使每个组员都能清楚的知道,你总是可以帮助他们。我发现将自己定位于为被我监督的人工作是非常有意义的,而不是相反的。在你所作的事情中,对于组员 要求你帮助他们这件事,应该具有非屏蔽中断的优先级。
  第二重要的,是使你的客户满意。作为一名经理,没有直接的能力使客户满意,因为你已不再是作为个人提供产品和服务完成这点。相反,你必须建立一种环境,准许你的组员最大程度上满足客户的需求。经理提供了强有力的方法,有效地提高客户的满意度。
  第三重要的,是为你的项目工作。因为也许还有其他许多技术上的项目,或者其他经理的请求帮助,诸如为指导委员会工作。当这些和二个高级别的发生冲突时,都要准备推辞掉。
  很明显,使其他经理满意的事情是你最不重要的事情。在一个有秩序的组织里,如果你在三个以上的重大环节上获得了成功,其他的经理都会很激动的。我们并 不都能很幸运地工作在一个良好的环境里,但一定要对你任务单上排在最前面的工作任务努力尽到最大的责任。集中精力有效地、快乐地、尽可能地帮助你的组员, 不要将精力放在使你上司满意的上面。

分析你的技能差距
  除非你已经为新位置做好了准备,否则相对于你当前的领导能力和管理技能,你会感到一些差距。出色的技术背景或许是你被选为领导角色的一个因素,但是你要想干得出色,你需要更多的技能。针对别人的评论和项目,真实地列出你的长处和短处,然后减少差距。
  软件人员并不以令人满意的人际关系技能出名。你会希望增强处理人际关系的经验:解决冲突、说服以及灌输想法。你也不得不处理包括招聘、解雇、商谈计划表,以及在你的办公室里评论某人业绩使其伤心落泪等一些事务。
  我发现从一堂倾听技能课开始我的管理职业是非常好的。当作为个体提议人,积极地将我们自己的技术议程提交小组时,我们经常对此感到非常惬意。有效的管 理要求更多的合作和善于接受的人际关系方式。要花点时间学习如何(何时)巧妙地引导自己的自然判断。倾听技能课提供了一种交流机制,我已经发现在许多场合 下都很有用。
  接着,到讲台的另一侧,提高你的演讲能力。如果你真的不适应公开场合的讲话,学习戴尔.卡内基的课会有帮助的。你会发觉,通过这样的培训获得的经验,以及获得提高的交流能力,都可以帮助你更好地适应将来的工作。
  作为项目领导,为了计划和跟踪项目,以及当需要项目回退而采取修正措施时,你有责任调整其他人的工作。参加项目管理的培训课,阅读一些有关项目和风险 管理的书籍和文章。参加项目管理学会,阅读其月刊–PM Network。SEI的软件能力成熟度模型对于软件项目计划和项目跟踪提供了很多有用的建议。建立优先级的能力、控制有效果的会议、清晰的交流,对于 你,作为一名经理的绩效将会有实质上的影响。

定义“质量”
  几乎每个人都会认真地对待质量问题而且都希望生产出高质量的产品。然而,对于软件的质量含义,没有一个统一的定义。传统上的软件质量观点和“足够好”的软件观点有着激烈的争论。为了帮助小组走向成功,需要花一些时间和你的组员、客户共同探讨质量的含义。
  这两种阵营在思想上经常不会有相同的定义,可以很容易的就不同目的开展工作。关注交付计划的经理对于想正常地检查每行代码的工程师会不耐烦的;认为可 靠性非常重要的客户对一个带有很少使用但带有很多bugs的特性的产品是不会满意的;一个很好的GUI也许会让用户厌烦,因为用户已经熟记了如何有效地使 用前一个版本的产品。
  为了更好的理解客户对软件质量的看法,在Kodak,我的小组曾经邀请了我们的客户和他们的经理就这个议题在一个开放的论坛展开讨论。这个论坛是很有 意义的,那些使用我们产品的人有着自己的理解,通过讨论,我们可以知道我们制定质量的思路有哪些和他们是不相符的。明白了不同,就可以使你集中精力,照顾 客户的最大利益,而不是使开发人员获得最大满意。
  软件质量的传统描述包括要与说明书一致,满足客户的需求,代码和文档没有缺陷。“六个∑质量” (six-sigma quality)这个流行词,建立了一个非常高的尺度,用于监测失败的频率和密度。但它不适用于如快速产品交付,可用性,充足的特性集,已支付价钱的交付 意义这样的质量尺度,。对于我们生产和购买的产品,我们总是热衷于尽可能涵盖所有的这些质量特性,然而,妥协总是必须的。
  在一个项目的需求阶段,我们制定了包括十项质量属性的一个列表,如效率,协同性,正确性以及宜于学习,我们认为这对于用户来说是最重要的。我们请客户 关键人物代表小组以1到5的尺度评估每项属性。一旦我们决定了哪些属性是最重要的,我们就可以设计并实现这些目标。如果你在了解了对于客户的质量含义并在 设计实现质量属性的过程中没有麻烦的话,而且客户对质量属性表示满意,那你是很幸运的。
  在众多关注的质量说明中,我曾听到过一个:“客户回来了,但产品没有” 。和你的客户、开发人员一起对每一个产品都确定适当的质量目标。一旦决定了,就给出达到质量目标的明确的最高优先级。以身作则,按很高的质量标准要求你自 己的工作。采用这个座右铭:“力求尽善尽美,满足于优秀。”

表彰成绩
  对你组员成绩的表彰和奖励,是激励他们的一种很重要的手段。除非你的小组中已经有了一种表彰程序,否则这应是你最重要的事情之一。表彰包括象征性的东 西(证书,旅游奖励)以及实际的东西(电影票,餐馆礼品券,兑现奖)。在送赠品时要说一些亲切的话语:“感谢你所给予的帮助”或者“祝贺取得了成绩”。在 表彰和奖励上花费很少的心思和钱,就可以获得很多的友好和将来的合作。包括客户代表,以及为项目成功做出过贡献的支持人员等等开发组外的人员也可以获得表 彰。
  和你的组员讨论,了解他们感兴趣的表彰和奖励的方式。使得无论大小成就的表彰活动成为小组文化的一个标准组成部分。对每位组员对其所作的工作表现出发 自内心的兴趣也要给与含蓄的表扬,为消除所有影响他们战斗力的障碍尽你的力量。表彰是展示组员以及小组外的其他人的一种方式――你要知道并感谢他们为小组 成功所作的贡献。

学习过去
  你的小组在过去承担的一些项目有可能没有取得完全的成功。甚至在成功的项目上,我们也能经常认为一些事情我们下次会作得更好。当你进入了新的领导角 色,需要花点时间了解早期的项目为什么失败,并要计划避免犯同样的错误。对于软件开发,每位经理花时间处理每种可能要发生的错误是非常困难的,学习过去的 成功和失败就是个成功的开始。
  可以从过去你们小组承担的一个没有经过检查评估的项目着手,不要管其成功还是失败,实施项目后的回顾(有时称作事后调查分析)。你的目标不是判定责 任,而是为了在将来项目中作得更好。借此,可以了解什么已经作得很好,什么应该作得更好。在当前每个项目的主要里程碑时,通过集体讨论或公平的组织者,用 同样的方式,领导小组用头脑风暴的方式对其展开分析。
  另外,要了解领悟已有的软件工业的最佳准则。一个好的起点是Steve McConnell的Jolt Award获奖作品:快速开发(Rapid Development,Microsoft Press, 1996)的第三部分,叙述了27个最佳准则。也要避免McConnell叙述的36个常见的软件开发错误。你的组员也许反对新的工作方式,但是你的角色 是作为一名领导,要确保团队一致连续地使用最佳可用的方法、过程和工具。积极促进组员之间的信息共享,这样局部单个最好的实践经验就能成为每个开发人员的 工具箱的一部分。

建立改进目标
  一旦你对过去的项目建立起了回顾,确立了质量对小组的意义,你就要建立短期以及长期改进的一些目标。目标要尽可能量化,所以你要划分几个简单的阶段,标明你是否采取了适当的过程朝着目标前进。
  例如,如果你认定由于需求的不稳定导致项目经常延期,你可以建立一个改进需求稳定的目标,在6个月内提高50%。这样一个目标需要你确切知道每周或每月需求的变化数,清楚他们的出处,采取行动控制那些变更。这可能要求你要改变与那些提交需求改变的人的交流方式。
  你的目标和阶段是软件过程改进程序的组成部分,你要使之有序。作为缺乏创造力的官僚主义的最后避难所,轻视“过程”很流行。虽然事实上,每个小组都能找到改进其工作的方式。当然,如果你总是用已有的工作方式工作,你也就不要期望你会得到比以前更好的结果。
  有两个强烈的原因要求改进过程:校正问题,防止问题。确保你的改进努力要围绕着已知的或可预知的可能威胁项目成功的问题。领导你的小组找出当前正在使用的方法的长处和短处,以及项目面临的风险。
  我的小组召开了一次“两段式头脑风暴”练习,来确定改进软件生产力和质量过程的绊脚石。在第一次会议中,参会者在便条上写出他们关于会议主题的想法, 一个便条一个想法。组织者将他们写在便条上的想法收集上来并分组。最后,我们就会得到一打主要的分类,并将其记录到活动挂图上。
  第二次会议,相同的参会者在便笺上写出解决这些障碍的思路,并贴在挂图的合适位置。进一步细化,归纳出一些详细的活动,就可以成为我们努力的一部分,清除障碍,帮助组员实现软件的质量和生产力的目标。
  建立可度量和可达到的目标,便于你集中精力实现改进。要使目标具有明显的优先级,并可周期性地监视过程。记住你的目的是,提高你的项目和公司完成的技 术和业务上成功,不要满足于一些过程改进书籍里提到的期望细节。要把改进的工作视为迷你项目,具有可分发、资源、计划和有责任的小项目。否则,过程改进活 动将总处于比诱人的技术工作低的优先级上。

缓慢的开始
  这篇文章提供了许多建议,帮助你,一位软件经理新人,带领你的小组走向伟大的成功。在日复一日新的工作压力面前,要努力保持你的头脑清醒。在长时间的塑造软件开发小组的文化和习惯上,你还是个非常重要的角色。你不必一次性都作完,可以选择跟环境最相关的的几个开始。
  作为软件经理,除了项目要按时按照预算完成外,你要担负的责任还很多。你还要:
    领导技术人员,将他们形成一个具有凝聚力的团队;
    建立协同团队工作的环境;
    鼓励和奖赏高级软件工程师的实践应用;
    平衡来自客户、公司,组员和你自己的需求。
  这是项重大的任务,祝你好运!

分享到:
评论

相关推荐

    Phaser桌面游戏开发:Phaser基础入门-(10).游戏状态管理.docxPhaser桌面游戏开发:Phaser基础入门-(11).调试技巧.docxPhaser桌面游戏开发:Phaser基

    Phaser桌面游戏开发:Phaser基础入门_(10).游戏状态管理.docx Phaser桌面游戏开发:Phaser基础入门_(11).调试技巧.docx Phaser桌面游戏开发:Phaser基础入门_(12).常用API介绍.docx Phaser桌面游戏开发:...

    android游戏开发入门

    在Android游戏开发领域,入门是每个开发者都需要经历的阶段。Android平台因其开源、广泛的设备覆盖以及丰富的用户基础,成为许多游戏开发者首选的目标平台。本文将深入探讨Android游戏开发的基础知识,帮助初学者...

    Android 游戏开发入门随书光盘的代码

    在Android游戏开发的世界里,初学者常常需要一个良好的起点来理解和掌握这个领域的基本概念和技术。...通过实际操作和学习这些代码,开发者能够迅速提升技能,为未来的游戏开发项目打下坚实的基础。

    C++项目开发实战入门 源代码.zip

    C++是一种强大的、面向对象的编程语言,它在系统软件、游戏开发、应用程序、设备驱动等领域有着广泛的应用。通过这个实战项目,您可以学习到: 1. **基础语法**:了解C++的基础,包括变量、数据类型、运算符、控制...

    Pygame桌面游戏开发:Pygame基础入门-(10).Pygame游戏循环:理解与优化.docxPygame桌面游戏开发:Pygame基础入门-(11).Pygame精灵:使用Sprite类管理

    Pygame桌面游戏开发:Pygame基础入门_(11).Pygame精灵:使用Sprite类管理游戏对象.docx Pygame桌面游戏开发:Pygame基础入门_(12).Pygame游戏界面:用户界面与菜单设计.docx Pygame桌面游戏开发:Pygame基础入门...

    C#游戏开发快速入门

    【C#游戏开发快速入门】是一门针对初学者的教程,旨在帮助学习者迅速掌握使用C#语言在Unity3D平台上进行游戏开发的基础知识。在这个过程中,Visual Studio 2017作为主要的代码编辑器,提供了一流的C#编程环境。本...

    Python项目案例开发从入门到实践.rar

    包括窗口管理、事件处理、图像绘制、音频播放等方面,让你了解游戏开发的基本流程和原理。 4. **第5章 爬虫应用——校园网搜索引擎** 这一章深入到更复杂的爬虫项目,可能是建立一个小型的搜索引擎,涉及到网页...

    Android游戏开发从入门到精通

    "Android游戏开发从入门到精通"的主题旨在为开发者提供一套全面的学习路径,从基础概念到高级技术,帮助他们掌握创建引人入胜的移动游戏所需的知识。 首先,Android游戏开发的基础是Java或Kotlin编程语言,这两种...

    明日科技C#开发入门及项目实战

    实例032 开发一个猜数字游戏 第4章 字符与字符串 实例033 字母与ascii码的转换 实例034 获取字符串中汉字的个数 实例035 从字符串中分离文件路径、文件名及扩展名 实例036 对字符串进行加密与解密 实例037 开发一个...

    C#项目开发实战入门_明日科技_第五章

    首先,C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用和游戏开发。在本项目中,C#作为主要的编程工具,用于实现五子棋游戏的核心逻辑,包括棋盘操作、棋子移动、胜负判断等功能。 ...

    游戏开发大全,游戏开发入门者必看

    游戏开发是计算机科学的一个独特分支,它涉及到艺术、编程、设计和项目管理等多个领域。对于初学者来说,了解并掌握游戏开发的基本概念和技术是至关重要的。"游戏开发大全,游戏开发入门者必看"这个资源显然是为了...

    使用unity3d进行游戏开发_从入门到精通_02.pdf

    标题和描述中提到的“使用unity3d进行游戏开发_从入门到精通_02.pdf”暗示这是一本关于Unity3D游戏开发的教程书籍,其中“第二章 初识cube”指的是本章将介绍Unity3D中基本的立方体(cube)对象的创建与操作。...

    JavaGame游戏开发入门源码15个合集.zip

    Java游戏开发是一个涵盖众多技术领域的综合实践,这个"JavaGame游戏开发入门源码15个合集"提供了宝贵的资源,适合初学者探索和学习。在这个合集中,你将找到一系列用Java语言编写的简单到复杂的游戏示例,它们涵盖了...

    使用unity3d进行游戏开发_从入门到精通_04.pdf )

    不过,我可以提供关于“使用Unity3D进行游戏开发 从入门到精通”的通用知识点。 Unity3D是一个强大的游戏开发引擎,支持多平台发布,包括PC、移动设备、游戏机等。在游戏开发的过程中,从基础的安装与界面布局,到...

    Unity 2D游戏开发快速入门

    本教程《Unity 2D游戏开发快速入门》旨在帮助初学者迅速掌握利用Unity创建2D游戏的基本技能。 第一章:Unity简介与安装 Unity引擎不仅支持Windows、Mac,还支持Android、iOS等移动平台,以及WebGL、Linux和各种游戏...

    Cocos2d-x 3.X游戏开发入门精解.pdf

    根据提供的信息,我们可以推断出该文档主要围绕“Cocos2d-x 3.X游戏开发入门精解”这一主题展开,旨在为读者提供从基础知识到实际应用的全面指南。接下来,我们将对该文档可能涵盖的关键知识点进行详细解读。 ### ...

    C游戏编程从入门到精通

    《C游戏编程从入门到精通》是一本专为游戏开发初学者设计的教程,全面涵盖了C语言在游戏编程中的应用。这本书旨在通过深入浅出的方式,帮助读者掌握C语言的基础,进而理解游戏开发的核心概念和技术。 首先,C语言是...

    cocos2d游戏开发入门

    Cocos2D-iPhone是iOS平台上一款广受欢迎的2D游戏开发框架,它以其高效、易用和功能丰富而受到开发者们的青睐。本教程将带你踏入Cocos2D游戏开发的大门,通过学习,你将掌握如何利用这个强大的工具创建令人惊叹的2D...

    使用unity3d进行游戏开发_从入门到精通1-4章

    安装过程讲解包括下载、安装和设置Unity Hub,这是一款管理不同版本Unity的工具,方便开发者切换和管理项目。此外,还会介绍Unity编辑器的基本界面和工作流程,帮助你熟悉环境。 第二章:基础操作与场景构建 本章...

Global site tag (gtag.js) - Google Analytics