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

简介:   Simon Brown,集开发者、架构师及作家于一身,他认为成功的项目需要的不仅仅是好代码。在他的演讲《好代码是不够的》中,Brown讨论了项目成功所需的所有元素,从前期设计到操作文档。  Brown认为好代码是一个好的开始,但要取得成功,人们需要知道要构建什么、要发布什么以及它可以运作起来。

  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?

目录
相关文章
|
2月前
|
敏捷开发 监控 数据可视化
项目经理必看:竞争性项目怎么管理?项目管理知识领域有哪些
在现代企业中,项目管理不仅是技能,更是战略。特别是在竞争性项目中,高效管理时间、资源和团队成为企业成功的关键。本文介绍了竞争性项目的特点、管理步骤及十大知识领域,并推荐了板栗看板企业版作为高效的管理工具。
30 0
|
监控 前端开发 项目管理
8个常用的项目管理工具和方法,干货收藏!
分享一些公认好用的项目管理工具和方法,提升项目成功率
8个常用的项目管理工具和方法,干货收藏!
|
监控 项目管理
一个完整的项目管理流程包括什么?
项目管理流程是指在实施项目过程中,按照一定的规范和步骤进行项目管理的过程。项目管理流程包括项目启动、规划、执行、监控和收尾五个阶段
495 0
一个完整的项目管理流程包括什么?
|
测试技术 项目管理
艾伟也谈项目管理,项目做完了,总结一下
  在连续封闭N个月以及再后来的N个月的加班后,项目终于以延期N个月的结果结束了。不管曾经发生过什么,不管项目是否延期,重要的是项目结束了,所有的项目成员都可以松一口气了。曾经和同事开玩笑说:在我经过过的失败项目中多了一个项目,以后就能避免同样类型的失败了。
1027 0
|
测试技术 项目管理
艾伟也谈项目管理,大项目的思考
  引言:进入现在这个我们内部号称“豪门”的项目已经两个多月了。现在回想起进入项目前一位前辈的话:“大项目有大项目的问题,但大项目也有很多东西可学“,自己此时深表赞同。两个月的时间,自己从刚来前两周的观察学习,到现在的基本融入,在这个过程中自己有了很多的想法和思考。
955 0
|
测试技术 项目管理
艾伟也谈项目管理,对项目管理的几点认识
自2007年参加工作以来,参与的项目也有好几个了,但都是以项目成员的角色参与,从来没有以项目经理的角色参与项目。中国有句古话叫“旁观者清”,同一个问题站的角度不同,可能会形成不同的结论。下面我就以一个普通项目成员的角度谈一下对项目管理的几个看法,希望大家给予指正。
949 0
|
程序员 项目管理
艾伟也谈项目管理,较大型项目的产品工作心得
  最近做的一个项目从需求分析到上线绵延了四个月之久,这也是目前接手过功能点最繁复,产品线对接最多的一个项目。从中得到的一些关于设计较大型产品的心得,拿出来跟大家分享。   立项前   1、统一元素设计需考虑周全   也许是初创团队的缘故,我不得不感叹团队对产品经理要求之严格之缜密,项目全程只有一个人负责,所以大到产品线对接,小到一句提示的位置和展示形式都需要一一推敲。
1300 0