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

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

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

  为什么测试这么难写?

  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. 固定角色:在团队中固定角色就意味着划定了各个角色的边界,而每个角色对于自己角色外的东西已然不是外面的世界很精彩。这个时候很多时候它做得决定都是基于自己的角色,而不是整个团队的角度。
目录
相关文章
|
测试技术 项目管理
艾伟也谈项目管理,项目做完了,总结一下
  在连续封闭N个月以及再后来的N个月的加班后,项目终于以延期N个月的结果结束了。不管曾经发生过什么,不管项目是否延期,重要的是项目结束了,所有的项目成员都可以松一口气了。曾经和同事开玩笑说:在我经过过的失败项目中多了一个项目,以后就能避免同样类型的失败了。
988 0
|
测试技术 项目管理
艾伟也谈项目管理,只有好代码的项目能成功吗?
  Simon Brown,集开发者、架构师及作家于一身,他认为成功的项目需要的不仅仅是好代码。在他的演讲《好代码是不够的》中,Brown讨论了项目成功所需的所有元素,从前期设计到操作文档。   Brown认为好代码是一个好的开始,但要取得成功,人们需要知道要构建什么、要发布什么以及它可以运作起来。
922 0
|
程序员 项目管理
艾伟也谈项目管理,较大型项目的产品工作心得
  最近做的一个项目从需求分析到上线绵延了四个月之久,这也是目前接手过功能点最繁复,产品线对接最多的一个项目。从中得到的一些关于设计较大型产品的心得,拿出来跟大家分享。   立项前   1、统一元素设计需考虑周全   也许是初创团队的缘故,我不得不感叹团队对产品经理要求之严格之缜密,项目全程只有一个人负责,所以大到产品线对接,小到一句提示的位置和展示形式都需要一一推敲。
1253 0
|
测试技术 项目管理
艾伟也谈项目管理,关于项目管理的一点体会
  这段时间,一直在负责一个项目的管理与开发。在时间短、任务紧,而团队人员又大部分是没有经验的菜鸟的恶劣情况下,我带领接近40人的团队,终于在客户规定的时间范围内如期交付产品。这其中,经历了需求变更、人员变动(因为其它任务,先后有近10人离开团队)等诸多问题,项目仍然取得成功了,不能不说有几分侥幸,但此外也有一些经验与教训可以与大家分享。
939 0
|
项目管理
艾伟也谈项目管理,项目管理有感之需求调研
  一个项目中需求调研的充分与否是项目日后成败的关键要素之一,这一点我想没有哪位项目经理不认同吧?不过咱说的需求调研可不只是拿张纸记记客户说什么就完了,调研顾名思义就是调查和研究客户的想法,我感觉应从以下几个步骤入手:   1、客户想要什么?   2、要这干什么?   3、为什么这么想?   4、会不会有别的想法?   这里也说一个最最最最基本的,只谈项目别谈钱,我们可以说,价钱嘛需要我们回去详细的分析过您的需求后再给您提供一个整体的解决方案,您放心价钱一 定合理,不会超出您的预算(真超了再说)。
1001 0
|
项目管理 开发者
艾伟也谈项目管理,项目的故事
  这是关于一个项目的故事,与其它项目相比,既不非常复杂,也不是很简单: 一个应用程序与数据库以及其它两个系统通信。这在技术和架构角度都是主流,而在管理角度则是标准情况: 所有工作都应该在昨天完成,但还有很多没有完成的。
1192 0
|
测试技术 项目管理
艾伟也谈项目管理,对项目管理的几点认识
自2007年参加工作以来,参与的项目也有好几个了,但都是以项目成员的角色参与,从来没有以项目经理的角色参与项目。中国有句古话叫“旁观者清”,同一个问题站的角度不同,可能会形成不同的结论。下面我就以一个普通项目成员的角度谈一下对项目管理的几个看法,希望大家给予指正。
922 0
|
项目管理
艾伟也谈项目管理,项目经理要向唐骏学习
  中国人性喜围观,然而在中国,大部分新闻并没有围观的价值,这未免让人失望。但是,只要是加上“唐骏”这个名字,新闻总是能让我们围观者觉得值,觉得得到某种满足,从这一点上来讲,唐骏牛!真的很牛!!   这一次,唐骏给大家带来的是“假文凭事件”,整个事件的发展,真是一波未平一波又起,可谓波澜壮阔,最后发展成为事关“诚信”的大事件。
1007 0
|
项目管理
艾伟也谈项目管理,技术管理中常见的几个问题
  前几天跟朋友聊天时,朋友说他刚刚从一家知名软件公司面试出来,朋友去面试的是一家公司的技术管理岗位,所以在面试的时候被问及的问题也偏重于技术管理方面的问题,在与朋友的聊天中将这几个问题归纳了一下,大致归为如下几个问题。
973 0
|
项目管理
艾伟也谈项目管理,公司的中场
  一个公司宛如一只球队,成败不是一个人的事情,是一整队的事情。那么球队在某一场具体比赛里面最重要的角色是哪一个?不是教练,如果说整个赛季如何可能是教练的功劳。如果是某一场比赛,最重要的角色是中场。对于公司也有这么一个中场的角色,不过不是老总,而是具体的那个产品经理。
1023 0