个人作业2

提出问题

快速通读教材《构建之法》,并参照提问模板,提出5个问题。
如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。 还有这些要点:

  • 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
  • 列出一些事例或资料,支持你的提问。
  • 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?

一个模板可以是这样:

我看了这一段文字 (引用文字),有这个问题(提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。

或者这样:

我反对作者的观点(提出作者的观点,自己的观点,以及理由)。

大学生应该能写出自己的思考, 而不是摘抄书本内容。

提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。

【附加题】:请将问题提交至豆瓣:https://book.douban.com/subject/27069503/, 并在博客中给出链接
在豆瓣页面的最下方 “读书笔记” 那里发言, 《构建之法》的作者会亲自答复问题

问题一:

在第一章概论中有提到

软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计。

    在第一节软件工程课上,老师就讲了一下这个学期的教学安排,其中就有提到在做团队项目时,有个环节就是要进行成员交换。对于这个我不是很能理解,当你在这个团队已经一段时间,足够熟悉这个项目的需求以及程序的设计,并且跟其他成员也有一定的配合度,突然交换成员,如果是能力较强的成员那倒是影响不大,但是能力稍差的,则又需要一定时间去磨合,去熟悉程序的设计。这不是多费了一份功夫吗?

问题二:

在第四章4.3节中我看到了这段话,

当程序的主要功能实现后,一些程序员会乐观地估计只需要另外20%的时间,给代码加一些错误处理就大功告成了,但是这20%的工作往往需要全部项目80%的时间。
错误处理 1.参数处理 2.断言

    从这段我们可以看出对程序的错误处理是很重要的,错误处理可以使得代码更加稳定。但是像我们在平时的编写小程序,或者做项目中,我们一般都忽视了这个问题,只把主要功能实现了,而没有做到错误处理。所以在书中所提到对于错误处理中,断言的理解我不是很懂。什么是断言?在百度百科里提到

断言可以有两种形式
1.assert Expression1
2.assert Expression1:Expression2
其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

继而又产生了异常与错误,异常与断言是什么关系,是什么意思的疑惑?什么时候该用断言,什么时候该用异常?

问题三:

在第四章和第五章里讲到结对和团队的问题,文中提到

两个角色:驾驶员、领航员
程序各方面的质量取决于一对程序员中各方面水平较高的那一位

    一个很现实的问题就是队员的问题。我们平时上课做实验有时候就是得搭档着做,做课设的时候也有需要搭档着做的时候,那么在团队里总有人能力较强有人能力不强。像在两个人的结对中,万一有一方能力较差一点,总不能所有事情都让另一方去做。这样能力较弱的一方都没学到什么,更甚者两个编程能力都不强的人结对又该如何保证代码质量,要怎么去处理这个问题?在团队里,要怎么正确的给每个人分配工作,又要怎么的把每个人做的部分整合起来?

问题四:

在第六章敏捷流程中,提到敏捷开发的一条原则:

经常发布可用的软件,发布间隔可以从几周到几个月,能短则短

    一个可用的软件,并不等于一个好用,用户满意的软件。在通过百度搜索后看到,提到敏捷开发的一项主张——“简单”,主张最简单的解决方案就是最好的解决方案。不要过分构建你的软件。但是如果是一款简单的软件,当它在发布间隔能短则短的情况下发布,那么如果用户发现并没有它所需要的功能,就不会喜欢它,即使之后有更新版本也不一定还会愿意去下载。在这发布间隔短,主张简单的情况下,如何保证用户还会下载最新版,如何保证软件的用户使用量

问题五:

在用户体验这一章,提到

用户体验的要素之一:从用户的角度考虑问题

    我想知道软件开发者是如何判断某个功能的设计是否是用户所满意的?比如手机百度app中,在更早之前的版本里,当你在访问某个页面的时候不小心按到首页键时,你可以通过按返回键重新返回访问页面。然而在现在的版本里首页键设置在屏幕的右下角很容易不小心按到,这时候如果你正在访问某个页面时,那么你只能通过“我的”-“历史”中找到相应链接重新访问,而不是简单的按下返回键就可以返回,在用户设置了不显示搜索历史时,那又该如何返回访问页面。

问题六:

在第十六章IT创新中,提到一点“迷思之五:要成为领域的专家,才能创新”,书中写到

统计数据表明:70%的创新者说,它最成功的创新,是在他们的拿手领域之外发现的。

    确实像书中所写的,阿里巴巴的创始人他所学的专业也不是与计算机、互联网有关的,而是英语,并不是所有的创新一定是由该领域的专家才能实现创新。那么我想问,对于不是该领域专家的人,要怎么get到与这个领域相关的创新,并且愿意去付之行动,创新都是有失败的风险,不说该领域的人,就对于非该领域的人,又该如何做好创新失败的防范?

问题七:

对于以后从事什么方向的工作,有考虑往运维方向走。书中提到

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

    但是运维跟我们现在学的《现代软件工程》有什么联系?emmm...,上文里提到,软件的开发...的过程。百度百科是这么解释网络运维的,"是指为保障电信网络与业务正常、安全、有效运行而采取的生产组织管理活动,简称运维管理或OAM"。那么我该如何学好,运用这门课?为什么这门也是作为网络专业的必修课而不是选修课?

【附加题】
https://book.douban.com/annotation/54360415/

posted @ 2018-03-18 13:30  _Another  阅读(231)  评论(2编辑  收藏  举报