软工读书笔记 week 1
这次读书笔记主要是就《程序员修炼之道》这本书的前半部分做一些总结以及发表一些自己的看法。
本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下:
1、处理问题的态度与责任。
这是在本书序言中就提到的,可见其重要性。处理问题的正确态度以及对自己的行为负责是无论什么职业的人都应该注意的,而对于程序员来说,又有其特定的指向。首先,作为程序员,不能害怕暴露弱点,要敢于先呈现出不完美的代码,然后再去寻求改进。其次,负责还要求不要把问题归咎于他人。对于可能遇到的问题,都要有预先的计划。 “猫吃了我的源码”之类的说辞还是不要出现的号。。
2、软件的熵理论
熵就是事物的无序程度。这就像就像“破窗户理论”,我们要对破窗户零容忍。如果此时对软件代码或者决策上的一个小问题容忍,很可能导致非常严重的结局,或者书中所说的“软件腐烂”。
3、灭火理论
灭火理论就是一个情形,消防员为了不弄脏地毯,在灭火前先在地毯上铺上垫子。这个理论我还是第一次听说,这在现实生活中不能理解。但在软件编写中很重要,不能因为deadline,就放低自己代码的标准。
4、石头汤
有时候换一种方式,也许就能获得自己想要的东西。通过“要是增加……可能就会更好”这一方式,可能会比直接去要求某一样功能会更好。
5、温水煮青蛙
这个就很常见了,就是告诉我们要观察周围的事情。特别是对于程序员来说,周围的一切永远在时刻变化。
接下来是一些更具体的内容。
1、让用户参与权衡
毕竟你的成品是要给用户使用的。
2、使质量成为需求问题
我很喜欢这个说法,编程就像绘画。先是勾勒全景,然后画背景,在描细节。然后对自己的画进行批判,如果不满意的画接着可能得重来。但编程的话,书里告诉我们要学会止步,因为代码不可能完美。先把不完美的代码呈现给用户,让用户的需求来改进它的质量。
4、知识投资
一是要定期投资,并且要多元化,不要全放在一个篮子里。因为你并不知道哪些知识在未来是最有用的。
5、交流
首先要知道自己想说什么,然后了解听众,把握时机,并且调整自己的风格,使之适应听众。以及还一个美观问题,也需要让听众参与。当然对于程序员来说,听众就是用户。
6、DRY-“Don’t repeat yourself”
减少重复。一是强行的重复。如注释问题,应该低级知识呈现在代码里,高级说明呈现在注释中。再就是一些无意的设计上的重复,比如结构的定义上,可以减少一些变量。还有就是无耐性的重复,比如拷贝代码。这一点我也很有体会,有时以为功能相似便去拷贝一份代码,结果改代码的时候出现了各种问题,最后还得反复调试,其实还不如重新写一份。
7、正交性
这个概念也是很新颖。运用了数学里的概念。正交即说明二者互相独立,可以独立地去修改其中的一部分。比如界面、数据库独立,我们可以单独修改一方。实现正交性就要无关事务的影响,这可以让代码更健壮。这一概念在团队合作上也很有用,将工作分区,一定程度上隔离,可以提高工作效率。这在代码上,具体也有避免相似的函数等措施。正交不仅便于测试,而且使代码具有可撤销性,即你可以通过很小的改动去撤销或修改某个功能。
8、曳光代码与原型制作
这一部分开始,书里的内容开始不是那么好理解。根据我的理解,曳光代码也可以看成是一个简单的、不完美的代码。很多时候,用户也不清楚自己真的需求。如果让他们及早看到未完成的产品,他们会因为能看到产品的进展而欣喜。就像晚上用曳光弹射击,我们可以知道距离目标还有多远,若总是停留在理论上的计算,很可能反而不能更快达到预期。
它与原型制作的区别在于,原型制作是用过就扔的,而曳光代码仍然是最终系统的一部分。比如我们用轻木、胶带做了一个新车模型,这可以看成是原型制作。原型制作可以帮助我们分析风险、学习经验。而如果以车来打比方,曳光代码至少是能开上路的车,虽然它和真正的产品差距有很大。曳光代码允许一定程度忽略正确性、完整性、健壮性以及风格。
软工读书笔记 week 1的更多相关文章
- 软工读书笔记 week 9 ——《构建之法》
软工读书笔记 week 9 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...
- 软工读书笔记 week 5 ——《构建之法》
本周主要对<构建之法>中的一部分进行阅读. 一.软件与软件工程究竟是什么? 本书的概论部分就指出“软件 = 程序 + 软件工程”.而我们这门课的名字就叫“现代软件工程”.其实在上课之前,我 ...
- 软工读书笔记 week 8 —— 《疯狂的程序员》
这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下. 程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...
- 软工读书笔记 week4 ——《黑客与画家》下
因为时间有限,只对书中后半部分几个篇章进行了阅读. 一.另一条路 作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...
- 软工读书笔记 week 7 ——《构建之法》
总时长近两周的结对项目终于算是结束了,马上要重新开启团队项目.于是这几天决定对<构建之法>一书中与团队项目及需求分析有关的章节进行重点阅读,希望能够从中得到启发,并运用到接下来的团队项目中 ...
- 软工读书笔记 week 6 ——《疯狂的程序员》Part 1
这本小说以主人公绝影上大学后初次接触编程开始讲起,这周主要看的就是绝影还在大学的那段经历,虽然故事背景很多年前,但很多地方仍然会引发我的共鸣. 第一个梦想 在“第一个梦想”一节讲了作业布置做一个通讯录 ...
- 软工读书笔记 week3 (《黑客与画家》上)
一.何谓黑客? 黑客,在我们大多数普通人眼里,就是入侵计算机的人,通常还与干坏事挂钩.而书中告诉我们,这 并不是它的真正含义.而要想理解这本书,就要首先理解什么是黑客. 黑客这个词最初起源时,完全是一 ...
- 软工读书笔记 week2
<程序员修炼之道>这本书后面一部分则是更深入.更具体.更细致地就程序员应该注意的事项做一些讨论,书中说的很多在过去的经历中都有较深的体会,同时也给了我很多启发.以下是一些我感悟较深的点: ...
- 软工网络15个人作业4——alpha阶段个人总结
软工网络15个人作业4--alpha阶段个人总结 一.个人总结 用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 总结Alpha冲刺过程. 由于直接用 ...
随机推荐
- WebFrom局部刷新
因为页面用的是服务器的控件 结果每次触发后导致页面刷新 把刚填完的数据给整没了 很烦 在网上找了蛮久才找到的一个方法 战略插眼 以后还有用到的时候 <asp:ScriptManager runa ...
- 03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- session_destroy()和session_unset()的理解
session_destroy 是注销所有的session变量,并且结束session会话目前是删除当前用户对应的session文件以及释放session id值 ,但是但是 内存中的$_SESSIO ...
- VS2015 MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4
今天在VS2015中用编译好的QT5静态库打包软件,配置好QT的静态环境后, 发现报MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved ...
- shiro学习笔记_0300_jdbcRealm和认证策略
使用shiro框架来完成认证工作,默认是iniRealm,如果需要使用其他的realm,需要配置. ini配置文件详解,官方文档的说明如下: [main] section 是你配置应用程序的 Secu ...
- vue监听不到props中的值时
已解决: watch: { data: { immediate: true, handler: function(newVal) { console.log(newVal); } } },
- laravel5.4学习--laravel目录结构
Laravel目录结构分析 app目录:主要是存放自己开发的应用代码(里面主要书写 控制器和模型和路由文件) bootstrap目录:laravel启动目录 config目录:主要是存放配置文件信息 ...
- Knockout.js Text绑定
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- 浏览器获取正确的scrollTop值
window.pageYOffset 被所有浏览器支持除了 IE 6, IE 7, IE 8, 不关doctype的事, 注IE9 开始支持此属性. window.scrollY 被Firefox, ...
- mysql分表,批量生成数据
一.mysql的分表策略 根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉: 1,水平分割: 水平(横向)拆分:将同一个表的数据进行分块保存到不同的 ...