- 对于软件工程第一次作业的补充
- 1.对于作业“在一周之内快速看完《构建之法》,列出你不懂的5-10个问题”。
- 作业要求有:
- a.在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
- b.列出一些事例或资料,支持你的提问
- c.说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
- 例如:我看了这一段文字 (引用文字),有这个问题 (提出问题);我查了资料,有这些说法(引用说法);根据我的实践,我得到这些经验(描述自己的经验);但是我还是不太懂,我的困惑是(说明困惑);或者我反对作者的观点(提出作者的观点,自己的观点,以及理由)。
- 问题一:
- 选哪一种医生?(教材55页练习与讨论第一题)
- 我有看到这样一句话:“很多人都是边看Asp.NET的书,边开发Asp.NET项目,这相当于一边看医术一边动手......”,但是我觉得去做项目和给病人动手术其实是不一样的,例子我认为不太妥当。现在很多人刚着手做项目都是通过边学边做来积累经验,实践才是检验真理的唯一标准,但是医生给病人开刀动手术却需要更加谨慎,不能边学边做,如果是我选医生,我会选第三类医生,‘已经处理过很多类似的病例,可以一边给你开刀,一边和护士聊天说昨天晚上的《非诚勿扰》......’。我认为做项目更像是一种冒险旅游,掌握最基本的生存技能后就出发。它不会容忍很多三思而后行,因为永远不知道会遇见什么,更多的是现学现做,随机应变。就像我们在大学本科阶段做项目,都是现学现卖,在实践中检验真理。因为我们在本科阶段其实遇到的项目是很少的,而且做项目是需要的东西感觉我们很多根本没有学习过。所以在做项目时,遇到不会的语法,找到的BUG,都是马上找资料去学习,我认为边学边做才是做好的学习方式。
- 问题二:
- 初级软件工程师的成长有几个方面:积累知识,提升技术技能,掌握一门语言......(46页初级软件工程师如何成长?)如何才算是掌握一门语言?
- 我查阅资料得知:掌握并没有固定的,专门的定义。是随便知道些C、C++,JAVA或C#哪一门语言,然后尝试编写实用的小程序,最后想要再提高就接项目,或则帮老师做项目的部分东西叫掌握,还是能自己写一个不错的框架,能解决开发中遇到的大部分问题,能熟练地修改他人写的框架或者系统,能处理好大访问量与高并发的时候的程度需求,了解语言本身的优势与不足,能发挥好它的优势,同时避开它的不足这才叫掌握?我们需要达到一个怎样的水平才能说自己是学计算机的?我们已经大二了,基础能力还不是很好,但是已经可以自己做项目。那么我现在还需要去重点学习那些语言的基本知识,掌握更多的技能吗?还是要把重心放在做项目上,去了解更多的新知识?
- 问题三:
- 获取用户需求的时候会用到很多方法,书146页列出来很多获取用户需求的方法,但是我们本科生在做项目时并不会有完整的商业模式,也不会去找很多软件产品的利益相关者,所以这些方法对我们来说要么很片面,要么有缺点,要么以我们的知识或者能力很难办到,我们只是会去问业主或者客户对这款软件有什么要求,需要什么样的功能,要达到一个什么样的目的。是不是我们这样做出来的软件质量会出现问题呢,会达不到用户的需求呢?
- 问题四:
- 书213页图形建模和分析方法中列出来很多建模方法和数据分析方法,老师页在之前详细讲过了这一部分,但是我听课的时候想到应该可以通过这些图来写代码,写类,但是无奈老师上课的时候并没有细说怎样通过这些图来写出代码。还有为什么书上有过一句话:“仅在必要时,才使用类。”(书67页:如何使用C++中的类),难道说如此高大上的‘类’不能随便使用吗?但是如果使用类会方便的话也不能使用吗?
- 问题五:
- 衡量软件工程的质量,书301页列出了14条量化指标。但是我们在做项目的时候基本就只会有一个指标,就是客户是否满意,不会有非常完备的文档,也不会计算修复bug的时间,测试用例覆盖率等,这样就不算质量好的软件吗?