艾伟也谈项目管理,大项目的思考

  引言:进入现在这个我们内部号称“豪门”的项目已经两个多月了。现在回想起进入项目前一位前辈的话:“大项目有大项目的问题,但大项目也有很多东西可学“,自己此时深表赞同。两个月的时间,自己从刚来前两周的观察学习,到现在的基本融入,在这个过程中自己有了很多的想法和思考。

  为什么测试这么难写?

  TDD的开发实践保证了代码的可测试性,那么当TDD的T变的非常难写的时候,是不是现有的代码可测试性已然变的非常差呢?其中一些非常典型的场景就是:

  • test的setup太难,而造成这个的一个主要原因就是贫血的model和万能的service。因为model没有行为,所以很多时候可以通过测试model来完成的测试,却不得不通过测service来完成,而万能的service做的事情又太多,需要依赖的东西也太多,而这个时候你本来一个简单的测试就为了setup这个service的依赖,而变成一个巨型的测试。
  • 你总有做behavior verification的冲动,而behavior verification本身就是邪恶的。记得《xUnit test pattens》这本书说到,”任何需要白盒测试的时候,往往都是代码设计的问题“。
  • Assert太多了,一个简单的测试却要有一堆的assert语句。问题很简单,被测试的对象承担了太多的职责。
  • 脆弱的测试,这里我看到了有两个原因:第一,共享的fixture;第二,想当然的assert,比如你只是想assert这个collection有没有你要的那个instance,因为你想当然的认为此时collection里只有一个instance,造成后人对于这个collection加入另一个不同instance依然会break你的测试。

  Kent Beck说过,当你的测试出现问题,退后一步往往就是一个设计问题。

  项目初期设计framework好吗?

  很多人开发人员迷恋framework,迷恋framework设计的优雅以及对于开发的便利。我曾经也是其中一员,但是现在我站在了这个观点的对立面。

  首先,项目初期的时候framework的设计在大部分都是猜测,刚开始的时候这些猜测大部分都很准,因为这个时候距离是framework的设计者可以看到了,这就如同你站在原地,你能看到10米外的东西。随着项目时间的增长,这个距离也在增长,在加上中间需求的一些变更,就如同一个小弯,这时候的位置已经不是framework的设计者所能看到的距离了。这个时候framework对于开发限制开始突出,而开发人员碍于修改framework成本太高,很多时候被framework所牵制。既然我们只能看到10米外的东西,那么我们为什么要做100米外的设计呢?

  其次,framework的设计思想也会随着项目人员的进进出出,项目进度的压力,大家都没有实践仔细的去看framework。framwork的设计思想变的不再清晰,大家开始按照自己的对于framework的理解来写代码,后来者更不理解framework,会照那些前面未必正确的理解的代码来书写。

  团队!团队!

  一个团队是不仅是在维护一份源代码,更重要的是维护这个项目所承载的知识。而这些知识不应该只记在某些关键人物的脑中,应该记在所有团队成员的脑中,更不应该只记录在文档之中。而这知识包括:

  1. 架构设计的知识:架构设计的知识只有进入所有开发人员的脑中,才能得到正确的实现。因此架构设计不应该只从技术角度考虑,也应该从团队知识传递的角度考虑。一个100的设计,而团队成员只能理解30分,那你觉的最后的软件是多少分呢?
  2. 所谓的局部知识:很多时候,一些开发人员觉得我做的东西只有我一个人在做(比如build脚本),所以我可以选我熟悉的东西就好。而这种所谓局部知识的想法非常不可取,因为当你有这个想法的时候就意味着你变成这个项目的瓶颈。
  3. 固定角色:在团队中固定角色就意味着划定了各个角色的边界,而每个角色对于自己角色外的东西已然不是外面的世界很精彩。这个时候很多时候它做得决定都是基于自己的角色,而不是整个团队的角度。
时间: 2024-09-20 14:59:33

艾伟也谈项目管理,大项目的思考的相关文章

艾伟也谈项目管理,我也发软件开发团队的思考(侧重点是人员)

//上个月给我们老板的mail.洋洋洒洒6000多字. //为了方便公开,改了一下.以致可能有些地方前言不搭后语. //不管他同意不同意,先在我们组实行了再说. //请多大家多提提意见,日后看有没有机会找老板当面交流 经历的几个项目,项目的进度老是不尽如人意.更重要的是市场的开拓因为这些项目拖住了后退而无所作为. 我们现有的情况是:项目期限和最开始的保守估计都相去甚远,最后提交给客户的产品60%都是最后一个多月开发出来的,还有20%左右是以前就固有的固定模块.这几个项目我参与了编码,我对整个系统

艾伟也谈项目管理,我是如何带领团队开发项目的

最近有不少朋友写信问我一些关于团队开发的问题,由于这段时间有些忙,没有回复.今天写一篇这方面的文章向大家介绍一下我是如何带领团队开发工作流项目的 关于团队建设,项目管理的文章网上已经有很多了,在这里我就不谈这些理论了,直接给大家展示一个我在 项目开发方,后台服务开发方式,前台UI开发方式,后台服务与前台UI对接方式,代码文档,页面的开发文档,源码管理,单元测试,以及单元测试文档,实现思路设计文档,数据库文档,数据库设计规范,编码规范,操做数据的方法命名规则 方面的一些片断,这是一个为期6个月的工

艾伟也谈项目管理,你适合做一个项目经理吗 - 关于项目经理的终极思考

项目经理,从以前一个令人羡慕的职位到现在的烂街,各行各业,各色人等,我们都可以看到项目经理的身影.盖房子搞建筑的,总包分包,大大小小的项目经理无数:新房装修,也是项目经理带着几个小弟出来混的,软件行业里,项目经理就更是一抓一大把.当然,相对于项目经理,下面具体干活的小弟更是多得数不清.因此,更多做技术的工程师们,职位晋升的首选,就是项目经理. 为什么?其实回答都差不多:搞技术搞不了一辈子,年纪大了就干不动了:项目经理毕竟职位高一些,接触面大一些:项目经理可以做管理,当老大:薪水更多一些等等.这些

艾伟也谈项目管理,编程习惯

文/Alexey Radul 译/程显峰 原文地址:http://web.mit.edu/~axch/www/programming_habits.html 近年来,我对编程艺术有很多体会.过后,我发现有些体会是错的:有些体会我遗忘了但又重新感受到:而另外有些则是必然会发现的.我还完善了一套项目管理的好习惯,这些习惯包括我自己的,或者小组的,抑或是更大的,公司内部的.一方面,这些习惯对软件的成功开发是至关重要的(太小或者纯粹巧合的不算),另一方面,这些习惯也不是什么高深莫测的东西,较小的篇幅就可

艾伟也谈项目管理,Richard Durnall谈系统管理和从外向内的组织结构

InfoQ中文站:能给我们介绍一下"系统管理理论"(System Management Theory)么?能不能跟我们分享一下您在实际应用中的经验? Richard Durnall:系统管理理论是过去五十年里出现并逐步发展而来的.它与传统的那种基于管理和控制方式的科学管理理论有很大的不同.首先让我们回顾一下管理科学的历史来了解系统管理理论. 在19世纪工业革命之前,商业规模通常不大,从业人数十分有限.19世纪30年代的技术革命中出现了大规模的工业企业.与传统的村镇工业不同,这些企业开始

艾伟也谈项目管理,个人管理:写书之前应该回答的几个问题

我在06年和一个同事写过一本Delphi入门的示例书籍Delphi数据库通用模块及典型系统开发,当时体会到了写书不像想象中的简单,基本上业余时间都没了,所以我之后就不想出书了,其中更重要的一个原因是,我还没有找到一本真正想与大家分享并且自己能写出来的书籍. 博客是个好东东,只要你愿意与人分享交流,你的行为就可以赢得大家的认可,如果你的观点或者文章写的又好,那么就会有更多形式与大家分享,例如最近我们可以看到的很多人都由于blog而出书了.同样,我这两年对博客的投入也赢得了一些人的信任,也收到过好几

艾伟也谈项目管理,对项目管理的几点认识

自2007年参加工作以来,参与的项目也有好几个了,但都是以项目成员的角色参与,从来没有以项目经理的角色参与项目.中国有句古话叫"旁观者清",同一个问题站的角度不同,可能会形成不同的结论.下面我就以一个普通项目成员的角度谈一下对项目管理的几个看法,希望大家给予指正. 1. 团队成员选择 人员选择要谨慎,要尽量选择合适的人员,在选择团队成员时要重点考虑其团队合作能力.编码可读性.能力和项目的匹配度等因素. 2. 项目远景的确定 项目初期项目经理需要和高层以及客户协商,定下项目的远景目标(即

艾伟也谈项目管理,游戏开发经验:浅谈游戏

首先,以下所有内容仅仅是个人通过资料分析等等得出的一些浅薄观点,里面很有可能与业内人士的分析相差甚大或者是分析不到位不全面,但是我尚没有进入游戏业,仅仅是通过零星的网络资料知其一二及个人游戏经历作出分析,所以不要拿这篇文章与专业人士相比.写这篇文章只是想发表一点自己的看法.     当一个策划在制订一款游戏时首先想到的问题是什么?我想,绝大多数策划第一个问题就是需求------玩家的需求.所以在策划们常常要分析各种情报然后讨论设计方向,这是一个必然的过程,不去调查玩家的需求,市场的需求盲目开发出

艾伟也谈项目管理,如何管理“人”

我们常说工作中应该"对事不对人",但事都是人做的,不同的人做相同的事效果可能相去甚远,再好的业务如果用错了人也会全盘皆输.正所谓"事在人为"嘛,识人.用人.聚人是一个团队管理者获得成功的基础. 先说怎么认识人   人格矩阵法.即所谓的Topk技术,Topk就是由:tiger.owl.peacock 与 koala 4个英文单词的第一个字母组成,即把人的人格类型总结为老虎.猫头鹰.孔雀与考拉这4种动物的行为智慧: 老虎-此类人表现为:做事结果导向明显(不在乎过程),野