《代码精进之道:从码农到工匠》读书笔记(思想篇)

思想篇:

八、抽象
  1. 按照维基百科上的解释,抽象是指为了某种目的,对一个概念或一种现象包含的信息进行过滤,移除不相关的信息,只保留与某种最终目的相关的信息。
    从另一个角度看,抽象就是简化事物,抓住事物本质的过程。

  2. 抽象帮助我们将现实世界的对象抽象成类,完成从现实世界的概念到计算机世界的模型的映射。

  3. 面向对象的思想主要包括3个方面:面向对象的分析(Object Oriented Analysis,OOA)、面向对象的设计(Object Oriented Design,OOD),以及我们经常提到的面向对象的编程(Object Oriented Programming,OOP)。

  4. 简单来说,抽象的过程就是合并同类项、归并分类和寻找共性的过程。也就是将有内在逻辑关系的事物放在一起,然后给这个分类进行命名,这个名字就代表了这组分类的抽象。

  5. 在开发工作中,很多时候就需要通过抽象层次的提升来提高代码的可读性和通用性。

  6. 为什么阅读书籍比看电视更好呢?因为图像比文字更加具象,阅读的过程可以锻炼我们的抽象能力、想象能力,而看画面时你的大脑会被铺满,较少需要抽象和想象。

  7. 做总结最好的方式就是写文章,小到博文,大到一本书,都是锻炼自己抽象思维和结构化思维的机会。记录也是很好的总结习惯。以读书笔记来说,最好不要原文摘录书中的内容,而是要用自己的话总结归纳,这样不仅可以加深理解,还可以提升自己的抽象思维能力。

  8. 对于技术人员来说,还有一个非常好的提升抽象能力的手段——领域建模。当我们对问题域进行分析、整理和抽象时,或对领域进行划分和建模时,实际上都是在锻炼我们的抽象能力。

九、分治
  1. “分”就是递归地将原问题分解成小问题;“治”则是在解决了各个小问题(各个击破)之后合并小问题的解,从而得到整个问题的解。

  2. 分治法解题的一般步骤如下。
    (1)分解:将要解决的问题划分成若干规模较小的同类问题。
    (2)求解:当子问题划分得足够小时,用较简单的方法解决。
    (3)合并:按原问题的要求,将子问题的解逐层合并,构成原问题的解。

  3. 关于函数分解,在此强调以下两点。
    (1)函数长短是职责单一的充分不必要条件,也就是长函数往往意味着职责不单一,但是短函数也不一定就意味着职责单一。
    (2)在使用组合函数模式时,要注意抽象层次一致性原则(Single Level ofAbstration Principle,SLAP),不同抽象层次的内容放在一起会给人凌乱、逻辑不协调的感觉。

  4. 优雅的代码很少是一次成形的,大部分情况下要经过两次创造:第一遍实现功能,第二遍重构优化。

  5. 重构优化,即在第一遍实现功能的基础上,看一看是否可以做得更好:命名合理吗?职责单一吗?满足OCP吗?函数是否过长?抽象是否合理?

  6. 分层架构的目的是通过分离关注点来降低系统的复杂度,同时满足单一职责、高内聚、低耦合、提高可复用性和降低维护成本,也是一种典型的分治思想。

  7. 所谓竖切,就是按照领域将单体数据库拆分成多个数据库。比如,原来电商数据都是放在一个库中,我们可以按照领域拆分成商品库、会员库、交易库等。

  8. 横切是通过一种数据路由算法对数据进行分片,从而减少一个数据库中的数据量。比如,我们要将会员的交易数据切分成10个库,可以用userId对10进行取模。

十、技术人的素养
  1. 不教条
  1. 批判性思维
  • 批判性思维(Critical Thinking)是一种谨慎运用推理去断定一个断言是否为真的能力。它要求我们保持思考的自主性和逻辑的严密性,不被动地全盘接受,也不刻意地带着偏见去驳斥一个观点。
  • 尼尔·布朗写的被誉为批判性思维领域经典读物的《学会提问》,另一本是樊登读书会推荐的《思辨与立场:生活中无处不在的批判性思维工具》
  1. 成长型思维
  • 越挫越勇,把每一次失败都当成学习的机会。
  • 具有成长型思维的人相信自己可以通过学习来提升自我,相信学习和成长的力量,相信努力可以改变智力和能力。
  • 我们需要具备成长型思维才能应对工作和生活中的压力,这样在遇到问题时,我们才不会轻言放弃,而是会积极主动地去学习,去寻找解决方案。
  1. 结构化思维
  • 结构化思维的定义就是“逻辑+套路”。

  • 所谓逻辑,是指结构之间必须是有逻辑关系的。

  • 组织思想的逻辑只有4种。
    (1)演绎顺序:比如“大前提、小前提、结论”的演绎推理方式就是演绎顺序的。
    (2)时间(步骤)顺序:比如“第一、第二、第三”和“首先、再者、然后”等,大多数的时间顺序同时也是因果顺序。
    (3)空间(结构)顺序:比如“前端、后端、数据”和“波士顿、纽约、华盛顿”等,化整为零(将整体分解为部分)等都是空间顺序。在做空间分解时,要注意满足“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE)原则。
    (4)程度(重要性)顺序:比如“最重要、次重要、不重要”等。

  • 套路是指我们解决问题的方法论、路径和经验。

  • 逻辑是一种能力,而套路是方法论、经验;逻辑属于道,而方法论属于术。二者都很重要,只有熟练地掌握二者,我们才能有更好的结构化思维。

  • 最清晰和实用的结构化表达是“提出问题,定义问题,分析问题,解决问题,最后展望未来”。

5 工具化思维

  • 偷懒也有高低之分,可以分为3个境界。
    (1)最差的境界是“实在懒”,拖延不喜欢的任务。
    (2)其次是“开明懒”,迅速做完不喜欢的任务,以摆脱之。
    (3)最高的境界是“智慧懒”,编写某个工具来完成不喜欢的任务,以便再也不用做这样的事情了,从而一劳永逸。
  • “硬干”或“苦干”并没有带着光环,而是一种徒劳、低效、大可不必的努力,只会说明你做事情很急切,但并不是在完成工作。人们容易混淆行动与进展、混淆忙碌与多产的概念。
  • 在有效的工作中,最重要的是思考,而人在思考时通常看上去不会很忙。如果和我共事的程序员总是忙个不停,我会认为他并非优秀的程序员,因为他没用最有价值的工具——自己的大脑。
  • 每当你重复同样的工作3次以上,就应该停下来问问自己:我是不是可以通过自动化脚本、配置化,或者小工具来帮助自己提效?

6 好奇心

  • 好奇心是学习的起点,是创新的原动力。我们每个人都应该像小孩子一样保持对知识的渴望,对世界的惊奇。

7 记笔记

  • 首先,做笔记的人基本都是持续学习的人;其次,记录本身也有很多好处。
    (1)知识内化:记笔记的过程是一个归纳整理、再理解、再吸收的过程,可以加深我们对知识的理解。
    (2)形成知识体系:零散的知识很容易被遗忘,而形成知识体系之后,知识之间就能有更强的连接。
    (3)方便回顾:笔记就像我们的硬盘,当缓存失效后,我们依然可以通过硬盘调回,保证知识不丢失。
  • (1)使用云笔记:云笔记要能在多端使用,要有目录的层次结构、标签和搜索功能。如果有些场合只能用笔做记录,也没关系,回来之后再整理到云笔记上。
    (2)归类分组:要定期回顾笔记内容,尽量按照合理的方式对笔记进行重组,形成一个有逻辑关系的树形结构。这样既方便记忆检索,也可以逐渐形成自己的知识体系。对于归于A组或B组都没错的笔记,可以使用标签来辅助分类。
    (3)不要复制粘贴:好的笔记最好是自己消化后的总结,而不是简单的照抄。如果有引用和参考,建议把链接也放在笔记下面,方便溯源。
    (4)结构化表达:对于简短的内容要重点突出,粗体显示重点部分;对于篇幅较长的内容,最好有目录,这样可以更加结构化地呈现笔记内容。

8 有目标

  • “你要做一个什么样的人”并不是一个可有可无的次要问题,而是首先要回答的头等大问题。
  • 先想清楚目标,然后努力实现。不管是人生大问题,还是阶段性要完成的事情,都需要目标清晰、有的放矢。
  • 在这个信息爆炸的时代,如果只是碎片化地接收各个公众号推送的文章,学习效果几乎可以忽略不计。在学习之前,我们一定要问自己,这次学习的目标是什么?

9 选择的自由

  • 自由是一种价值观,是一种为自己过去、现在及未来的行为负责的价值观。自由是一种责任,是一种敢于做出选择,并愿意为自己的选择承担后果的责任。
  • 责任感(Responsible),从构词法来说是“能够回应(Response—able)”的意思,即选择回应的能力。
  • 积极主动的人有选择的自由,而消极被动的人往往是被动地接受影响,忘记了自己的主观能动性,忘记了在刺激和回应之间还有选择的自由
  • 但凡成大事者,都能够“处乱世而不惊,临虚空而不惧,喜迎阴晴圆缺,笑傲雨雪风霜”。正因为他们是自己思维的主人,而不是被思维所控制,他们知道不管身处什么样的境地,都有“选择的自由”。

10 平和的心态

  • 首先,我们做事情的出发点必须是善的。其次,“有为的事”是指要认真做事,认真生活;“无为的心”代表一种平和的心态,一种活在当下的智慧。也就是做事要积极,但是心态要放平。
  • 真正平和的人了解自己所有的主观感受都只是一瞬间的波动。虽然疼痛,但不再感到悲惨;虽然愉悦,但不再干扰心灵的平静。于是,心灵变得一片澄明、自在。心灵平静的力量十分强大,那些穷极一生疯狂追求愉悦心情的人完全难以想象。

11 精进

  • 精进就是你每天必须进步一点点!


    image.png
  • 巴菲特说:“人生就像滚雪球,关键是要找到足够湿的雪,和足够长的坡。”
  • 但凡能持续学习和精进的人,其结果都不会差。
十一、技术Leader的修养
技术氛围
  • 代码好坏味道
  • 技术分享
  • CR周报
  • 读书会
目标管理
  • 一个好的Leader,应该是愿意花时间和下属一起讨论、制定目标的。在过程中,给予帮助和指导,及时对焦纠偏,确保目标的达成。
  • 目标管理的常见手段有关键绩效指标(Key Performance Index,KPI)和目标与关键成果(Objectives Key Results,OKR)两种方法。相比较而言,一味地追求KPI,可能会导致短视;OKR更注重短期利益和长期战略之间的平衡。
  • OKR主要有如下两个特点。
    (1)OKR可以不和绩效挂钩,主要强调沟通和方向。
    (2)OKR比KPI多了一个层级的概念,O(Objective)是要有野心的、有一定的模糊性,但是KR(Key Results)需要是可量化的,并且KR一定要为O服务,不能偏离O的方向。
  • SMART原则 : S代表Specific,表示指标要具体;M代表Measurable,表示指标要可衡量;A代表Attainable,表示指标是有可能达成的;R代表Relevant,表示KR和O要有一定的相关性;最后,T代表Time bound,表示指标必须具有明确的截止期限。
  • OKR中的目标必须是有野心的。因为只有高远的目标,才能最大程度地激发人的潜能。
技术规划
  • 技术规划更多的是从团队视角去看接下来要做的事情,而目标管理是要把规划要做的事情进行拆解,和个人目标对齐。
  • 第一层问题解决是最直接的,主要看团队中现在有什么迫切、紧急的问题需要解决,有哪些坑要去填。
  • 技术领域要做的是在这些常规领域中,根据业务情况和团队情况选择一些领域和命题(比如稳定、性能、效率等),并在这些命题和方向中根据优先级做判断。
  • 让业务先赢是技术的首要使命。
  • 作为技术团队,我们要对比团队内外技术的异同,最终圈定一个差异化区域。这块区域是团队的特色技术,是团队借外力之外要修内功的部分,是不依赖别人而主要靠自己突破的部分,是团队相比外面的差异化竞争力。
推理阶梯
  • “推理阶梯”的发生会经历以下步骤。:
    (1)收集数据
    (2)选择性接收数据
    (3)做出假设,得出结论,采取行动
Leader和Manager的区别
  • Manager是管理事务,是控制和权威;而Leader是领导人心,是引领和激发。
  • 技术Leader是专业性非常强的工作。技术Leader区别于其他Leader之处是你不仅要“以德服人”,还要“以技服人”。
视人为人
  • 俗话说“做事先做人”,我们唯有尊重自己,尊重他人,视人为人,视己为人,对团队倾注感情,和团队成员建立信任关系,才有可能做一个好Leader。
  • 我们做事情的出发点必须要是正的、善的。在这个大前提下,我们可以积极地拓展自己的人脉关系和影响力。
  • 视人为人不仅是和他人处好关系,也是一种原则和勇气。
  • 对待上级——有胆量。对待平级——有肺腑。对待下级——有心肝。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345