构建之法9、10、11章
第九章
学习了第九章之后,了解到了在一个项目中项目经理的重要性。生活中,无论什么团队工作,都需要一个领队,来掌控团队项目的发展,以及各个成员工作的分配。PM指Product Manager、Project Manager、Program Manager。这个章节主要讲了Project Manager即项目经理,PM要凭自己的能力,把用户的需求展现成其他成员能够理解和执行的语言。项目经理需要正确地协调团队内部外部,调配各部门资源和时间,有效进行风险管理,保证一个项目顺利按计划结项。
在做软件时,销售人员需要将客户需求告诉开发人员,但是销售人员不能直接把那些语言翻译成程序员能懂的规格说明书,所以需要专门的人来翻译,所以就出现了项目经理这个头衔。负责一个功能的开发和测试的人员和相关PM合作,再由PM和别的小组或客户打交道,大大降低了交流的成本,也大大的加快了效率。
虽然PM很重要,但是PM的盛行也是有缺点的。如果做一个PM没有强烈的责任感和强大的推动力,只是满足于不断讨论得到团队共识,那么团队的项目很有可能不能跟上市场的变化,一直中规中矩,不能吸引用户。作为PM,还要进行风险管理,对技术方面,预算方面以及法律法规方面进行风险分析。
作为PM,需要很多能力:1.观察、理解和快速学习能力2.分析管理能力3.一定的专业能力4.自省的能力。在一个团队中,PM至关重要,作为一个PM,要充分做好自己的分内工作,做好带队工作。
第十章
做一个产品,首先考虑的就是用户需求,不同的用户有不同的需求,但是一个产品不可能完全满足所有用户的需求,哪怕把产品的扩展性做的很好,产品说不定就会出现安全问题。所以我们在做产品时,不是一昧的满足客户需求,而是要知道客户语言或者动机后的真正的需求,针对不同典型用户的需求做出产品。
一个典型用户往往描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境等等。当我们定义了最初的典型用户之后,需要真正去理解用户,了解他们的真实想法,不断细化典型用户。
当我们完善了典型用户的定义之后,就需要创立场景,深入理解用户需求。用户和系统有无数种可能的交互情况,写场景时要有针对性。场景需要设计场景入口,来描述场景如何开始,并且描述用户在这个场景中所处的内部和外部环境,最后给场景划分优先级,按优先级排序写场景。
用例也是很常用的需求分析工具。用例有五个因素:标题、角色、主要成功场景、步骤、扩展场景。使用用例,可以让团队成员更快找到用户的需求和软件的功能点,这些功能点及需求都应该有具体的行动描述。
做软件也需要写规格说明书,分为:软件功能说明书和软件技术说明书。功能说明书要定义好相关的概念,规范好一些假设,避免一些误解,界定一些边界条件,描述主流的用户/软件交互步骤,说明功能的副作用,还有对服务质量的说明。技术说明书用于描述开发者如何实现某一功能,或者相互联系的一组功能。功能驱动的设计也非常重要,把用户需求变成团队成员可以直接操作的开发工作。
第十一章
这一章讲的是软件设计与实现,写软件就是要解决用户的需求,所以软件设计就是要充分了解到用户需求,并且尽量去实现。分析和设计有很多方法:以文字为主的文档,用图形为主构造的模型,用数学语言的描述,用类自然语言+代码构造的描述,源代码加注释也能描述。对于软件的分析,需要给事物事建造出一个模型,来描述事物、各个事物间的联系。可用思维导图、实体关系图、表达控制流、统一的表达方式。软件设计不是只有一种方法,有形式化的方法、文学化编程,很多软件需求可以抽象为对符号的运算和变换。写代码时,我们还需要写一些注释,但是修改代码时,不能及时修改注释,也会很麻烦。
写软件时,往往会有很多问题,然后就需要不断地查找参阅,以及和同事沟通,这样的话开发软件工作时间有时候会超过预期。