阅读作业之由讲义引发的一点思考

现代软工讲义请点这里

  读完现代软件工程所有的讲义,我觉得收获很多,邹老师提出了很多我们并没有注意过但很重要的问题,值得我们思考。以下是我的几点想法:

·关于技能与模仿

  在讲义技能的反面——魔方和模仿中,以玩魔方为例,讨论了模仿、技能和精通的不同程度,那么对于软件工程或者计算机的某一个研究方向来说,怎么样才能算是精通呢?我对一门语言掌握到什么程度才能够在简历上写“精通XX语言”呢?我觉得,首先,如果还在纠结语法问题,那肯定不是“精通”,也许只能说“了解”。其次,还要有大量的工程经验,知道如何解决一般问题,对语言的应用也比较灵活,我想这样可以称上“熟练”掌握了。但也许还不能算精通,还应该了解这个语言更深的东西,知其然还要知其所以然,或者还要掌握其他关于这个语言的知识(我目前还没有对哪个语言掌握到第三个层次,所以还不能想出这“更深的东西”具体指什么)。所以,要达到“精通”的程度十分不容易,我必须更加努力地去学习。

  我知道了“模仿决不等于技能”,但是我觉得在学习技能的过程中,模仿是最初的阶段。我们学c语言都是从hello,world开始的,从hello,world中知道了printf怎么用,main函数如何定义,头文件是怎么回事。然后再看其他程序,看for的用法和效果,知道函数在程序中的作用。在学习程序语言的过程中,模仿是一个起步,但模仿之后还有很长的路要走。

·创新的迷思(讲义1,2,3

  关于FMA & SMA。我不记得是在哪里看到过这样一种说法:大体来说,公司分为三种。一种是靠创意和新想法推出新产品的公司,应该就是指这里的FMA,这类公司需要有好的创意,创意成功的收获是巨大的,但风险也很大。第二种,就是SMA,改进现有产品进行创新和推广,这类公司的风险相对小,但同样需要好的想法和策略。第三种,是山寨公司,完全仿照他人的产品,靠低价格获取市场。我觉得对于一个公司来讲,首先不要做第三种山寨公司,它也许能在短期内盈利但是没有很好的发展前景。其次,从公司的整体利益以及风险的方面考虑,作第二种公司是更好的选择,改进现有的产品使它更符合用户和市场的需求。但是我觉得技术的发展需要第一种公司,大胆的提出自己的想法并付诸实践,这样市场才会不断有新产品新技术。

·敏捷开发——Scrum/Sprint

  Scrum分为三步:1、找出完成产品需要做的事情;2、决定当前的冲刺需要解决的事情;3、冲刺。

  我觉得这个方法和我们做大作业的节奏很像。首先分析需求,讨论需要做的事情和分工,然后学习需要用到的技术和知识,最后写程序和调试。在scrum中,冲刺阶段每日例会很重要,它既能监督项目进行的进度也方便大家对一些问题进行讨论集体解决。在之前的大作业中我们没有开过每日例会,只是交流自己的进度或者遇到问题向他人求助。这次我们的大作业在第一个开发周期,自第二周起要求每天要向组长汇报自己今天做的事情,我觉得这样一方面对自己起监督作用,免得拖延症发病到最后几天赶工,另一方面组长也能比较好的了解和控制进度。

  在文章的最后,老师提出了一个思考题:

思考题:

在一个冲刺中, 团队预计每天的进度为 30 小时。当项目完成了一半的工作量的时候, 大家发现实际的进度为15小时/天,  问: 在余下的时间中, 团队的进度要到多少, 才能在项目结束时让整个项目的平均进度恢复到每天30 小时?

  本来我想的是单纯按照数学计算的方法:(30x - 15x/2) / (x / 2) = 45小时(x是总的开发天数),即接下来每天进度为45小时。可是看到了文章下面的评论,有人给出同样的解答,老师回复:“不对”。我想在实际的开发过程中应该没有那么简单,但是答案到底是什么呢?(求解答

·用户界面与用户体验

  首先,特别推荐大家读一下这篇博文。老师用了几个让人捧腹的例子说明了用户体验中的问题。让程序员站在用户的角度上思考用户体验的问题。

  很多时候程序员对自己设计的用户界面有特别的偏好,或者说程序员是最需要这个界面的用户。很多时候,出于这样的原因,我们不能真正了解普通用户使用时的需求。比如,在老师的例子中提到:

微软公司有 dogfood 的传统, 程序员都自己使用自己的产品 (从内部测试版开始), 我在 Outlook 做开发的6年中, 大部分时间都用的是非正式的测试版本, 有些是前一天刚构建好的产品。  这种传统保证开发人员能了解软件功能在实际中的表现, 非常好。 但是这也有一个副作用, 由于我们都非常了解这个程序, 我们的心理, 技术能力和一般用户有很大差别。 有一次一个同在微软的朋友给我打电话, 问 Outlook 的一个怪问题如何解决。 我说, 你到菜单上  Tools | Option | Advanced … 然后把某一个选择框选没有就可以了。

他说 - 我哪敢啊, 这还是 Advanced Option, 万一搞错了怎么办?

很多程序员都没有意识到用户对那些 Option 对话框中的种种选择有很大的畏难情绪, 而程序员觉得自己开发的功能必须有几个 Advanced Options, 才显得有水平…

  在我学计算机之前,面对电脑里面那些“属性”、“高级设置”等的按钮是轻易不碰的,一方面是因为这些不常用到,另一方面是因为不清楚那些里面的东西是干什么的。相信一般用户也有这样的感觉,但是对于程序猿来说,“高级”不过是将某一些功能封装起来,放在另一个界面里面,取了个“高级”的名字。

  我记得曾经听到过这样的说法:“好的用户界面设计就是让父母在几分钟内知道它怎么用。”我觉得这样的说法很有道理,现在的软件的用户范围越来越大,不只追求时尚的年轻人会用,我们必须考虑到这一点。把界面设计得复杂并不一定是高水平的象征,反而会增加用户使用的难度。而且,对于一个网站来说,如果用户在5分钟之内找不到自己想要的东西,他基本就会离开。这点从google和百度的搜索界面上就可以看出来。

 

  

posted @ 2012-10-29 23:43  宋小希_jessica  阅读(282)  评论(3编辑  收藏  举报