人月神话阅读笔记03
由于我们最近一直在团队开发微信小程序,在这本书中我关心的也是如何做团队项目。书中主要提到在项目管理方面可以看到项目估算,组织结构和人员角色安排,团队建设和沟通,历史数据积累和建模,软件开发方法论,风险和问题管理等相关的内容;在软件工程方面可以看到架构设计保证概念完整性,整体和部分,空间技能和程序结构的关系,产品集成的方法和消除缺陷的设计思路;在支持过程上我们可以看到文档和流程的建设,软件开发工具对软件开发过程的支持和效率的提升以及工具的选择等相关内容,回过来再看,发现书里面仍然大部分内容
涉及到了团队,人和沟通。对于大型的软件工程项目仍然强调了人的重要性,在开篇就在讲开发人员的职业乐趣,后面又通过巴比伦塔讲沟通的重要性,在外科手术队伍中讲团队的组建和分工。这些都涉及到了团队中的人和交互,只有一个有了积极心态和热情的沟通团队,才可能成就一个伟大的团队。从最后的没有银弹,再次肯定了开发工作是一种高智力的脑力工作。
开发一个软件,我们要有合理的时间进度,开发人员要少而精,概念完整性必须考虑在内,要尽量做到尽早交流和持续沟通。同时,文档形成了关键的枢纽,每个项目管理的工作都围绕着它们运转,它们是经理们的主要个人工具。对于计算机硬件开发项目,关键文档是目标、手册、进度、预算、组织机构图、空间分配、以及机器本身的报价、预测和价格;对于大学科系,关键文档类似:目标、课程描述、学位要求、研究报告、课程表和课程的安排、预算、教室分配、教师和研究生助手的分配;对于软件项目,要求是相同的:目标、用户手册、内部文档、进度、预算、组织机构图和工作空间分配。即使是一个小型项目,我们都会要求书写相关文档,对每个关键文档的维护提供了状态监督和预警机制并且本身就可以作为检查列表或者数据库。良好的工作手册和组织架构可以开发出更加符合用户的需求。手册、或者书面规格说明,是一个非常必要的工具,尽管光有文档是不够的。手册是产品的外部规格说明,它描述和规定了用户所见的每一个细节;同样的,它也是结构师主要的工作产物。
一个软件的好坏不是说是由一个程序员决定的,往往一个很小的功能,其实也需要开发人员的架构设计方面的完善,对其它模块的影响及扩展,以及代码编写工作。一个小小的bug,也许就需要好几个部门的分工协作。原著中说,软件系统也是人类创造的错综复杂的事物。所以只有在一个团队的沟通了解,通力协作和努力之下,才能做出更加完善的软件作品!
在讨论我们的微信小程序时,我们就缺少一个类似于软件经理这样的任务在小组中,我们都是想到什么说什么,完全不考虑是否可行,需要多少时间等。在这本书中,我知道了展开项目时,要进行需求分析,建模设计,文档整理,Bug修复,时间估算等,我们有一些用到了,但更多的是不规范,所以在下次组队时,不能仅分为组长和组员,需要具体到软件需求分析师,架构师等。