《实用程序员:投资你的知识库》
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
Coding Blocks刚刚推出了一系列关于我最喜欢的程序员书籍—— 《程序员修炼之道》的播客节目。讨论这本书帮助我理清了思路,希望你们也能从中受益匪浅。
听完节目后,请告诉我你是否能弄清楚如何判断你是在煮石头汤还是在煮青蛙。
以下是节目笔记节选:
实用主义哲学
本书由程序员而非某些框架或语言的设计者撰写,介绍了软件开发的模式。
这本书从序言到结尾都充满了精彩之处:
- 没有完美的工具、方法或解决方案。你必须根据具体情况选择最合适的部分。
- 不要对任何特定的技术或工具产生过分的迷恋。
- 运用你的经验,帮助选择适合任何具体情况的解决方案。
- 务实的程序员能把工作做好。
本书面向那些希望成为更高效、更有能力的开发人员的人。
实用主义程序员的特质
你如何评价自己在这些方面的特质?
- 早期采用者/快速适应者
- 对尝试新技术充满热情,并且富有直觉。
- 自信且能快速掌握新事物。
-
好奇
- 你会问很多问题,你想尽可能多地了解正在发生的事情。
-
批判性思考者
- 不要轻易接受别人说的话或说法。运用你的经验来思考问题。
-
实际的
- 你明白事情复杂时会面临什么,以及这对时间安排意味着什么。
-
万事通
- 即使你的实践领域非常集中/狭窄,你也要保持知识的广度。
尖端
- 认真对待你的手艺。
- 想想你的工作。
- 时刻评估你正在做的事情以及为什么要做这件事。
很好的建议
- 即使在大型团队中,也要尊重个性和精湛工艺。
- 要不断努力提升和磨练自己的技能。
猫吃了我的源代码
“最大的弱点莫过于害怕显得软弱。” ——JB 博絮埃
- 养成一种态度、风格和理念,在处理问题和解决问题时,始终着眼于大局。
- 为自己的行为负责。
- 即使你无法控制事情的方方面面,也要致力于把事情做好。
- 但这并不意味着你必须承担全部责任。在“不可能”的情况下,是否承担责任完全取决于你自己的判断。
- 承担责任就是接受问责。
- 如果你犯了错误或者存在不足,要诚实并提出解决方案。
- 供应商没来?你应该事先准备应急方案。不能把责任都推到他们身上。
- 负责任并不意味着完美无缺。它意味着努力预防错误,并在出现问题时努力改正。
- 要乐于改变,但同时也要谨慎。
- 了解你的软件必须达到什么水平。定义一下什么才算足够好?
提示
- 提供解决方案,而不是借口。
- 用“橡皮鸭”式的表达方式。如果你要说的话听起来很蹩脚,那你最好省省力气,想想一些可能的解决方案。
- 当你需要帮助或更多资源时,要坦诚承认。
软件熵
- 熵是指系统中“无序”的程度。
- 也称为“软件腐烂”。
- 即使制定了最好的计划,并由最优秀的人员参与项目,项目仍然可能受到这种情况的影响。
提示
- 不要住在破损的窗户旁。
- 不要在代码中留下糟糕的决策或不好的代码。
- 如果你没有时间彻底修复它,那就想办法打个补丁。
- 疏于照管会加速腐烂,腐烂会滋生更多腐烂。
- 不要让“其他代码都很烂”这种想法根深蒂固,否则它恶化的速度会超乎你的想象。
- 保持代码库的整洁,能有效地防止其他人想要破坏它。
- 如果你没有时间把事情做好,或许可以考虑“暂时搁置”,也就是把代码注释掉或者显示警告。
石头汤和煮青蛙
提示
-
成为变革的催化剂
- 谈论变革往往毫无意义。
- 人们想要安排会议。
- 然后需要管理层批准。
- 准入门槛越来越高。
- 这被称为“创业疲劳”。
- 开始朝着你认为需要改变的方向迈进,向人们展示你的行动,他们就会开始团结在你周围。
- 人们更容易加入一个持续成功的群体。
提示
- 要着眼大局,不要做沸水里的青蛙。
- 要时刻关注周围发生的事情,否则你会对正在发生的事情视而不见,事情会在你不知不觉中开始恶化。
足够好的软件
- 用户应该能够参与决定某件事是否足够好。
- 您所创建的系统的范围和质量应包含在项目规范中。
- 知道何时停止重复执行相同的代码非常重要。
- 代码永远不可能完美,所以不要轻易改动。
- 不要过度修饰或过度完善一个原本已经非常优秀的节目。
提示
- 将质量作为一项必要条件。
- 让用户现在就体验软件,将来可能会带来更好的软件整体效果,甚至比完善现有软件更好。
- 今天的优秀软件胜过明天的完美软件。
- 我们如何制定质量标准?测试覆盖率、代码审查、静态代码分析等等,或许可以考虑?
您的知识库
“对知识的投资总能带来最佳回报。” ——本杰明·富兰克林
- 你的知识库是你通过编程获得的所有知识,包括技术知识和随着时间推移积累的特定领域知识。
- 你的知识和经验是你最重要的职业资产……但它们是会过期的资产。
- 把投资知识储备看作是像投资金融产品一样的投资:
- 养成定期投资的习惯。
- 多样化。
- 管理风险。
- 低买高卖。
- 审查和重新平衡。
提示
- 定期投资于你的知识库
- 每年至少学习一门新语言。
- 每个季度阅读一本技术书籍。
- 也要读一些非技术类书籍。
- 去上课。
- 参与用户组。
- 尝试不同的环境。
- 订阅行业杂志、期刊、简报或类似刊物,随时了解最新资讯。
- 加入并参与在线社区,阅读感兴趣的技术白皮书。
- 时刻留意机会。如果你无法回答某个问题……千万不要放弃!
提示
- 批判性地分析你所读到和听到的内容。
- 要批判性地思考你所读到和听到的内容,不要把它当作真理。
- 要提防狂热分子,或者任何自信地告诉你“正确道路”的人。
交流!
- 如果不能沟通,想法就毫无价值。
- 会议、工单、维基和代码都是沟通的形式。
- 明白你想表达的意思。
- 写下你的总体目标。
- 要有计划地把它传达出去。
- 了解你的受众。
- 智慧(WISDOM)首字母缩写词:
- 你想让他们学到什么?
- 他们的兴趣是什么?
- 它们有多复杂?
- 他们想要多少细节?
- 你想让谁拥有这些信息?
- 如何才能让他们听你的话?
- 谨慎选择时机,并确保你所说的话与时俱进。
- 用受众希望被沟通的方式与他们沟通。
- 让你的信息看起来更吸引人。
- 表达方式与内容本身同样重要。
- 哪种更容易阅读?一整页的文本?还是分成若干部分并带有章节标题的两页文本?
- 尽早并经常让人们参与到你的文档编写中来。
- 让受众参与其中,可以建立关系并制作出更好的文档。
- 要学会倾听。如果你不听别人说话,别人也不会听你的。
- 一定要回复别人。人们讨厌你不回复,哪怕只是简单地回复一句“我稍后回复你”。
提示
- 重要的既包括你说的话,也包括你说话的方式。
我们喜欢的资源
- 《程序员修炼之道》(The Pragmatic Programmer),作者:Andrew Hunt、David Thomas(亚马逊)
- 实用书架(pragprog.com)
- 程序员构建错误:案例研究(谷歌案例)(static.googleusercontent.com)
- 破窗理论(维基百科)
- “破窗理论”如何加剧了警察与社区之间的紧张关系(www.wnyc.org)
本周小贴士
- 从 Git 获取你最喜欢的经典游戏的源代码。(GitHub)
- 使用《设计模式目录》了解所有你最喜欢的设计模式。(refactoring.guru)
- 学习一些你甚至不知道的 VS Code 小技巧。VS Code 居然还能做到这些?!(vscodecandothat.com)
- 通过微软提供的这些自学实验来提升您的 Azure 技能:
- 按照您自己的节奏学习所需的云技能( handsonlabs.microsoft.com )
- 欢迎来到自定进度实验室( www.microsoft.com )
