本篇文章是阅读《程序员修炼之道——从小工到专家》第一章 “注重实效的哲学” 的笔记。有了一些开发经验后再看这本书会比较有感触,本书第一章讲了一些对程序员最基本的要求,如果你正在进行职业规划,那么这本书有很好的参考意义。下面我结合自己的经历聊聊第一章的内容。

责任

责任是做一切事情得前提,小到对自己的代码,大到人生规划,我想这也是作者把它作为第一章第一段的原因。责任是你主动承担的东西,当然如果这件事超过了你的控制范围,你有权不对它负责。否则的话你需要切实负起责任,即使过程中犯了错误也应该坦诚承认,而不是找各种借口。我觉得大部分程序员都会对自己的代码有很强的的责任心,毕竟它就像孩子一样,当然责任心太强往往会导致不愿承认一些错误。其实在职场中领导也比较喜欢那些能够主动承认错误的员工,谁也不能保证不犯错误,但对于犯了错误藏着掖着甚至乱甩锅的员工,领导可能更不放心交付他更重要的任务。

软件的熵

熵是一个物理学的概念,指的是某个系统中 “无序” 的总量,当软件中的无序增长时,我们称之为 “软件腐烂”。至于什么情况会导致软件腐烂,作者举了一个 “破窗户” 的例子,也就是我们常听说的 “破窗理论”。简单来说,一扇破窗户,长时间不修理,会给人们带来一种废弃感。于是又破了一扇窗户,人们开始乱扔垃圾,乱涂乱画,最终房屋的结构遭到严重破坏,且超出了业主的修理程度,从而废弃感变成了现实。破窗理论启发了警察部门对一些轻微的案件也严加处理,防止大案件的发生。

在软件开发中,低劣的设计、糟糕的代码和低质的文档等,都是 “破窗户”,应该看见一个修一个,不能让这种无序的状态越来越严重,导致软件腐烂。当然我们可能没有时间、精力去清理所有的 “破窗户”,我们可以加一些 TODO,或者集中整理成文档,拉一个专项专门处理。所以说,没有不好的程序员,只有不好的设计、代码和文档。

石头汤与煮青蛙

我们开发过程中,需要其他团队配合的时候,往往容易出现其他团队对我们所做的事情的漠视、拖延。这时候比较好的做法是,我们需要先把自己的想法进行落地,设计并开发出一个初版,有一些成就积极与大家分享。当其他人看到这个东西正在走向成功的时候,别人就会愿意帮助我们,最终共同协作完成项目,当然成果也要与大家共享。为了说明这个问题,作者讲了一个故事,有三个饥饿的士兵,路过一个村庄,由于多年的战乱,村民的食物也很匮乏。于是,士兵们便煮了一锅水,里面放了几块石头。士兵告诉惊讶的村民说这是 “石头汤”,如果放一点胡萝卜会更鲜美,一个村民就跑开去拿胡萝卜。士兵又说放点土豆会更好,另一个村民回去拿土豆。接下来不断有人拿东西,食物变得越来越多,汤越来越丰盛,最终士兵和村民一起享用了一顿美餐。这就是 “石头汤” 的案例。当然,工作中也会碰到有些团队就是不配合,就像有些村民就是不愿意把自己私藏的东西拿出来。这也没办法,或许别人有更重要的事情去做。至少这个案例给了我们一个解决这类问题的新视角。

从村民的角度来,这个案例也告诫我们视野不要太狭窄,要关注到别人做的事情,如果是一件值得去做的事情就要积极主动地参与进去,留心大图景。不要固执地只负责自己那一块的内容,不要做温水里的青蛙。所以,石头汤和煮青蛙看似两个独立的案例,却有一定的联系。

用户的参与

完美的软件需要用户的参与,因为通常我们是为别人编写软件。除了软件的功能需求,还要关注交付时间、软件质量等需求,无视用户的需求,一味地追求新特性、粉饰代码并不是有职业素养的做法。以我所从事的大数据工作为例,其实我们的用户就是运营、产品,如果无视他们的数据需求,一味地增加一些酷炫的指标,可能对分析产品并没有什么帮助,显然这样做是不对的。同样,为了交付期限、功能需求而无视工程质量的做法也不可取。所以,我们经常需要在满足用户需求与完美的工程实践之间权衡。

知识资产

我们经常听到说程序员是吃青春饭的,也就是说知识资产是有时效性的。随着我们的知识价值降低,我们对公司或者客户来说,我们的价值也在降低。为了阻止这样的事情发生,我们需要像对待金融资产一样,对待我们的知识资产。每年学一门新编程语言、每个季度读一本书(定期投资自己)。多接触了解其他的技术栈,比如:做前端的了解后端技术,做大数据的了解算法(多元化的投资)。关注新技术,在新技术流行前就花时间研究,当它流行时我们已经领先了大部分人(低买高卖)。要经常评估自己掌握的技术在市场上中的地位,如果已经凉了,需要果断放弃把经历放到新的方向(周期性地重新评估资产)。我们经常拿老外来反驳程序员吃青春饭,看完这部分内容才发现,原来老外把知识资产当做了金融资产,所以才能保证自己的价值。

交流

虽然程序员生活中不善言谈,但在工作中往往需要大量的沟通,小到接口协议,大到架构设计。交流一方面是为了推进自己的工作,另一方面是为了输出自己的观点,建立自己的影响力。同时交流的过程需要注意一些细节,比如:了解听众,选择沟通的时机,选择沟通的风格,沟通前注意自己的思路、文档是否清晰,交流中要倾听别人意见、让听众参与,沟通后及时总结、回复他人。

小结

本篇内容各个小结看似比较独立,但其实是有一定的联系的。首先责任是后续所以内容的一个前提。其次,作为程序员我们要把自己的工作做好,“软件的熵” 告诉我们要立足于我们自己的工作,要解决自己软件里的的“破窗户”。当我们把自己的事情做好,需要别人参与到我们的软件中,组成一个大的协作体的时候,需要我们怎么去协作,便是 “石头汤与煮青蛙” 一节的内容。我们开发软件,最终要解决用户的需求、为用户创造价值,所以这个过程要有 “用户的参与”。虽然目前我们开发出了让用户满意的产品,但过程中我们用到的知识有时效性的,“知识资产” 这节告诉我们如果让自己有价值。最后提到的 “交流” 是为了让我们上面所有的努力能够输出,建立自己的影响力。

欢迎关注公众号「渡码」,我将分享更多优秀书籍的内容

程序员修炼之道 pdf_程序员修炼之道-注重实效相关推荐

  1. 程序员的mysql金典pdf_程序员的SQL金典

    第一本专门为程序员编写的数据库图书 <程序员的SQL金典> l 将子查询.表连接.数据库语法差异等用通俗易懂.诙谐幽默的语言讲解出来 l 配合大量真实案例,学了就能用,在短时间内成为数据库 ...

  2. 架构整洁之道 pdf_代码有整洁之道,而架构同样有整洁之道

    大家好!我是超级机器人 UltraBot,今天给大家一些值得阅读的开源书籍和项目. Etcd3 学习笔记 etcd 是一个分布式一致性键值存储,用于共享配置和服务发现.etcd 是 Go 编写,并使用 ...

  3. 读书笔记 -《高效程序员的45个习惯-敏捷开发修炼之道》

    <高效程序员的45个习惯-敏捷开发修炼之道> 一本2010年出版的书,当时敏捷还只是在国外开始流行,像我这种菜鸟级根本听都没听过.这次通读了这本书,受益良多,回顾自己的职业生涯,多是漫无目 ...

  4. 《高效程序员的45个习惯——敏捷开发修炼之道》读书笔记

    <高效程序员的45个习惯--敏捷开发修炼之道>的读书笔记 <高效程序员的45个习惯--敏捷开发修炼之道>[美]Venkat Subramaniam / Andy Hunt 著 ...

  5. 程序员修炼之道——第二章 注重实效的哲学(二)

    注重实效 重复的危害: 别做重复的事 正交性: – 按模块进行开发,每个模块负责该模块的部分,不要将其扩展到其他模块. – 将对代码有侵略的第三方接口统一封装成统一格式提高复用性. 可撤销性 :将对代 ...

  6. 程序员修炼之路(十)程序员必读经典书籍和成长路线

    本篇文章是程序员修炼之路的第十篇. 原文地址:http://book.douban.com/doulist/1259081/?start=25&filter= 这篇文章主要是关于程序员学习路线 ...

  7. 《代码整洁之道:程序员的职业素养》一一1.5 参考文献

    本节书摘来自异步社区出版社<代码整洁之道:程序员的职业素养>一书中的第1章,第1.5节,作者:[美]Robert C. Martin(罗伯特 C. 马丁),更多章节内容可以访问云栖社区&q ...

  8. ie 访问 java接口_2019年面试总结,100道Java程序员面试题(含答案)分享

    2019年即将结束,一边是大批同学涌入职场,另一边是大群职场人打算跳槽,在这个重要的节点,Java程序员如何才能把握时机,搞定面试官,拿到一份心仪的工作呢? 除了掌握扎实的专业技能之外,你还需要一份& ...

  9. 漫谈程序员系列:一张图道尽程序员的出路

    <推背图>相传由唐太宗时期的司天监李淳风和袁天罡合著(此两人其实是超级武学高手,参见小椴的<开唐>),推算大唐以后中国两千多年的国运盛衰,在中国七大预言书中居首,是当之无愧的中 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:小狗进圈
  2. 《强化学习周刊》第7期:强化学习应用之游戏
  3. CentOS 7 的 32 位版发布
  4. 计算机网络 | 网络基础 :网络协议,协议分层,数据封装与分用,地址管理,字节序
  5. xp系统qq安装不上网络连接服务器,winxp系统下QQ远程协助连不上如何解决
  6. Design layer interface的设计与实现
  7. 线程的三种创建方式以及代码实现
  8. 删除rz上传失败乱码的文件
  9. JAVA 创建学生类
  10. Java:cmd命令行中 错误: 找不到或无法加载主类(从原理出发讲解!)
  11. 面向对象 —— 类设计(十一)—— 构造与析构
  12. 在你的 Android App 中使用 Flutter | Google开发者大会
  13. 计算机无法连接此设备,[修复]目前,此硬件设备未连接到计算机(代码45) | MOS86...
  14. 如何将电脑上的音乐导入iphone,怎样将电脑音乐导入苹果手机中
  15. pcb焊接的一些技巧
  16. Microsoft project 2016 使用出现的bug
  17. Linux关于网络通信的命令
  18. CC00389.CloudKubernetes——|KuberNetesCI/CD.V27|——|Jenkins.v07|自动构建NodeJs应用.v01|
  19. Bose700降噪体验
  20. 心脏三维重构的调研报告

热门文章

  1. Leetcode 110.平衡二叉树
  2. 外网资源下载速度过慢的问题
  3. PyTorch 中如何指定GPU
  4. 古老的txt下传和txt上载
  5. Quartz+Topshelf 作业
  6. input里面check 状态检测
  7. 6. 分类图显示和保存
  8. HDU 1800 贪心
  9. 数据库设计三范式(3NF)
  10. Miller_Rabin测试法