计算机行业是一个发展非常迅速的行业,技术可谓是日新月异。同样,书籍也是更迭不断。书龄在二十年以上的书,少之又少。如果还能一直保持畅销,那绝对是凤毛麟角。而 《程序员修炼之道》 绝对算是这些神品中不可或缺的一本。
最近当当在搞读书节,又成功骗我入坑,买了几本心仪已久的书。《程序员修炼之道·第2版》被我成功收入囊中。打开书本,只看目录就感觉可以值回书价了。99 条提示,字字珠玑,金科玉律。忍不住发篇水文,推波助澜,让其发扬光大。
务实的哲学 关注你的技艺
思考!思考你的工作
你有选择权
提供选择,别找借口
不要放任破窗
做推动变革的催化剂
牢记全景
将质量要求视为需求问题
对知识组合做定期投资
批判性地分析你读到和听到的东西
英语就是另一门编程语言
说什么和怎么说同样重要
把文档嵌进去,而不是拴在表面
务实的方法 优秀的设计比糟糕的设计更容易变更
DRY—不要重复自己
让复用变得更容易
消除不想搞事物之间的影响
不设最终决定
放弃追逐时尚
使用曳光弹找到目标
用原型学习
靠近问题域编程
通过估算来避免意外
根据代码不断迭代进度表
基础工具 将知识用纯文本保存
发挥 Shell 命令的威力
游刃有余地使用编辑器
永远使用版本控制
去解决问题,而不是责备
不要恐慌
修代码前先让代码在测试中失败
读一下那些该死的出错信息
“select”没出问题
不要假设,要证明
学习一门文本处理语言
务实的偏执 你无法写出完美的软件
通过契约进行设计
尽早崩溃
使用断言去预防不可能的事情
有始有终
在局部行动
小步前进——由始至终
避免占卜
宁折不弯 解耦代码让改变更容易
只管命令不要询问
不要链式调用方法
避免全局数据
如果全局唯一非常重要,那么将它包装到API 中
编程讲的是代码,而程序谈的是数据
不要囤积状态,传递下去
不要付继承税
尽量用接口来表达多态
用委托提供服务:“有一个”胜过“是一个”
利用 mixin 共享功能
使用外部配置参数化应用程序
并发 通过分析工作流来提高并发性
共享状态是不正确的状态
随机故障通常是并发问题
用角色实现并发性时不必共享状态
使用黑板来协调工作流
29 | 他们落地 OKR 都失败了,原因出在哪儿? 为何这家初创公司落地 OKR 失败了? 拿 OKR 当 KPI 用,只是通过 OKR 看结果,而忽略了 OKR 执行过程中的跟踪与复盘,最终导致 OKR 没用对,KPI 也没用好。
对于初创公司而言,生存固然重要,但成长也不可忽视,OKR 既能实现目标,又能关注成长。
为何这家传统企业落地 OKR 失败了? 为何这家互联网公司落地 OKR 失败了? 总结 没有充分理解 OKR 的核心概念,更没有真正体会到 OKR 的精髓,容易将 OKR 当 KPI 用。
当正确理解 OKR 后,就应该快速落地,并及时跟踪落地效果,持续收集员工反馈。
OKR 的本质就是简单,所以没必要让 OKR 落地变得复杂,无需与流程和制度相绑定。
30 | 用什么工具,能加强OKR落地效果? OKR 初步落地,用什么工具? 与“表格”相比,我更倾向于“看板”,不是电子看板,而是实体看板,需要将它固定在墙上,而且办公区域内,越多的同事看到它越好。
看板使得 OKR 的价值发挥到了极致。
第一,OKR 看板让文化变得公开透明。
第二,OKR 看板能激励自己努力执行。
第三,OKR 看板能影响他人改变行为。
OKR 看板才是初步落地 OKR 的必备神器。
OKR 初见成效,用什么工具? 每周工作结束后,在公司范围内发布“OKR 周报”,在周报中列出本周在 OKR 中要完成进度的人和事,写得越具体越好。
15 | 技术团队真的是“成本中心”吗?如何改变这一现状? 如何体现技术团队的价值? 要回答技术团队如何产生价值的问题,首先要让同事们知道工程师们每天到底在做什么。
除了在技术团队核心工作方面来体现价值以外,你还需要在日常的项目中体现技术团队的价值。
如何使用 OKR 体现项目价值? Why:为何我们要做这个项目,这个项目主要是为了解决什么问题?
What:对于项目所解决的问题而言,它所能产生的价值到底有多大?
How:项目上线后,是否能够有效地去验证项目的价值?如何验证?
技术团队所交付项目的价值。
如何持续地体现技术团队价值? 不要告诉工程师们应该做些什么,更不要告诉他们应该怎么去做,而要告诉他们为什么要做。
O 的完成率是其下每个 KR 完成率的平均值。
对于曾经做过的项目所产生的价值,你还需要阶段性地向你的上级领导汇报,从而建立领导和你之间的信任,这同样也能体现技术团队的价值。
总结 一些技巧:
项目 OKR 无需你一个人来制定,你需要与协作伙伴们共同来完成。
通过“引导式”提问方法,让你的伙伴们认可通过 OKR 来验证项目价值的方法。
持续体现技术团队价值,通过定期向大家同步项目 OKR 完成率,这个方法值得尝试。
16 | 大家都说“向上管理”很重要,你想学一些“套路”吗? 向下管理指的是管理自己的团队等; 向上管理指的是与自己的领导有效沟通; 横向管理指的是与自己的跨部门同事进行工作协同。
向上管理,到底管理的是什么? 问题 为何与自己的领导一言不合,就会选择离职呢?其根本原因还是在于自己和领导之间的沟通出现了问题。
实质 向上管理,管理的其实是领导对你的期望。
难点 员工想要的是更深层次理解领导的想法和要求,领导想要的是让员工能尽可能地按照自己的想法和要求去执行。
如何让双方的沟通变得更加有效? 案例展示 老板参加阿里回来,要求996。
案例分析 如果你现在已经掌握了 OKR 使用方法,那么就能将其上升到“OKR 思维”层面了,建立与领导之间的有效沟通,从而实现向上管理。
如何使用“OKR 思维”进行向上管理? OKR 应该是一种思维,当你需要进行向上管理时,OKR 是你和领导的“共同语言”。
总结 做一名“被领导者”,需要发挥自己的智慧,充分挖掘出领导对你的期望。
产品经理管理的是用户对产品的期望,你需要管理的是领导对你的期望。
OKR 是一种管理思维,只要双方认可 OKR 的价值,就能快速达成共识。
17 | 跨部门协同费劲,沟通效率低,如何粉碎“部门墙”? 企业内部之间存在一堵无形的“墙”,它阻碍着跨部门协同,阻碍着各部门之间信息传递和工作交流,我们称这堵墙为“部门墙”,正是由于“部门墙”的产生,才导致公司缺乏执行效率,战略无法迅速落地。
08 | 如何轻松制定OKR?方法原来如此简单 你制定的 O 对不对? O 是 OKR 中“What”的层面,它解决了“做什么”的问题。
O 最核心的特性就一定在于它对组织、团队、个人所能提供的价值上:
对于组织目标而言,当一位 CEO 制定组织目标时,他需要结合企业战略规划来制定 OKR,他所制定的 O 就必须具备商业价值。
如果你是团队负责人,那么你一定要考虑:怎样的 O 能帮助你的团队产生价值。
综上所述,在制定 O 时,你需要注意以下三条核心原则:
O 要有实际价值,你要深度思考。
O 要能激励人心,你要善于表达。
O 要短期可实现,你要脚踏实地。
分享三条注意事项:
O 尽可能要以动词形式开头。例如:打造……、建设……、实现……。
O 用通俗易懂的语言来表达。一定不要写一些自认为“高大上”的词汇,除非大家理解上都可以达成一致。
O 最好能附上一句目标描述。建议为 O 增加一句话描述,就“为何我要写这个目标?”这一问题,来向大家讲解。
你制定的 KR 好不好? KR 是针对 OKR 中“How”的层面,它解决了具体“怎么做”的问题。
具体数字
数字范围
“里程碑”事件
不得不承认一个事实:恰到好处制定 KR 这件事本身就有一定挑战性。我的建议是,制定 KR 的挑战,你跳一跳就能够得着,后面再不断给自己提更高的要求。
关于制定 KR,你需要遵循的三条核心原则,我按照重要程度依次列出来:
KR 要支撑目标,需要与 O 直接关联。
KR 用数据说话,需要通过数据去度量。
KR 具备挑战性,难易度设置需要恰到好处。
除了 KR 制定的三条核心原则以外,我也想告诉你关于 KR 的三点注意事项:
01 | 你想要快速理解OKR吗?看这篇文章就够了 越来越火的 OKR 究竟是什么? OKR 是一款目标管理工具,它由 Objectives(目标)和 Key Results(关键结果)两部分构成。同时,OKR 也被称为“目标与关键结果工作法”,简称为“OKR 工作法”。OKR 是融合了一系列框架、方法和哲学后的产物,它起源于 Intel,发展于 Google。
可以把 OKR 中的 O 想象成一个你想要去的最终目的地,它时刻为你指明前进的方向,此外,可以把 KR 想象成一个带有距离标记的路标,它时刻告诉你距离目的地还有多远。
OKR 是一种融入了人性的科学管理框架。OKR 绝不是一款简单的目标管理工具,它充满了人性和智慧。
你为什么需要 OKR? OKR 使方向更加聚焦 OKR 恰恰能够解决短期目标的实现问题,让目标更加聚焦,让行动脚踏实地,通过完成 KR 从而实现 O,这也正是 OKR 的基本原理。
为了让目标更加聚焦,因此在制定 O 的时候就需要考虑“做减法”,不要贪多求广,在资源有限的前提下,我们只有集中优势“兵力”,才能逐个歼灭“敌人”。
OKR 使沟通更加透明 《孙子兵法》云“上下同欲者胜”。
CEO 首先制定“公司 OKR”,即组织目标,并将组织目标与部门负责人沟通。
部门负责人再去制定“部门 OKR”,即团队目标,并将团队目标与组织目标对齐,与 CEO 确认后再与员工沟通。
各个员工充分理解了团队目标后,再去制定自己的“员工 OKR”,即个人目标,并将个人目标与团队目标对齐,并与团队负责人确认。
OKR 使激励更加有效 除了金钱等物质激励以外,最有效的激励方式莫过于“成长”和“认可”,而且精神激励往往比物质激励产生的激励效果更持久。
如何更有效地使用 OKR? 对于 O,你需要做到以下三点:
方向明确:目标不能太抽象,也不能含混不清,要让每个人都能看得懂。
目标对齐:下级要对齐上级的目标,即向上对齐,平级还要相互对齐,即水平对齐。
时间限制:目标需要有时间边界,不能遥遥无期,而且时间边界要恰到好处。
对于 KR,你同样需要做到三点:
有挑战性:关键结果要有挑战性,拒绝平庸,拒绝不切实际,要做到“跳一跳,就能够得着”。
容易度量:无法度量的关键结果是没有任何意义的,宁可抛弃。
不是任务:关键结果需要对目标产生直接影响,它不是日常任务,也不是行动计划。