程序员进阶攻略

这是我在 《极客时间_程序员进阶攻略》 – 胡峰(感谢胡老师的分享,让我懂得了更多)记录的笔记,分享跟各位。更多的看似更像毒鸡汤,但代码是不会玩煽情的,如果你看到本页,请认真读完并去理解他的每句话。

  1. 赫伯特·西蒙说:“当你无法获得决策所需的所有信息时,不要追求最优决策,而要追求满意决策。

  2. 我不停的擦拭手中的利剑,不是因为我喜欢它,也不是因为它能带来安全,只是因为,每当下一次冲锋的号角响起时,我能够迅速拔出,纵横厮杀,直至战斗结束,不让自己倒下。

  3. 而实现中重构与优化的动作则是在不断进行减“熵”,作出平衡,让系统的“熵”值在安全的范围内波动。

  4. 相对于建筑架构,软件架构过程其实更像是城市的规划与演变过程。有一定历史的城市,慢慢都会演变出所谓的旧城和新城。而新城相对于旧城,就是一次架构升级的过程。

  5. 而《设计模式》一书借鉴了建筑领域的定义和形式

  6. 模式是前人解决某类问题方式的总结,是一种解决问题域的优化路径。

  7. 框架,既是钥匙,也是枷锁,既解放了我们,也束缚着我们。

  8. 有时,即使是日常高频使用的产品背后的需求,你也未必能很好地理解清楚,而更多的业务系统其实离你的生活更远,努力去理解业务及其背后用户的真实需求,才是写好功能代码的基本能力。

  9. 控制代码,是控制业务功能逻辑代码执行的代码,即业务逻辑的执行策略。

  10. 运维代码,就是方便程序检测、诊断和运行时处理的代码。它们的存在,才让系统具备了真正工业级的可运维性。

  11. 功能、控制、运维,三类代码,在现实的开发场景中优先级这样依次排序。有时你可能仅仅完成了第一类功能代码就迫于各种压力上线发布了,但你要在内心谨记,少了后两类代码,将来都会是负债,甚至是灾难。而一个满足工业级强度的程序系统,这三类代码,一个也不能少。

  12. 而在程序这个理性世界中,优雅有时就是边界与距离。

  13. 一个典型的粗放式编程场景大概是这样的:需求到开发手上后,开始编码,编码完成,人肉测试,没问题后快速发布到线上,然后进入下一个迭代。

  14. 在通往 “更好” 的路上,总会经过 “更多” 这条路。

  15. 好不是完美,好是一个过程,一个不断精益化的过程。

  16. 炫技是因为你想表达得不一样,就像平常说话,你要故意说得引经据典去彰显自己有文化,但其实效果不一定佳,因为我们更需要的是平实、易懂的表达。

  17. 克制的编码,是每次写完代码,需要去反思和提炼它,代码应当是直观的,可读的,高效的。

  18. 克制的代码,是即使站在远远的地方去看屏幕上的代码,甚至看不清代码的具体内容时,也能感受到它的结构是干净整齐的,而非 “意大利面条” 似的混乱无序。

  19. 克制的重构,是每次看到 “坏” 代码不是立刻就动手去改,而是先标记圈定它,然后通读代码,掌握全局,重新设计,最后再等待一个合适的时机,来一气呵成地完成重构。

  20. 随着微服务架构的流行,倒是提供了另一种解决方案:每个服务对应一个唯一的负责人(Owner)。长期由一个人来维护的代码,就不会那么容易腐烂,因为一个人不存在沟通问题。而一个人所能 “达” 到的层次,完全由个人的经验水平和追求来决定。

  21. 运行环境发生变化,程序就出现异常的现象,我称其为 “程序过敏反应”。

  22. 粗心大意,可以通过开发规范、代码风格、流程约束,代码评审和工具检查等工程手段来加以避免。

  23. 建立和维护有利于程序员及时暴露并修正错误,挑战权威和主动改善系统的低权力距离文化氛围,这其实就是推崇扁平化管理和 “工程师文化” 的关键所在

  24. 关于后悔,有研究说:“我们最后悔的是没做什么,而不是做过什么。”

  25. 计划才能给你真正的自由,你对计划的控制力越强,离自由也就更近了

  26. 要获得好的结果,你就要做第一类人,需要对自己有更高的期望,需要有自驱力。

  27. 生活也许不会像计划那样发生,但对待生活的态度可以是:期待伟大的事情发生,同时也要保持快乐和幸福,即使它没能发生。

  28. 匀速奔跑的人是那些可以耐住寂寞的人,试想当你按照自己的节奏持之以恒默默努力地去做一件事情时,是极少会有伙伴同行的,因为大家的节奏各不一样,即便偶尔会有也只是陪你走过一段。

  29. 注意力是一种有限的资源,你要是不擅长不集中注意力,你就不擅长集中注意力。

  30. 信息过载是现实;疲于奔命是陷阱;心智模型是方法;一击中的是策略。

  31. 也就是说,好产品或好结果并不能成为支点,不断产出好结果或好产品的 “体系流水线” 才是。

  32. 工作陷入了循环与重复,从此停止了成长。

  33. 而从完成到追求品质和完美的路上,不仅仅是靠工作实践的经验积累,还需要有意识地持续学习。

  34. 如果你要构建一个习惯,就要运用好基因中本已存在的关于 “采集和狩猎” 的本能:高度专注,跨出边界,持续交付

  35. 试一试,是走出舒适区的一次行动,这本是一个好的出发点,但若只有一个模糊的终点,那么它带来的更可能就是无谓的浪费。

  36. 当遇到暂时没有答案的问题时,先记录下来

  37. 为何而问?获得答案,认清自我,选择自己的价值之道。

  38. 确定一个产品的目标、定位,以及面向的读者人群

  39. 想一个你关心,其他人也会关心的话题来写。要记住,不论你用多么发自肺腑的情感表达,对于读者来说,除非是他们真正关心的主题,不然怎么都不会太关心,而只有主题才是读者最真切的关注点。所以,关注你的主题,而不是想办法去显摆自己的文字。

  40. 写文字和编码在实现层面最大的差异是:实现过程的技能和要求不同。

  41. 日复一日地保持这样的作息时间、这样的重复过程,据称能帮助其进入一种思维的深层状态。

  42. 一场演讲,包括前期准备和现场发挥两个阶段,而前期充分的准备是现场良好发挥的基础。

  43. 带好了徒弟,接手并取代了你当前正在做的事情,你才有可能解放出来去做更高层次和更大维度的事情

  44. 学习和成长是自己的事,严肃待之,行动起来,自助者,人亦助之

  45. 系统思维洞察问题本质,科学思维发现最优解法。

  46. 去做值钱的事,打造值钱的结构,从知识结构、技能结构到作品结构

  47. 走众争之路,拼的是努力,只能成为平均的普通人;

  48. 走少有人走的路,拼的是选择、勇气和毅力,可以让你遇见独特的风景,为稀缺的机会创造可能性

  49. 走独一无二的路,真的是要拼天赋了。

  50. 不是通过努力工作来过上想要的生活,而是先设定了想要的生活,自然而然工作就会成为生活中合适的一部分

  51. 人,似乎不犯一些错,就成长不了,也许这就是成长的成本。

  52. 每一次重构,都是对以前自己的否定,而每一次否定又都是一次成长

  53. 走向专家之路,就是精确地找到、建立你的领域,并不断推高壁垒和扩大边界的过程

  54. 成就 = 成功率 x 事情的量级 x 做事的速度


程序员进阶攻略