201571030141 学习《构建之法》后的五个疑惑

        该学期通过软件工程课程有幸了解到邹欣老师以及他的著作《构建之法》 。首先我感谢邹欣老师在教育方面的付出,就单单在书的开始,“给任课老师和助教的建议”中,我已经感受到未来这一学期我将获得巨大的财富,这将可能是确定我将来走上程序员这条道路的一门课程。

        尽管已有两年多的编程学习,但我确实对“程序=数据结构+算法”这句名言没有更深的思考与理解,基于之前的学习,仅仅只认为算法可以让程序清晰简化,数据结构可以使程序的数据操作方便,也肤浅的认为,无论用怎样的方式,可以成功的做出web或者app就可大功告成,不再去思考程序的健壮性,甚至可笑的认为用户该为程序让步,而不是程序去尽可能满足用户得到更好的用户体验,有时也羡慕余佳文,随便搞一个超级课程表就可大赚一笔,自己也做着不切实际的白日梦。通过阅读《构建之法》,我大致明白了一个工程是该如何去完成,但如何做出成功的工程仍有许多困惑,因此我拟定了5个准备从软件工程课程的学习中找到答案的问题,如下:

  问题1:如何深刻理解从程序-->软件-->软件企业?

程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。

程序=数据结构+算法      软件=程序+软件工程       软件企业=软件+商业模式 

  通过学习,我仍疑惑怎样的软件才可以运用于生活中,一个成功的软件(可盈利的软件)必须具备什么?

  问题2:软件工程师如何成长?

1. 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力) 

2. 积累问题领域的知识和经验(例如:对医疗或金融行业的了解) 

3. 对通用的软件设计思想和软件工程思想的理解 

4. 提升职业技能(区别于技术技能) 

5. 实际成果 

  我想知道对于一个软件工程师来说,最重要的是什么?仅仅对技术的追求就可以做出成功的软件吗?除了技术方面,软件工程师更需要具备什么能力呢?如何才能为自己量身打造软件工程师的成长之路?

  问题3:如何才能快速有效的做好需求分析?

需求分析方法一
  1.获取和引导需求

  2. 分析和定义需求(Analysis & Specification)

  3. 验证需求(Validation)

  4. 在软件产品的生命周期中管理需求(Management)

需求分析方法二
  1. 对产品功能性的需求

  2. 对产品开发过程的需求

  3. 非功能性需求:这也叫“服务质量需求”(Quality of Service Requirement)

  4. 综合需求

  我的疑惑:在需求分析时如何才能凸显我们的核心竞争力?如何才能精准的掌握用户的“痛点“痒点”?

  问题4:设计软件时,怎样的用户体验才是合格的呢?

1. 尽快提供可感触的反馈系统状态 

2. 系统界面符合用户的现实惯例(Familiarity,Avoid Surprise) 

3. 用户有控制权 

4. 一致性和标准化 

5. 适合各种类型的用户 

6. 帮助用户识别、诊断并修复错误 

7. 有必要的提示和帮助文档 

  我的疑惑:在追求用户体验的时候,会不会影响开发效率或者软件质量呢,如若有影响,怎样可以保证软件质量和开发效率呢?

  问题5:怎样的团队模式是好的团队模式?在一个团队中,如何协调各个模块的运营?

MSF团队模型定义了小组同级成员的一些角色和职责,如图所示

这里写图片描述

在MSF团队模型中,任何技术项目都必须达到特定的关键质量目标,才能够被认为是成功的项目。任何一个角色无法实现其目标,都将危及整个项目。因此,每个角色都被认为是同等重要的,重要的决定都要共同作出。相关的目标和角色如上图所示。

一个项目要达到的目标很多,MSF团队模型让不同的角色去实现这些目标。在一个项目结束的时候,每个角色都问自己这样的问题——我是否达到了我的质量目标?

最后,比如测试团队(角色:测试)要保证“我发现的所有问题都得到解决”,那么测试团队就会做一下两件事:

  • 发现产品的问题
  • 保证这些问题都得到处理

要注意的是,保证这些问题都得到“处理”和得到“解决”是不一样的,有些问题目前不能得到完美的解决,但是可以由让用户满意的处理方案,项目团队不能回避这些问题

  我的疑惑:如何权衡与他人工作交往?如若有分歧如何处理?作为PM怎样分工、安排才能使团队的效率最大化? 

 

  在这门课程的奔跑道路上,我已经做好十足的准备,越挫越勇的信念和坚持不懈的努力将是我对着门课程的态度!


 

 

原文地址:https://www.cnblogs.com/zhyqcc/p/8552111.html