艾伟也谈项目管理,只有好代码的项目能成功吗?

  Simon Brown,集开发者、架构师及作家于一身,他认为成功的项目需要的不仅仅是好代码。在他的演讲《好代码是不够的》中,Brown讨论了项目成功所需的所有元素,从前期设计到操作文档。

  Brown认为好代码是一个好的开始,但要取得成功,人们需要知道要构建什么、要发布什么以及它可以运作起来。

  要知道构建什么,需要一套需求。收集完需求之后,要有一个“大局观”,软件架构代表了当前对该产品的认识。然后,大问题需要被分解成更小的解决方案,其中包含了组件、组件之间的交互以及用到的服务。随后,估计实现这个解决方案需要多少成本。据Brown说,所有这一切,从确定需求到做出估算,只要1-2天。这不是一个人的工作,应该是所有直接参与的人共同完成,这样才能群策群力。

  如果做得好,一个轻量级的软件架构能为项目引入结构——“什么是组件以及它们如何互相沟通”——与指导方针——“源自文档模式、模板和原则”,这能带来一致性——“以标准的方法来解决常见问题”——与清晰性——人们能知道自己的方向,因为他有“大局观”。作为一个反例,Brown提到一个项目,其中使用了三种持久化解决方案:Spring、EJB和Hibernate。这是因为没有人事先决定使用什么持久化框架。

  接下来的步骤是确定优先级。除非是一个小项目,否则不该试图一步到位构建并发布整个项目,而是应该确定什么是最重要的,首先完成这部分。这需要完善并挑战需求范围,决定实现需求的一个子集,它足以满足最初设想的愿景的一部分内容。

  其次是跟踪进度。跟踪进度有不同的方法,例如电子表格或看板。Brown指出,这些方法都是用来了解迭代进行到目前为止的进度完成情况的,它们并不跟踪已发布的软件。

  架构是否可以运作起来?如果作为结果的解决方案无法如预期那样运作,那一切都是徒劳的。Brown认为,对于一个可用的解决方案而言,它必须满足以下要求:

  • 它能满足架构需要:功能和非功能性需求、环境约束和所采用的原则
  • 它为代码提供了一个坚实的基础,人们可以在此之上进行构建
  • 它为解决解决方案中试图描述的初始业务问题提供了一个平台

  构建一个原型。无论架构有多伟大,代码看起来有多漂亮,没人真正知道系统是否能令人满意,是否可以扩展。原型正是人们所需要的。原型是对概念的一个验证,包含系统的垂直切片、主要需求和基础部分,刚好用于模拟实际运作,通过负载测试将整个系统至于压力之下。用于原型的代码后期可用于生产环境,也可丢弃。

  负载测试是这样实现的,“模拟典型使用场景中的多个用户,并且环境越接近生产越好”。原型和负载测试要在项目的早期阶段进行,用于验证架构。

  源码控制提供了:源代码备份、代码变更日志、恢复到不同版本的机制、经简化的并行开发方式,使用源码控制是构建解决方案中的重要一步。

  自动化测试也是必不可少的一块。刚加入的新代码会破坏什么东西吗?对项目某个部分的变更可能会对其他部分产生负面影响。为了限制变更可能造成的破坏,单元测试和集成测试是必须的,否则就要在每次变更后手动测试整个系统的功能。要做多少测试呢?Brown认为,100%的测试覆盖率是很难做到的,非常不切实际,他建议80%,覆盖代码最重要的部分。

  自动化构建。代码经过测试后,需要在目标机上进行构建和部署。但很多时候,系统在其他机器上无法进行构建,构建脚本需要保证该系统可在任意目标机上正常构建。

  Brown认为还有一个有用的步骤,即使用持续集成。持续集成服务器能自动从代码库中获取源代码、编译、测试、打包并安装,在此过程中出现任何错误它都会发出通知。这有助于确保代码的正确构建,及早发现问题。

  自动化测试和构建引入了一致性和可重复性。在多代码分支上进行并行开发时,自动化就更加有用了。

  提取配置信息。系统配置信息取决于环境,最好将它放在代码之外进行维护。

  应用程序的版本应该包含在某处:在元数据中、在诊断页面中、在日志文件中,这样人们才能知道自己正在看哪个版本的程序。

  最后就是操作文档。如果开发团队不是支持该软件的团队,那么有些操作文档是必须的,其中包含的信息涉及如何使用系统、如何监控系统、如何管理系统以及有问题时如何进行诊断。

  所有这些有助于创造一个成功产品的元素都包含在下图中了:

  查看英文原文:Is Good Code Enough for a Project to Be Successful?

时间: 2024-10-24 20:18:25

艾伟也谈项目管理,只有好代码的项目能成功吗?的相关文章

艾伟也谈项目管理,谁动了项目的时间?

项目进行到今天,我突然发现项目已经花费了快70%的时间,而离编码结束似乎还很遥远,面对着领导质问般的眼神和组员迷茫般的目光,我深深地吸了一口气,大脑开始了高速地运转,到底谁动了项目的时间? 项目情况 首先介绍一下项目的大概情况: 其实项目倒不是很复杂,一个处理业务流程的系统.接到项目的消息是七月底的时候,由于当时领导与客户谈妥之后,客户想在八月中旬就看到,所以当时就非常紧张.考虑到时间如此之紧,项目便匆匆开始.本来计划三个人的,但是考虑到时间太急,又加了三个人进来.在写SRS的过程中,客户那边传

艾伟也谈项目管理,假如我是一个项目总监/经理

就国内中小民营企业而言,项目总监/经理的角色最为尴尬.项目总监/经理不是一个行政上的title,所以没有行政.财务.人力上的权力:项目总监/经理也很少有项目提成或项目奖金:项目总监/经理更多的被视为因政治因素而临时授命的一个暂时性的英雄人物,一个能够带领一群初级工程师完成某项任务的高级技术工程师.简而言之,只有义务而缺乏权利. 在绝大多数中小民营企业中,抛开强烈的政治斗争不说,还缺乏完善的公司管理制度,缺乏正规的项目管理流程,缺乏足够的技术储备力量.所以身处民营企业这个漩涡中,需要考虑的不仅仅是

艾伟也谈项目管理,五大绝招 消除项目小组与用户的矛盾

BI项目实施过程中,会导致用户现有工作量的增加,会对用户现有工作进行重新分配,总之会影响用户的即得利益.在这种情况下,项目小组与用户之间矛盾的增加.虽然说BI系统主要是企业管理者在使用但是这个系统的基石基础数据,则是一线用户所提供的. 为此在BI项目过程中,如果项目小组与用户的矛盾比较多,必然会影响到BI系统的实施,因此,BI项目推进中很重要的一项工作,就是如何消除项目小组与用户的矛盾.笔者根据自己的经验,总结出来一下五个绝招.希望对大家有所帮助. 一.合理安排时间尽量减少对用户现有工作的影响

艾伟也谈项目管理,项目经理成长日记(4)——态度决定一切

超仔刚刚推门进来,屁股还没有碰到他的椅子上已经让人感觉到他欢喜轻飘的神色,我抬头望着他眼睛,神色中洋溢的满是欢快.我看着他那兴奋的样子,微微笑着问道:"签完了?结果还可以吗?" "还不错!" "能满意就可以,继续努力." "嗯." 我知道超仔刚刚和公司签了新的合同,在新合同里他的工资有了一定的提高,这些都是因为对于他去年的绩效考核成绩还不错应该得到的结果. 年底对于我来说,可真是多事之秋,因为我需要在年底前完成对我团队这些人的

艾伟也谈项目管理,ERP项目实施要未雨绸缪不要亡羊补牢

在ERP项目中,要做到在项目实施的未雨绸缪,不会出现亡羊补牢的情况就需要项目管理和实施人员在项目推进过程中队下面的阶段进行预测,把握好发展的趋势,掌握项目的主动权.下面就提出一些建议,供大家讨论.希望对大家有用. 一.要考虑每一个项目阶段普遍存在的问题 ERP项目可以根据项目进度,分为项目立项.需求调研.业务流程重组.模拟运行.并向运行.正式上线等几个阶段.其实不同的企业,虽然有各自的特性,但是也存在着一些普遍的问题.有经验的项目管理员,对各个阶段普遍存在的问题有深入的了解.此时他们就可以预先采

艾伟也谈项目管理,项目管理一些体会

项目管理需要的知识,是一个体系的知识,包括项目管理本身的知识体系,以及项目管理要应用到的领域所需要的知识体系,然后就是管理的技能,当时最重要的,是软技能,也就是人际关系技能. 管理的核心:人. 管理的四大要素: 1. 选择正确的人 2. 为他们分配正确的工作 3. 保持他们的积极性 4. 帮助团队凝聚起来并保持团队的凝聚力. 1. 选择正确的人 首先要学会看人.虽然我不是人力资源专家,但是我清楚一个软件项目的成功所需要的成员素质,主要就是沟通能力和责任心. 由于工作需要,我面试过一些人,有毕业生

艾伟也谈项目管理,多任务让你走得更慢

现代商务依靠多任务来完成工作.评价员工也基于的他们多任务能力.IT业人员会被例行指派到多个项目中去.我们是经常在这样做吗?多任务起作用吗?多任务的真正影响是什么?有别的选择吗? 这里老词重提一下"单任务",它代表了我们在多任务之前所习惯的软件工作方式.在这里的"多任务",指的是"工作在很多项目上".现代商务把它称作"多任务",认为它是一种更有效提高工作输出的策略.其实,不止工作,我们在日常生活中也会小规模地多任务.这两者在做法

艾伟也谈项目管理,关于项目管理的一点体会

这段时间,一直在负责一个项目的管理与开发.在时间短.任务紧,而团队人员又大部分是没有经验的菜鸟的恶劣情况下,我带领接近40人的团队,终于在客户规定的时间范围内如期交付产品.这其中,经历了需求变更.人员变动(因为其它任务,先后有近10人离开团队)等诸多问题,项目仍然取得成功了,不能不说有几分侥幸,但此外也有一些经验与教训可以与大家分享. 一.项目开发方面 需求 项目应以需求为核心.一个项目是否能够成功,对需求的准确把握在成功因素中要占上60%的比例.不管系统的架构设计.团队管理有多么的成功,如果需

艾伟也谈项目管理,代码背后的点滴

有段时间没有更新技术blog了,现在有空每天都写写围脖,记录生活和工作的点滴,但是有时候发现有些技术的想法和工作总结没有像过去那么完整的写很大一篇,但是也有零零散散的不少点滴,因此想着随意的写这么一个连续的片段分享. 为什么叫做代码背后的点滴呢,其实在现在互联网应用来说,其实用什么语言,用什么平台有些场景有影响,但已经不是绝对重要的因素的,其实代码被后的设计思想才是最重要的.而用最熟悉的方式去表现最自然的想法,那才能做到游刃有余,就好比我向华黎同学申请这次内部奖励的奖品希望是手写笔,因为不论什么