编写代码,余生都要支持它
Write Code as If You Had to Support It for the Rest of Your Life
你可能会问97个人程序员应该知道什么并且如何做,可能你会得到97种不同答案。这可能会同时令人迷茫和生畏。所有的建议都是好的,所有的原则都是正确的,所有的故事都很引人注目,那么你要从哪里开始?更重要的是,一旦你开始,你又如何保持最佳的学习实践,如何确保它们能被集成进你的编程实践中呢?
Write Code as If You Had to Support It for the Rest of Your Life
你可能会问97个人程序员应该知道什么并且如何做,可能你会得到97种不同答案。这可能会同时令人迷茫和生畏。所有的建议都是好的,所有的原则都是正确的,所有的故事都很引人注目,那么你要从哪里开始?更重要的是,一旦你开始,你又如何保持最佳的学习实践,如何确保它们能被集成进你的编程实践中呢?
When Programmers and Testers Collaborate
当测试员和程序员开始合作后会有一些奇妙的事情发生。通过缺陷追踪系统来回发送bug所花费的时间更少。浪费在争论这是一个bug还是一个feature的时间会更少,而更多的时间则用于开发出消费者可期的良好软件。在开始写代码之前的合作将会产生很多机遇。
WET Dilutes Performance Bottlenecks
DRY原则(Don’t Repeat Yourself)的重要性是它整理了这样一个概念:系统中的每个知识片段都应该有单一的表现形式。换而言之,每个知识点应该被包含在单独的实现中。DRY的对立面是WET(Write Every Time)。当知识点被整理在几个不同的实现中,我们的代码就是WET的。当你考虑DRY和WET的性能曲线的多种影响时,它们之间的对比就会非常明显。
Verbose Logging Will Disturb Your Sleep
当我遇到一个已经开发并在生产环境跑了一段时间的系统时,我最怕的就是那个脏日志。你知道我在说什么:当点击web页面上那个单连接,系统就会反馈犹如潮水般的日志消息出来。可过多的日志根本没什么用。
Use the Right Algorithm and Data Structure
一家用于众多分行的大型银行他们给出纳新采购的电脑实在太慢了。那个时候还没有电子银行,也不想现在到处都是ATM机。人们会经常去银行办理业务,由于电脑慢导致人们排起长队。因此,这家银行向供应商威胁要终止合同。
The Unix Tools Are Your Friends
如果我被放逐沙漠,不得不在IDE和Unix工具箱之间做出选择,我会毫不犹豫选择Unix工具。这就是你应该熟练掌握Unix工具的原因。
首先,IDE用于特定语言,但Unix工具可运行于任何以文本形式出现的事物。现如今的开发环境,每年都会涌现出新的语言和符号,学习在Unix环境下工作将是一种复利投资。
Ubuntu Coding for Your Friends
很常见,我们独立写的代码,这些代码就会折射出我们个人对问题的理解,以及非常个人的解决方案。我们可能是团队的一份子,但我们在团队中也是独立的。这就让我们很容易忘记这些独立编写的代码会被其他人执行、应用、扩展以及依赖。这很容易忽略掉软件创造的社交方面。创建软件是一项技术活动,它与社会活动混合在一起。我们只需要经常抬头去想,我们并不是在独立的工作,我们有责任为每个人而不是开发团队,增加成功的可能性。
Two Wrongs Can Make a Right (and Are Difficult to Fix)
代码时不会说谎的,但它会自相矛盾。有些矛盾还会导致“这怎么可能跑得起来?”的时刻。
在一次采访中,阿波罗11号月球模块的首席设计师,Allan Klumpp透露,控制引擎的软件有个会导致着陆舱不稳定的bug。然而,另一个bug却弥补了它,在这些bug被发现并修复之前,软件都被应用于阿波罗11和12号登月。
Two Heads Are Often Better than One
程序员需要思考,思考需要独处。所以这成了对程序员的刻板印象。
这种“孤狼”的编程方法可以被一种更具合作性的方法取代。我认为这可以提高程序员的质量、生产率、以及工作成就感。这种方法还可以让开发者的工作更接近于其他人以及非技术人员——商业和系统分析师、质量保证专家,以及用户。
现实世界中的人们与状态有种奇怪的关系。那天一早,我在当地一家商店门口停了下来,为新一天将咖啡因转化为代码作准备。由于我喜欢喝点拿铁再干活,但我找不到牛奶,我就问店员。
“抱歉,我们是大骗子,没有牛奶了。”