发布于 2026-01-06 7 阅读
0

实用程序员:投资你的知识库 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

《实用程序员:投资你的知识库》

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

Coding Blocks刚刚推出了一系列关于我最喜欢的程序员书籍—— 《程序员修炼之道》的播客节目。讨论这本书帮助我理清了思路,希望你们也能从中受益匪浅。

听完节目后,请告诉我你是否能弄清楚如何判断你是在煮石头汤还是在煮青蛙。

以下是节目笔记节选:


第105集封面图

实用主义哲学

注:20周年纪念版将于5月8日进入测试阶段。

本书由程序员而非某些框架或语言的设计者撰写,介绍了软件开发的模式。

这本书从序言到结尾都充满了精彩之处:

  • 没有完美的工具、方法或解决方案。你必须根据具体情况选择最合适的部分。
    • 不要对任何特定的技术或工具产生过分的迷恋。
    • 运用你的经验,帮助选择适合任何具体情况的解决方案。
  • 务实的程序员能把工作做好。

本书面向那些希望成为更高效、更有能力的开发人员的人。

实用主义程序员的特质

你如何评价自己在这些方面的特质?

  • 早期采用者/快速适应者
    • 对尝试新技术充满热情,并且富有直觉。
    • 自信且能快速掌握新事物。
  • 好奇

    • 你会问很多问题,你想尽可能多地了解正在发生的事情。
  • 批判性思考者

    • 不要轻易接受别人说的话或说法。运用你的经验来思考问题。
  • 实际的

    • 你明白事情复杂时会面临什么,以及这对时间安排意味着什么。
  • 万事通

    • 即使你的实践领域非常集中/狭窄,你也要保持知识的广度。

尖端

  • 认真对待你的手艺。
  • 想想你的工作。
    • 时刻评估你正在做的事情以及为什么要做这件事。

很好的建议

  • 即使在大型团队中,也要尊重个性和精湛工艺。
  • 要不断努力提升和磨练自己的技能。

猫吃了我的源代码

“最大的弱点莫过于害怕显得软弱。” ——JB 博絮埃

  • 养成一种态度、风格和理念,在处理问题和解决问题时,始终着眼于大局。
  • 为自己的行为负责。
    • 即使你无法控制事情的方方面面,也要致力于把事情做好。
    • 但这并不意味着你必须承担全部责任。在“不可能”的情况下,是否承担责任完全取决于你自己的判断。
    • 承担责任就是接受问责。
    • 如果你犯了错误或者存在不足,要诚实并提出解决方案。
      • 供应商没来?你应该事先准备应急方案。不能把责任都推到他们身上。
  • 负责任并不意味着完美无缺。它意味着努力预防错误,并在出现问题时努力改正。
  • 要乐于改变,但同时也要谨慎。
  • 了解你的软件必须达到什么水平。定义一下什么才算足够好?

提示

  • 提供解决方案,而不是借口。
    • 用“橡皮鸭”式的表达方式。如果你要说的话听起来很蹩脚,那你最好省省力气,想想一些可能的解决方案。
    • 当你需要帮助或更多资源时,要坦诚承认。

软件熵

  • 熵是指系统中“无序”的程度。
  • 也称为“软件腐烂”。
    • 即使制定了最好的计划,并由最优秀的人员参与项目,项目仍然可能受到这种情况的影响。

提示

  • 不要住在破损的窗户旁。
    • 不要在代码中留下糟糕的决策或不好的代码。
    • 如果你没有时间彻底修复它,那就想办法打个补丁。
    • 疏于照管会加速腐烂,腐烂会滋生更多腐烂。
    • 不要让“其他代码都很烂”这种想法根深蒂固,否则它恶化的速度会超乎你的想象。
    • 保持代码库的整洁,能有效地防止其他人想要破坏它。
    • 如果你没有时间把事情做好,或许可以考虑“暂时搁置”,也就是把代码注释掉或者显示警告。

石头汤和煮青蛙

提示

  • 成为变革的催化剂

    • 谈论变革往往毫无意义。
    • 人们想要安排会议。
    • 然后需要管理层批准。
    • 准入门槛越来越高。
    • 这被称为“创业疲劳”
    • 开始朝着你认为需要改变的方向迈进,向人们展示你的行动,他们就会开始团结在你周围。
    • 人们更容易加入一个持续成功的群体。

提示

  • 要着眼大局,不要做沸水里的青蛙。
    • 要时刻关注周围发生的事情,否则你会对正在发生的事情视而不见,事情会在你不知不觉中开始恶化。

足够好的软件

  • 用户应该能够参与决定某件事是否足够好。
  • 您所创建的系统的范围和质量应包含在项目规范中。
  • 知道何时停止重复执行相同的代码非常重要。
    • 代码永远不可能完美,所以不要轻易改动。
    • 不要过度修饰或过度完善一个原本已经非常优秀的节目。

提示

  • 将质量作为一项必要条件。
    • 让用户现在就体验软件,将来可能会带来更好的软件整体效果,甚至比完善现有软件更好。
    • 今天的优秀软件胜过明天的完美软件。
    • 我们如何制定质量标准?测试覆盖率、代码审查、静态代码分析等等,或许可以考虑?

您的知识库

“对知识的投资总能带来最佳回报。” ——本杰明·富兰克林

  • 你的知识库是你通过编程获得的所有知识,包括技术知识和随着时间推移积累的特定领域知识。
  • 你的知识和经验是你最重要的职业资产……但它们是会过期的资产。
  • 把投资知识储备看作是像投资金融产品一样的投资:
    • 养成定期投资的习惯。
    • 多样化。
    • 管理风险。
    • 低买高卖。
    • 审查和重新平衡。

提示

  • 定期投资于你的知识库
    • 每年至少学习一门新语言。
    • 每个季度阅读一本技术书籍。
    • 也要读一些非技术类书籍。
    • 去上课。
    • 参与用户组。
    • 尝试不同的环境。
    • 订阅行业杂志、期刊、简报或类似刊物,随时了解最新资讯。
    • 加入并参与在线社区,阅读感兴趣的技术白皮书。
    • 时刻留意机会。如果你无法回答某个问题……千万不要放弃!

提示

  • 批判性地分析你所读到和听到的内容。
    • 要批判性地思考你所读到和听到的内容,不要把它当作真理。
    • 要提防狂热分子,或者任何自信地告诉你“正确道路”的人。

交流!

  • 如果不能沟通,想法就毫无价值。
  • 会议、工单、维基和代码都是沟通的形式。
  • 明白你想表达的意思。
    • 写下你的总体目标。
    • 要有计划地把它传达出去。
  • 了解你的受众。
    • 智慧(WISDOM)首字母缩写词:
    • 你想让他们学到什么
    • 他们的兴趣是什么
    • 它们有多复杂?
    • 他们想要多少细节?
    • 你想让谁拥有这些信息?
    • 如何才能他们听你的话?
  • 谨慎选择时机,并确保你所说的话与时俱进。
  • 用受众希望被沟通的方式与他们沟通。
  • 让你的信息看起来更吸引人。
    • 表达方式与内容本身同样重要。
    • 哪种更容易阅读?一整页的文本?还是分成若干部分并带有章节标题的两页文本?
  • 尽早并经常让人们参与到你的文档编写中来。
    • 让受众参与其中,可以建立关系并制作出更好的文档。
  • 要学会倾听。如果你不听别人说话,别人也不会听你的。
  • 一定要回复别人。人们讨厌你不回复,哪怕只是简单地回复一句“我稍后回复你”。

提示

  • 重要的既包括你说的话,也包括你说话的方式。

我们喜欢的资源

本周小贴士

  • 从 Git 获取你最喜欢的经典游戏的源代码。(GitHub
  • 使用《设计模式目录》了解所有你最喜欢的设计模式。(refactoring.guru
  • 学习一些你甚至不知道的 VS Code 小技巧。VS Code 居然还能做到这些?!vscodecandothat.com
  • 通过微软提供的这些自学实验来提升您的 Azure 技能:
文章来源:https://dev.to/_codingblocks/the-pragmatic-programmer-investing-in-your-knowledge-portfolio-2h6n