自我介绍
在看这篇博客的大家好~这是记录上软件工程课blog的第一篇。
我是比较喜欢用标签记录一些事情的,比如用标签来整理归类自己要做的一些事情,或者给某些经历用几个词语去总结它。我对自己的标签是:松鼠党。所谓松鼠党,就是我会囤积很多很多稀奇古怪的资料,并且涉及许许多多莫名其妙的东西。一个松鼠党的优势是很多方面都会有一个初步的了解,劣势就是很少有哪个领域会精通,浅尝辄止的典型代表。比如摄影,比如诗词。这也就是我的各种软件推荐算法都会推荐的很奇怪的原因吧。
现状、经验和计划
现在是在信息学院的电子信息工程系,选择这个专业的原因其实很简单,学院一共四个方向,对信息安全的兴趣不是非常大,不想做硬件电路,自动化系要学习理论力学,排除法,就是这个系了。从专业偏向来说,有偏向于硬件和物理的通信方向,也有偏向于软件的信号处理方向,也是一个比较万金油的专业。
在技能调查表里,我选取的认为比较重要的几个技能是Programming: Comprehension, Program: Performance, Programming: Communication, Programming: Code Quality, Programming: Implementation, Personal Software Process。目前的水平只有2~3分,期望能够在课程结束后至少达到6分的水准。
计划提升水平的手段嘛,首先当然是读书了,先把握方法论的东西,然后是网上有关经验的帖子,和请教身边的同学和老师,最后就是自己的练习和反馈,把这些经验性的东西吸收成自己日常的行为习惯。
心得和感悟
关于为何要来上课,我非常赞同其中的大多数观点,比如认真听讲是一种能力,大学教育可以让人梳理思路,建立基础,培养聚精会神的能力等。我去观摩过一个吉他教学班,成员从初中生到大学生不等,但是一个群体性的规律是,从初中到高中,越到高年级的学生越能够保持聚精会神的能力等,但是大学生之间保持精力听课和精力分散的两极分化就是很严重的了,从精神状态上来看,这两类人的状态分化也是非常严重的。但是我并不赞同学生不能够判断课程有无有用这个观点。虽然我比较同意大学生的格局还不足以判定很多事情。因为大学的很多课程并不是与时俱进的,或者说很多是所谓的王牌专业强制性全校学习。比如华中科大全校性的工程制图,以及学校开设的大物实验。从自己的角度出发,我仍然认为一个以软件为主的专业的学生花费大量的时间和精力去做物理实验(而且是与所学物理课关系不大的物理实验)而非正常需要的大量的上机实验是并不合理的。
关于师生关系,我觉得在学校中我身边更多的是向老师和同学请教来完成自己任务的类型。准确来说,应该是优先同学之间相互请教,其次才会向老师请教,觉得这个现象可能是一个是从小养成的“怕”老师的情况,另外就是不能确定自己的问题是不是有价值了。
关于借鉴和抄袭,对于引用他人的文章而不作任何说明的情况,那就当然是抄袭了,比如现在很多的博客网站和知乎之类的直接复制粘贴全文并且不加任何说明的情况。或者东拼西凑,一篇文章里有六七成都是别人的东西。对于工作的借鉴,是要取现有工作之中对自己有用的部分,加以自己的理解去解释说明,并且附带这种思路的出处和来源。
从对未来的规划角度,严格来说,我本来认为我的人生道路是大学,研究生,工作,但是因为一些阴差阳错的事情,得到了各种各样的机会,感觉有了选择的可能性。在之前,我的计划是做学术研究,但是似乎学术研究和期待中的东西也有些差别,所以很期待能通过这门课程体验软件开发的经历,来帮助自己理清到底未来想要怎么样。但是,不论之后从事哪个方面,所谓的“打铁还需自身硬”,一个好的基础无论从事哪条路都可以给我很大的帮助。而且现在的代码量只有大概1w行左右,其中约有1k行的PHP和大概2k行的matlab代码,其余的主要都是一些硬件编程方面的代码了。希望能够在这里能够至少将代码量翻倍。持续三个月的课程,也就是说希望每周代码量能够在1k行左右。
博客读的是荆棘人《.net程序员工作两年总结》
这篇博客讲述的是作者上手就通过网络学习编程然后作为程序员的经历。为什么要来上课里面说认真听讲和聚精会神是大学培养的一种能力,可能能够平心静气的慢慢去学习也是一种大学里会培养的能力吧。网络培训,整体来说是一种全靠自觉和自我发掘重点然后去试的方式在教学,之后因为整体是个就业导向型的培训,是被催着去学,不像学校里时候那种可以慢慢去接受一种新的知识,并且会有人告诉你哪里是重点,哪里是难点。不否认,当有一定的技术基础之后,可能大学里的学习节奏是偏慢的,因为那个时候不仅仅是在学习技术,还是在学习一定的额外穿插的知识,还有一种学习习惯,一种不被逼迫的慢慢去掌握知识的一个环境。我觉得文中一句话说的很对“总之就是编程并不像宣传的那样,三个月就可以学会,不可能。”但是现在一些“七天学会XXX”的书的销量还是非常火的。效率不应该等同于浮躁,但是现在往往会被搞混,效率应该是会走,然后跑起来了;浮躁是告诉了怎么走,然后还不等学会走路,就挥舞着鞭子要跑起来。聊以自省,要有效率,但是不能浮躁,这是最大的感悟了。
对《构建之法》提出的问题:
第八章 需求分析 关于产品的四个象限(P165)
资源有限,我们对不同功能有哪些办法呢?下面有5种办法。
- 维持 —— 以最低成本维持此功能
- 抵消 —— 快速地达到“足够好”、“和竞争对手差不多”
关于产品的杀手功能,外围功能,必要需求,辅助需求这四点的划分存有疑惑。以手机为例,在出现智能机之前杀手功能应该是超级厉害的通话质量,辅助需求是拍照以及各种各样的娱乐需求,但是在通话需求已经达到一定程度了,就是人已经可以接受的程度了,像手机摄像,音乐播放之类的本来是辅助需求的东西反而会更加吸引人的注意力。比如国内手机厂商打出的拍照手机和音乐手机的旗号,就相当于是在第三象限投入了大量的生产力,而在其余象限保持甚至略微弱于其他品牌,但是看市场来说也是获得了成功。甚至很多时候人是意识不到自己还有这样或者那样的需求的,需要厂商的推动,那这样厂商自己新划分的,又不是人当时刚需的功能,似乎算是第三象限,但是在现在看来已经是第一象限了。所以这样子的功能站在开发者的角度到底应该如何划分呢?
第八章 需求分析 用户调查问卷的方式(P158):
a. 全开放式问题。例如: 你对手机上的日程管理软件的期望是:_____________
根据之前所做的用户需求调查问卷,在学校内收集的问卷中,会认真回答这类开放性问题的参与者所占比例非常低,参与问卷调查的用户似乎更倾向于去做一些简单的,被限制住范围的选择题,特别是如果他们对该软件的需求的迫切程度一般的话。多项选择题的附加额外可以自己填写的横线这样子的问题往往比起其他问题更受欢迎。而且感觉这类问题需要用户去思考,也算是花费了额外的努力。
第三章 软件工程师的成长 软件工程师的职业发展(P51)
人们对待职业的态度有哪些等级:
- 临时的寄托或工作
- 工作
- 职业
- 投身的事业
- 理想的呼唤
我觉得这种对职业认真的态度并不一定能够反映出一个人对职业认真的态度。就像紧随其后的Emanuel Derman的例子,兴趣和对职业的态度是一个方面,但是经济基础以及能力等的限制也是一个很重要的方面。有对物理的兴趣但是没有办法但是因为各种原因郁郁不得志。那他对物理这项作为职业的态度应该可以达到“理想的呼唤”这个等级了,但是最终还是投身了其他领域。因此觉得职业发展的态度应当是建立在已经拥有一定的前提下的(比如生活水准)。
第十六章 IT行业的创新 小即是美(p372)
产品的选择权,由原来的大公司设计主导,变为用户主导,用户觉得产品好,他们就会持续购买,这对于高质量,灵活的小作坊很有利。
诚然,像书中所讲述的,小作坊有灵活,迭代快速的能力,能够很快的贴合用户需求做出改变,但是,小作坊本身的发展是需要大量用户的,想要吸引大规模客户的主流渠道,参考知乎有关问题1,2,还是需要大量的资金或者已经拥有大量用户的应用商店的推荐。那么也就是说,提供给用户的需求设计已经经过大公司的一次筛选才会呈现给用户,所以我对这句话中由大公司设计主导变为用户主导存在疑问。毕竟,如果用户无从得知这样的产品,就无法谈起用户主导这样的事情了。
第八章 需求分析 功能质量和投资力度的线性关系图(P165)
我们以对App评分的五星级来做参照,满意度越高,星级就越高,见图8-10。属于这一类型的功能,都和上文提到的“核心需求有关”。例如,词典软件收录的词汇和例句的数量,查询的速度,等等。
在这里,我的疑惑于问题1类似,从个人的角度出发,在大多数情况下,词典的搜索速度是1秒出结果还是1.5秒或者2秒出结果其实我是并不在乎的,因为可能考虑到网页加载速度等这些是在容忍范围内的。而且两个软件不到1秒的速度差距也是比较难以感觉出来的。因此觉得这个例子并不是十分合适。在这种情况下的话,偏向于觉得核心功能的曲线应当类似于基本功能的曲线,但是会拥有一个更慢的衰减速率。