《构建之法》读书笔记(一)
最近看了《构建之法》这本书,我从书中获取到了许多关于软件工程这一方面的知识。
软件企业=软件+商业模式。对于软件工程以及行业,程序是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式,影响了一个软件企业的成败,同时软件从业人员和软件企业的道德操守会极大的影响用户的操作与体验。也就是说,软件行业基于我们软件工程,大社会下的商业模式,以及人文因素。那么随着社会的发展,为什么软件开发成本没有将下降?通过阅读,我了解到,源于五个特性。
1.复杂性:我们日常生活的所用的软件等等,源代码都超过了百万行,相当复杂,而且随着技术的发展,复杂性逐渐增大。
2.不可见性:“软件工程师能直接看见源代码,但是源代码不是软件本身。”一个软件报出错误,可能是代码的错误,也可能是用户的机器,等等错误,但是检查错误的时候,就又要从头看起。
3.易变性:修改软件不是一件容易的事。
4.服从性:软件要与硬件结合。
5.非连续性:触发蝴蝶效应。
同时,通过阅读,我也认识到什么是好的软件。现在我们处于初学阶段,所以有时会认为没有bug的软件就是好软件,这确实很重要,但是我们的软件还要兼具用户的满意度,可靠性,可维护性,软件流程的质量,软件是要面向社会和人群的,开发者要学会与人打交道,研发符合用户需求的软件。曾经的我认为bug是一块臭肉,因为坏了整锅粥,我必须要剔除它,但是作者却告诉我们,bug其实也是一个功能,软件行业流传着一句话:“这不是缺陷,这是一个功能”,bug对于大部分人来说确实是一个缺陷,但是也许对于某些人就会是一个无中生有的惊喜的一个功能,正如文中所几乎的例子,一个同学买了一个破洞牛仔裤,一些人认为是时尚,有特色,一些人认为他的裤子上有两个洞就让他去退货,这其实是两种不同的看法,不过,bug在你心中是什么样,它就是什么样。
那么,软件工程是如何成长的呢?通过阅读,我了解到这几点。
1.首先,积累软件开发相关的知识,提升技术技能,比如掌握Java,C/C++,C#,python,php等语言,对平台的开发等等。
2.学会积极解决问题,并积累这些问题,在解决中学习,在学习中解决。
3.具有软件设计思想,如果你能具有设计思维,那么说明你是一个非常具有价值的程序员,遥遥领先于其他程序员。
4.勤于实践。俗话说,实践是检验整理的唯一标准,特别是软件工程师,只有多操作才能集中经验,去成长。
但是,软件工程师拥的思维误区我们要清楚认识。书中提到软件工程师的思维误区在于许多方面。例如,分析麻痹:其实就是想要解决一个问题,就要把他相关的内容全部学习了,结果会浪费很多时间,分析太多,想得太多;第二种与第一种相反,属于想一下子把所有问题解决,然后“完美的实现”锁定的目标,但是往往什么都解决不了;过早优化:就是工程师在写完某一个功能后,想让它变得更完善,于是花费大量时间去实现这个功能,也许还没了解全局是什么样(博主就有一点这样的问题);过早扩大化:就是软件写着写着突然有了灵感,感觉到这个程序会相当完美,但是这种想法往往不切实际。解决大问题自然有成就感,但是能把小问题解决好,也是一种本事。因此,我们要有一个全局意识,并以此来进行开发。
这就是我今天的读书笔记,受益匪浅。