本文作者:sodme
本文出处:http://blog.csdn.net/sodme
声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.
引言:
第一篇文章,说到了敏捷方法论和世界观的问题,看似有点玄了,其实,任何一个可以坚持下去的人或者任何一件可以坚持作下去的事,它的背后,都一定有一套自己的逻辑体系在支撑,而这个逻辑体系,就可以看作是它作事作人的方法论.敏捷二字, 其含义有两层: 高效率, 高质量. 其目的也绝不仅仅在于"快"研发, 它的终极目的, 是推动整个产品或者公司团队加速面向市场提供好产品的速度和质量. 在这一篇文章中,将会详细谈到我们自己的具体作法,当然,这已经是一年前的文章,很多作法可能已经因应现在的形势进行了改进,但基本的思想已暗含其中。你的作法可能与此不一样,但任何已经学会驾奴开发过程的同仁应该都会明白这些作法背后的含义。
正文:
敏捷开发, 最最主要的, 是要理解敏捷的本质是什么? 在我看来, 敏捷的本质, 很简单: 如何快速出东西, 快速的出质量高的东西.
由此, 我认为开发过程中的所有东西, 都应该围绕着这两个主题展开: 快速, 质量.
写程序写了这么多年, 我们大家可能都有点感受: 写得越来越没感觉了, 写得越来越麻木了. 因为, 随着自身的成长和成熟, 很多开发过程中会出现的常规难题, 被我们一一攻破, 似乎在我们眼前的路, 已经没有了太多的挑战, 技术难度的挑战.
为什么会有这种感觉? 在这里, 我要毫不客气的指出: 那是因为你把自己仅仅当成了一个有任务就作, 无任务就闲的技术人员, 而非产品人员. 当你把自己定位成一个产品人员之后, 你才会知道用户需求是如此多而复杂, 我们还有如此多的事要作, 要去作得更好.
什么是技术人员? 什么是产品人员?
我给一个狭隘的解释:
技术人员, 就是只泡在技术的单纯世界里, 而不太注重用户感受以及用户体验的人, 他们把攻克一个技术难题当作是对自己能力最大的肯定;
产品人员, 是指从产品出生到投放, 都一直能为用户考虑, 为用户着想, 在每一个细节上让用户爽而不是让开发者自己爽, 他们把用户口碑当作是对自己能力最大的肯定.
那么, 我们要作什么样的人? 要作什么样的技术人?
对于一个研究院所, 他可以选择成为一个单纯的技术人员. 但是, 如果放在绝大多数直接面对市场的大中小企业里, 他就必须选择成为一个从产品角度考虑的技术人员, 要让自己成为产品人员.
我坚持认为, 技术有没有价值, 不是靠别人推荐, 不是靠专家认证, 也不是靠发了多少研究论文, 而是技术本身有没有在创造价值, 有没有很好的在创造价值. 我是一个彻头彻尾的实用主义者, 我鄙视所有的学院派.
马云说: 找人, 首先, 要找价值观相似的人. 而什么样的价值观才是相似的?
马云, 从一个企业管理者的角度, 认为跟他价值观相似的应该是这种人: 进入阿里, 就要想着长期耐得住寂寞的作下去, 作对社会有推动的有价值的事, 不要只想着钱, 不要只想着干几个月就走人.
而我, 除了认同他的这些观点之外, 想在招技术人员方面额外加一点: 我们不要学院派. 我把这一点同样视为价值观是否相似的一个基本考核点, 单纯的学院派, 不适合来我们团队.
在网易, 我们的团队, 是一个狼性文化十足的团队, 这在现今的网易, 可能是一个非常独特的特例. 但是, 我们正用自己的成绩, 效率和质量来证明着自己. 没有狼性文化的团队, 注定无法成长; 而没有狼性文化的公司, 也注定无法壮大.
我先介绍一下我们的作法. 在我们这整个项目中, 配备了接近10名程序, 5位QC(质量测试), 近10位策划. 根据项目内容, 分成了五个小组: A, B, C, D, E. 平时的工作, 是将整个项目内容拆解, 各个小组平行推进. 这是我们总体的人员分配.
我所在的组, 是D组, 我们的程序有两位, 一个客户端, 一个服务端, 其他人员: 一个QC, 一个策划. 我们组共计四人. 我们小组, 从7月份开始, 接手作游戏内的一个比较大的群体系统: 势力系统. 这是比公会系统更为庞大和繁杂的系统, 是将来带动玩家互动的主要系统之一. 在接手这个新系统时, 我就在尝试一种新的开发方式.
原来的开发方式是:
策划人员出策划案, 程序将策划案实现, QC对已经实现的系统进行测试.
我们现在的方式是:
策划人员出策划案, 所有人员对策划案进行流程模拟, 找问题, 程序开始带着QC一起设计, 程序将系统进行实现, QC对系统可行测试.
而更具体的步骤是:
1. 策划出案子;
2. 所有人员(程序,QC)通读案子, 各自模拟流程进行推导, 看有没有破绽及断层之处, 提交策划人员进行修正; 修正完后, QC开始进行测试用例设计.
3. 程序制定数据包协议, 对协议进行走读: 向其他程序, QC以及策划讲解这个数据包过来之后会如何进行处理,包括要进行的判断, 要作的逻辑, 以及广播包要发的玩家对象范围. 这一步, 最大的好处, 是让每个参与者都明白我们的逻辑底层到底是如何走的.
4. 程序设计关键数据结构, 这一步, 是带着QC一起作. 一个程序功能, 就两点: 数据结构+算法. 而首先, 最主要的是决定采取什么样的数据结构, 数据结构进一步决定了采取什么样的算法. 这个数据结构, 其意义已经超出程序代码本身, 这个数据结构会牵涉到QC, 牵涉到策划. 在我们这个项目中, 数据结构最主要的内容就是各种各样的配置表, 这个表的内容应该含有哪些内容, 这些内容应该如何组织和约定, 就成为提高程序,QC和策划工作效率的一个重要环节.
5. 程序对功能进行逐块实现. 但在这里的实现, 也会有多种不同的方式. 我们的作法是: 先实现最基本的功能, 让客户端和服务器端能尽快联调起来, 然后各自发布一个基本流程版本给对方: 客户端给服务器端发布一个可用的客户端, 服务器端发布一个可用的服务器给客户端, 两个人分别用这个可用的版本进行各自的细节完善.
6. 程序实现功能后, 按照QC之前设计的测试用例对自己作的程序进行自测. 由于时间及专业有限, 这种自测, 主要是测关键逻辑及易错部分, 全面的覆盖性测试还需要依赖QC人员自己完成.
7. 程序自测完成后, 带QC及策划人员进行代码走读, 将产品正式交付QC进行测试. 之所以在这个环节加入代码走读这一项, 其目的也只有一个: 让项目的每一个参与者, 都能非常清楚程序底层到底是如何实现的. 这一点, 对QC进行全面测试非常非常重要, QC在进行代码走读之后, 可能会对当初的测试用例进行修正. 当然, 这里的代码走读, 还是具有一定技巧的, 因为QC和策划毕竟不是专业的技术人员, 对于算法和太深层次的技术细节可能并不容易理解, 所以, 这里的走读, 要作到既能让他们能理解关键逻辑, 也要让他们不要因为无法理解众多技术细节而出现过多的懊恼情绪, 这也会影响工作效率.
8. QC第一轮测试完成后, 策划人员对已经实现的功能进行游戏体验, 提出修正和完善意见.
以上, 就是我们在实际开发中所采用的一套完整的方式. 其核心思想有几点:
1. 让项目的每一个参与者, 都成为项目本身的主人. 这种主人翁思想的植入, 是通过让他们每个人都参与到项目的各个环节中, 让他们每一个人都仔细了解项目的每一处细节实现来体现.
2. 将QC的优势发挥在开发设计期, 而不是后面的交付期. 因为到了交付期, 其实, 产品已经出来了, 如果到那时发现问题要进行修改, 其带来的代价将远远大于开发期的修改. QC的测试用例, 以及"测试式思维", 是对程序人员固有思维方式的一个非常有利的促进和监督.
我们的开发方式还在不断的总结和完善中, 还有很多很多我认为非常有效的方法和感悟想和大家分享, 在下篇文章中再接着谈。
分享到:
相关推荐
最后,书中可能会探讨如何将这些原则、模式和实践应用到具体项目中,包括团队组建、沟通策略、风险管理以及如何度量和改进敏捷实践的效果。通过学习和实践这些内容,开发者和项目经理可以更好地理解和实施敏捷开发,...
虽然当时敏捷开发的相关书籍和资料多以抽象和理论化为主,但这并不妨碍敏捷开发理念在作者心中的震撼效应。作者在亲身经历和观察了不同公司和团队后,开始深入思考敏捷开发背后的哲学思想和实践方式。这些思考和经验...
根据给定的文件标题、描述、标签以及部分内容链接,我们可以推断出这是一份关于北大青鸟Y2阶段的学习资料汇总,主要包含了该阶段的复习题,分为笔试和机试两个部分。接下来,我们将对这些知识点进行详细的解读与扩展...
- **特殊主题教育**:开展以《雷锋精神永驻我心中》《我能行》为主题的班队会,增强学生的社会责任感和自信心。 ### 2. 教学方法的创新与实践 - **语文教学**: - 强调学生自学能力的培养,通过预习课文、提出...
同时,对于质量问题,我们需要树立"质量在我心中"的理念,这意味着每个人都应视质量为自己的责任,无论是程序员编写代码,还是项目经理管理项目,都需要以高质量的标准要求自己。 提升员工的业务素质是保证质量的...
此外,还有心算与珠算的结合,让学生在心中模拟算盘的运作,提高计算速度和准确性。 教学中,可以采用实例来引导学生进行算盘操作,比如简单的加减法,逐步过渡到复杂的商业计算。教师应强调每一步操作的意义,让...
《我爸爸的小飞龙》这本书不仅是孩子们心中的奇幻冒险,也是成年读者内心的一次触动。它讲述了一个少年与父亲在荒岛求生的故事,其中充满了对勇气、智慧、坚持与创新的赞颂。正如这篇800字的读后感所展现出的那样,...
根据给定文件的信息,我们可以从中提炼出以下几个关键知识点: ### 一、基础知识积累与运用 #### 1. 拼音识字与词汇积累 - **消**:xiāo,消散、消失的意思。 - **恍**:huǎng,恍惚、仿佛的意思。 - **祭**:j...
在课堂上,我积极发言,主动与老师和同学们交流讨论,我深知这种主动参与不仅加深了我对专业知识的理解,也锻炼了我的表达能力和思维敏捷性。同时,我对待课后作业的态度也是严谨认真的,我总是按时提交,努力做到...
【标签】中的关键词包括"课件"、"教学"、"培训"、"教育"和"中小学",这些标签揭示了文件的内容可能涉及教学资源、教学方法、教育训练以及针对中小学阶段的教育实践。 在【部分内容】中,我们可以深入探讨以下几个...
这期间,我全身心地投入到计算机开发和xx管理工作中,不断学习、不断进步,让我在xx开发和xx管理这两个领域积累了丰富的知识和实践经验。 在xx开发方面,我深入理解了软件生命周期的各个环节,包括需求分析、设计、...
很多从事敏捷的项目经理心中可能都有个问号:“《项目管理知识体系指南》在敏捷中中到底扮演什么角色?”《项目管理知识体系指南》(以下称《PMBOK指南》是被广泛认可的、关于项目管理的方法和实践的知识来源。其最新...
这种对比鲜明的游戏体验,使得关节在身体运动中的重要性在孩子们的心中留下了深刻的印象。 在活动的后半部分,教师引导孩子们通过观察图片学习如何在日常游戏中保护关节。三张图片生动地描绘了幼儿在玩耍时可能遇到...
苏宁作为零售行业的领军企业,其数据中台的建设和实践为我们提供了很好的参考案例。 **8.1 苏宁数据中台的核心要素** - **数据采集**:通过多种渠道收集数据,包括线上线下的销售数据、用户行为数据等。 - **数据...
2. 学习方法:"最好的老师"指的是实践,"在心中画问号"意味着主动思考和提问是提高学习效果的有效方式。要培养独立思考的习惯,遇到问题积极寻求解答,不断探索和学习。 3. 教师角色:教师是知识的传播者,我们应该...
在自我评估与改进方面,我诚实地认识到自己工作中存在的一些不足,如管理不够细致、方式方法不够敏捷、学习主动性不强、性格急躁等。为了克服这些不足,我提出了一系列改进措施:首先是提升政治理论自学能力,通过...
起初,面对漫长的见习时间,我曾感到焦虑,但随着时间的流逝,我逐渐适应并享受在幼儿园的日子,直至最后一天,心中充满了对幼儿园的不舍。 见习期间,我有机会观察并理解了幼儿园的实际运作,尤其是在教学方式上的...
例如,35×2,学生可以直接在心中计算出结果70,而无需借助纸笔。这种能力的培养不仅能够提高学生的计算速度,还能锻炼他们的思维敏捷度。 其次,估算则是对未知乘积的大致范围进行判断的技巧。在实际生活中,我们...
综上所述,这份2017-2018学年度上学期的三年级科学教学计划,不仅仅是关于知识传授,它还着重于培养学生的探究能力和情感态度价值观,目的是为了在学生心中埋下科学的种子,培养他们成为具备创新精神和实践能力的...
XP软件工程与项目管理基础:XP软件工程与项目管理基础有四部分组成:价值、原则、活动和实践。XP螺旋模型优缺点原型法优缺点下列软件开发过程模型中(的4种价值观:需求分析新客户功能XP原型法缺点)。螺旋模型反馈2...