小小的问题

    《构建之法》当教材真的很棒,没有那么死板,更多由故事引出,吸引眼球,让我这么一个不甚喜这门专业的学生能够看得进书,在这里先感谢邹欣老师,真的十分感谢。

    对于第一、二、十六章中讲述的内容提出问题,其实我更多的是有一些不成形的看法,可能有些幼稚,若有不妥冒犯之处,还请各位老师见谅。


 

第一章 概论

    一个心理暗示性的例子的利弊?如何判断需求的是否应该被重视?如何理解Bug?

    第一章第一小节(P7)中举了个例子:

    如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还要做这个功能么?你会选择:1.根本不考虑 2.如果没时间实现这个功能,就算了 3.做了,但是不用告诉用户 4.做了,而且不厌其烦地告诉用户如何使用 你会如何选择呢?

    我当时选择了第二项,因为我觉得一个不重要的可做选择的需求应该视情况而决定存在与否,然而我没想到谜底是飞机的安全功能。看到谜底时我有些惊讶,第一时间懊恼自己怎么能忽略这么重要的一点,但后来,我仔细一想,我觉得其实问题本身有一定的误导性,或者说,这个问题带有一定的心理暗示作用。

    对于心理暗示,《心理学大词典》上是这样描述的:“用含蓄、间接的方式,对别人的心理和行为产生影响。暗示作用往往会使别人不自觉地按照一定的方式行动,或者不加批判地接受一定的意见或信念。”人的判断和决策过程,是由人格中的“自我”部分,在综合了个人需要和环境限制之后做出的。这样的决定和判断,我们称其为“主见”。[1]

    而在问题中“百万分之一”、“还”这样的字眼就存在着一定的重复强调的心理暗示——这个需求不被重用。在这种情况下,我做出了错误的判断。我觉得在特意的诱导下导致学生做出错误的判断并不能真正体现学生的想法,如果一开始即提出是飞机的安全功能,相信所有学生几乎都能够选择第四项。诚然这种提问或许能提高同学在下次考虑问题时的全面性,所以我也无法说出心理暗示性提问的利弊关系。

    回归需求,其实我自己对需求是分成三种性质,一种是服务性,一种为功能性,一种即安全性。毫无疑问,安全性为重中之重,所有需求都需要服从于它,而功能性则为满足用户所需的合理的功能,服务性则是在安全性与功能性的基础上加以润色,使之更贴合大众的使用。安全功能自然属于安全性,所以这是无需考虑,必须要完成的需求。而比如在飞机上提供wifi服务这种服务性的需求,我相信如果可以,这个需求一定被70%的乘客所喜欢,但在目前的情况来看,这个需求威胁到安全性问题,所以这种需求则应该为安全性需求做出让步(我希望这不会又成为一个暗示性的选择题)。而这个需求属于哪种性质,不应该单看它使用的概率,更应该结合它的本质以及可能带来的后果,安全功能的使用概率虽小,但它本质是人身安全,后果可能让乘客失去生命,所以它应该是第一考虑因素。同理,在程序遇到异常,需要保存用户的数据,若无法做到全部保留,我们应该做到保留最重要的数据,正如面对危险时,安全远比身外之物重要一般,而这种做法需要在用户输入数据时,便处理好该数据是重要数据还是无关数据。

    第一章的最后(P16)对Bug的解释:

    什么是Bug呢?简单地说,软件的行为和用户的期望值不一样,就叫Bug。是否是Bug,取决于用户、开发者的不同角度。

    这个解释颠覆了我以往对Bug的理解,所以我上网搜索了一下Bug,在百度百科中是这么定义的:

    是指在软件运行中因为程序本身有错误而造成的功能不正常、体验不佳、死机、数据丢失、非正常中断等现象。

    是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。[2]

    按我以往,我是更偏向于百度百科的定义的,我一直觉得Bug是由于程序员在编写程序时未考虑周全而遗留下来的问题,并不取决于用户与开发者的角度。书中一个软件不经用户同意下载其他非该应用所必需的辅助软件的例子,我觉得它并不是一种Bug,这种情况要么是程序员故意为之的不道德的商业合作强买强卖,要么是一种病毒,这并不是程序本身的错误,不应称之为Bug。不知老师是否能给个准确的定义呢?


 

第二章 个人技术和流程

    单元测试如何清晰地表达某一“单元”要做的事以及它不能做的事?

    第二章第一小节(P25)中阿超的话:

    如果你写的模块会有不同的人,在不同的时间使用,那你最好把你这一“单元”要做的事,以及它不能做的事,用单元测试清晰地表达出来。同时,单元测试也能帮助程序员记录这个模块的历史和设计变更的理由。

    我不曾学习过C#和VSTS,虽然听说过单元测试但因为兴趣关系并不曾进一步了解,以至于在看这一章的时候懊悔异常。由于知识的匮乏,我对于书中代码的整体作用与单元测试的结果领悟不够。我平时调试代码时,一般是在myeclipse中运行之后看给出的报错,之后依次按行调试。我初步感觉,单元测试的功能与我这种方式相似,不过更加系统,便于团队合作。但如何从运行结果清晰地表达出某一“单元”要做的事以及它不能做的事?


 

第十六章 IT行业的创新

    专业对创新有没有影响?

    第十六章第一小节(P346与P353)中两个迷思:

    迷思之一:灵光一闪现,伟大的创新就紧随其后。迷思之五:要成为领域的专家,才能创新。

    阿基米德与牛顿的顿悟源于之前深厚的基础积累,而蒂姆·伯纳斯-李以物理学家的身份提出了利用超文本实现方便的信息共享和更新。那么,专家的身份到底对创新有没有影响呢?我觉得应该有一定影响,虽然非专家的“门外汉”身份或许能站在使用者的角度简单的提出一些迎合使用者口味的点子,但是点子的实现需要专业理论与技术的支撑,单靠想是远远不够的。创新是成品的思想,而不是脑中的空想。唯有把想法实践出一个受人欢迎喜爱的成品,那才是创新,而实践便需要专业的基础积累。故,我觉得专业对创新是有影响的,它在灵光一闪而过之后给予雄厚的技术支持,专业会让创新更快现世。


 

    我对于《构建之法》提出的小问题与看法也就基本这么多了,感谢各位老师和同学能看到这里,听我啰哩吧嗦了这么多门外汉的看法,不足之处希望大家多多提点。

 

[1]百度百科 https://baike.baidu.com/item/心理暗示/791046

[2]百度百科 https://baike.baidu.com/item/软件BUG/12618010

posted @ 2018-03-15 23:59  尼姑说她喜欢猫  阅读(217)  评论(6编辑  收藏  举报