程序员修炼之道: 务实的哲学

balus

2020-09-19

Preface

自接触编程以来,我看过的绝大部分书都是关于某项特定技术的,比如 C++ Primer深入理解 Nginx 以及 OS、网络等计算机专业课相关的。诚然,这些都是必备的,但是正式工作后,越来越感觉如何成长是一个至关重要的议题,而正好《程序员修炼之道》第二版发布了,所以打算看看这本书,而实际上书的确很棒,仅第一章里面就有许多地方我深有同感,不过许多地方我想的并不全面,也缺乏归纳总结这些思想的能力;还是先摘抄一些我喜欢的段落。

一、前言

编程是一门技艺。简单地说,就是让计算机做你想让它做的事情(或者是你的用户想让它做的事情)。作为一名程序员,你既在倾听,又在献策;既是传译,又行独裁;你试图捕获难以捉摸的需求,并找到一种表达它们的方式,以便仅靠一台机器就可以从容应付。你试着把工作记录成文档,以便他人理解;你试着将工作工程化,这样别人就能在其上有所建树;更重要的是,你试图在项目时钟的滴答声中完成所有的这些工作。你每天都在创造小奇迹。

你不应该拘泥于任何特定的技术,而应该拥有足够广泛的背景和经验基础,以便在特定的情况下选择合适的解决方案。你的背景来自对计算机科学基本原理的理解,而你的经验来自广泛的实际项目。理论结合实践会让你变得强大。

调整方法去寻找适应当前的情况和环境。对所有影响项目因素的相对重要性做出判断,并通过经验找到合适的解决方案。随着工作的进展,你要不断地这样做。务实的程序员不仅把工作做完,并且做得很好。

二、务实的哲学

务实的程序员的特质是什么?是他们面临问题时,在解决方案中透出的态度,风格以及理念。他们总是越过问题的表面,试着将问题放在更宽泛的上下文中综合考虑,从大局着想。毕竟,若不去了解来龙去脉,结合实际从何谈起?又怎能做出明智的妥协和合理的决策?

当你意识到自己在说“我不知道”时,一定要接着说“——但是我会去搞清楚”。用这样的方式来表达你的不知道是非常好的,因为接着你就可以像一个专家一样承担起责任。

不要只是因为一些东西非常危急,就去造成附带损害。破窗一扇都嫌太多。

批判性地分析你读到和听到的东西,问几个值得思考的问题: