自由/开源软件开发者Joey Hess的采访

原文地址(original source):https://zgrimshell.github.io/interviews-with-floss-developers-joey-hess/

很难有一种更好的方式就自由/开源软件项目背后的开发者展开一些列的采访,他们有着难以置信的思维,比如Joey Hess。对于他在自由软件生态系统上的贡献,特别是Debian上的贡献,要用笔触来写的话,本身将是一部书。他的影响甚至超过了其项目——人们直接关注他的博客文章来留意他在做什么以及过得怎么样。一名来自小木屋的hacker。如果你真的需要对真正hacker有个印象,那么Joey就是代表。由于本文不是一部书,我将只提到他已经参与到背后的几个项目——git-annex、ikiwiki、etckeeper、debian installer、部分dpkg、debhelper、devscripts和taskel。就这么多吧。

Joey Hess, Debian

我:给大家打个招呼?

Joeyh:我是Joey,个人网站是 https://joeyh.name/

我:你是如何开始编程的?

Joeyh:Atari...

年轻开发者的那些伤心事

这是关于一位有激情的年轻开发者的、几乎真实的故事。在2004年年末,他开始在一家小公司上班,这家公司有他想要的一切:丰厚的薪水、使用他钟情的编程语言,处理复杂性和搭建架构。

这并不是该年轻开发者的首次工作经历。但是他的第一个项目已经被证明是有问题的。当时,他认为功能从来不会改变。但是他错了,每次修改功能都需要一次彻底的重构,引发了bug以及大量时间的浪费。他甚至尝试过编写测试之类的、有效的方式。不过他的测试需要维护、编写所需时间、甚至更多执行的时间。

对于每个年轻的开发者,他在成长过程中总是听到有经验的开发者说到的“当心!过早优化是万恶之源!”、“编写测试!测试!测试!”。或许他只是在重构一个微小的实用程序方法,而这时有经验的开发者将走过来、以严厉的表情警告说“你没有做过早优化,对吧?”、或“你在写测试,是吗?”。

但是所有这些警告都被忽视了。因为年轻开发者不理解过早优化为什么是万恶之源、也不理解测试应该是正确的。根据他自己的经验,他知道下面的需求从长期看是不合理的(因为它们可能有修改),编写测试就是在浪费时间。

“我究竟为什么每次都必须重写我的代码?我究竟为什么必须在当下编写代码、随后再重构,我什么时候能够编写世界上最好的代码?还有,我究竟为什么不得不用我所有的时间来编写没用的测试?”这就是年轻开发者的疑惑。

一天,年轻开发者开始着手一个新项目。他决定无视有经验开发者的警告;为了应对每次需求变化,他期望每块代码是快速的、可配置的和健壮的。需求清晰了,不过他要做得更好。比如,当有个功能,生成以大写‘S’结尾的产品代码时,他创建一个配置对象,这样结尾的字母就可以通过配置来修改,通过配置还可以决定这个字母应该是大写还是小写。当需求说明需要一些校验时,他就创建一个庞大的校验器,不仅包含需求要求的,还有很多没要求的。

在编写了项目的核心之后,一种完美的感觉充满了年轻开发者的全身。“那个有经验的开发者是错误的!”年轻开发者看着自己的杰作得意地说。他夜以继日地工作,认为数周后就可以发布产品了。

光阴荏苒……

一天,客户告知他们一个bug。有经验的开发者看到这个bug,对显示器上出现的情况保留着厌恶:年轻开发者看到了大教堂,而有经验开发者看到的是贫民窟;年轻开发者看到了模式,而有经验开发者看到的是一个充斥着class的复杂网络;年轻开发者看到了比光速还快的代码,而有经验开发者看到的是不必要的复杂算法。他不想碰这些代码,因此他让这个年轻的开发者去修复自己的bug。

...

为什么工程师会造出蹩脚的产品

原文地址(original source):http://willschenk.com/why-engineers-build-crappy-products/

就像是工程师自己设计的产品

当你第一眼看到下面的用户界面时,你会尖叫出来,它一定是由工程师设计出来的

[caption id=”attachment_1645” align=”alignnone” width=”600”]pspad-user-interface via Daring Fireball User Interface...