前言
此书有两个版本,我读的是第一版,大学时买了略略翻过,当时太懵懂无法理解书中提出的观点,看了也记不得,感觉比较适用于有过1~2个项目工作经验的同学,初学者不一定能看得懂,工作之后看,有很多新感悟,能与书中的情景感同身受,在此记录一下阅读的感悟
第一章 注重实效的哲学
1. 我的源码让猫给吃了
请对你的源码(工作)负责。如果你没有做存在风险操作的备份,那是你的错,一旦出了问题,即使你告诉老板 “我的源码让猫给吃了” 也没用,我们应该提供各种解决方案而不是找蹩脚的借口,不要说做不到,而是要做点什么来挽回糟糕的局面,或许你需要额外的资源,没关系,不要害怕提出要求,也不要怕承认需要别人的帮助。
在所有弱点中,最大的弱点是害怕暴露弱点。
换位思考 :如果有人——比如银行客服、柜台 或者汽车维修员店员,对你说蹩脚的借口,你是什么反应?你心里会怎么想这个人和他们的公司?
2. 软件的熵
熵是一个物理学概念,指的是某个系统中 “无序” 的总量。当软件的无序增长时,程序员们称之为 “软件腐烂”。
糟糕的代码跟破窗户(只要一段时间没清洁修理,就会有废弃感)一样,不要留着 “破窗户” 不修,不要容忍破窗户,发现一个就修一个,即使没有足够完善,就用木板把它钉起来,比如说添加注释、用假数据替代(说明)等,采取某种行动来防止软件进一步损坏,并说明情势在你控制之下。
如果没有人有时间去清理项目中的破窗户、碎玻璃,那么最好找个垃圾罐(丢了),或者搬到别处去,不要让熵赢得胜利。
如果你所在的项目代码十分漂亮——编写整洁、设计良好、并且很优雅,那你一定会注意不去破坏他,你也不会想成为第一个破坏的人。
感悟: 实际上,接触过项目工程代码的人,多多少少都可能会碰见 “破窗户”,按照我以前的做法,就是沿用前人的写法,一直错下去了,但实际上好的程序员,会去提出问题,找到根本原因并想办法解决或者推动别人一起去解决问题,直接复制前人的做法在表面上好像给自己减少了很多工作,但其实也让自己脑子减少了思考,变得懒惰!!!可能一直无法进步!
3. 石头汤与煮青蛙
石头汤:士兵戏弄村民,利用村民的好奇从他们那里弄到了食物,最后大家都吃了几个月来第一顿饱饭。士兵充当了村民团结起来的催化剂,和他们一起做到了本来做不到的事情,在这件事上士兵所催生的变化对村民完全有利。
煮青蛙:如果抓一个青蛙放进沸水里,青蛙一下子就跳出来,但是如果把青蛙放进冷水里,慢慢加热,青蛙不会注意到周围温度的变化,会呆在锅里直到被煮熟,冷水加热对青蛙来说,是害死他的催化过程。
感悟: 我们可以主动选择催生变化的方向,每个人做的事都可能催化项目的最终结果,要记住大图景,不要像青蛙一样,最终 “被煮熟了” 才发现早就要跳,要持续不断关注周围发生的变化,而不只是只关注自己做的事情。
4. 足够好的软件
没有完美的软件,“足够好” 不是意味着所有系统都必须满足用户需求,只是宣扬应该给用户机会参与决定制作的软件,什么标准才是足够好。
不该许诺无法兑现的deadline,也不该为了赶上deadline而削减本该完成的工程内容,而是使质量变成需求问题,因为很多用户宁愿用一款 “不完美” 的软件,也不希望再等几天甚至更久才完成的 “完美” 软件,尽早给用户使用,他们的反馈会指引我们把软件做得更好
感悟: 做任何的功能、软件,都应该知道在 “何时止步” ,做到什么程度就可以交付了,而不是把本该一周完成的工作,做到两周三周甚至更久,只是为了把工作做得(自以为的)“完美”,实际上在交付后,用户会给予(他们希望)做得更好的反馈,这比花费更久时间做出来的 “完美” 更好,因为自以为的完美不一定是用户想要的,可能还会推翻这种完美。。。。刚开始工作时经常犯这个错误。。其实不可能做得完美,只能做得足够好。
5. 你的知识资产
程序员的知识和经验是最重要的财富,但它们都是有时效的知识,随着技术的更新换代,需要紧跟发展,定时更新自己的知识库,需要多元化的学习,拓宽知识面,需要根据自身情况制定目标,比如学习一种语言、阅读一本技术书籍,非技术书籍,尝试在不同的操作系统上开发,看网课,或者现在也可以从GPT上获取很多有用信息。
工作中有很多学习的机会,比如别人向你请教问题、阅读和研究某些问题,去寻找答案就是在学习。
要时刻保批判地思考你听到的和看到的,有可能某些知识并不适用于你当前的情况,有些知识可能在写出来的时候就有争议,大部分都是作者个人的看法,且现在很多标题党或者带节奏的文章,但拥有大的知识量并保持批判的分析,能帮助我们解决很多复杂问题。
6. 交流
作为开发人员,无法避免交流,至少要知道需求是什么,但一定要清楚地认识到,就算有最好的设计和最漂亮的代码,不与他人交流,最终都不会有好结果。
注意要点:
1. 知道你想说什么
2. 了解你的听众(换位思考,对方怎么理解,需要什么信息)
3. 选择时机
4. 选择风格(表达方式)
5. 让文档美观
6. 让他人参与方案确认并获取反馈
7. 做倾听者
8. 事事有回应
感悟:我刚开始工作的时候,也曾自命不凡,感觉自己做什么先做了,做好了再交付,遇到问题就自己解决,就自己一股脑蛮干,现在再回头看,觉得自己傻乎乎的,因为工作≠学习研究,学习的时候有自己的思考是好事,但是在工作中,很多时候想太多(可能都是没用的,且浪费了很多时间),不如去找同事或者老大多交流几句,有问题自己解决不了就及时寻求帮助!可能卡自己好几天的问题,拿去问别人后,五分钟就解决了,还能提高工作效率,同时自己还能在跟别人沟通的过程中,了解更多,这些都可能是自己思考不到的。