PHP老程序员DHH考诉你他开发的秘密

Basecamp是一家小型顶层项目管理软件开发商。大卫·海涅迈尔·汉森(David Heinemeier Hansson)是Basecamp旗舰产品的开发者,他还是“Ruby on Rails”的创作者,Hulu、Airbnb、GitHub、早期的Twitter都使用了这种框架。你可能只知道他是写Ruby的,然而不知道的是,DHH最初是一个PHP程序员。

PHP老程序员DHH考诉你他开发的秘密

工作之外,汉森是一名国际赛车手。最近,汉森接受了媒体的采访,他谈论了自己的工作方法:

居住地:加州Malibu。汉森还会在西班牙Marbella和芝加哥停留。

目前的角色:Basecamp CTO。

用一个词汇描述自己的工作:高效。

目前使用的移动设备:iPhone X。

目前使用的电脑:27英寸iMac,12英寸MacBook。

问题:首先简要介绍一下你的背景,然后说说你是如何走到今天这一步的。

6岁时,我有了第一台计算机,那是一台Amstrad 646电脑。不过我不是什么计算机神童。有了电脑后,我学着编程,但失败了好几次。在杂志的帮助下,我的确编了几个游戏,但是大多情况下我只是在电脑上玩别人编的游戏。

少年时代,我为Amiga软件公司运营一个BBS,名字叫作Confusion。我学着了解调制解调器,电话卡。回想当年,我在小小的卧室内安装US Robotics调制解调器,当时还有荷兰人呼叫我的调制解调器,真是美妙的回忆。

通过Amiga的活动,我认识了许多程序员,成了朋友。他们用汇编程序或者C语言编辑演示作品或者游戏,我看着他们工作,最终我认为,这个工作不适合我。指示字运算和向量计算不是我感兴趣的东西。

然后互联网流行起来。我仍然很喜欢游戏,于是制作了一些网站,评论游戏。到了高中时代,我办了一本游戏机评论杂志,名叫konsollen.dk,招募了10名自由撰稿人,还有几千名读者。我们没有多少钱,不可能将所有游戏买下来评测,当时我只有16岁,想向分销商提出要求,获得免费游戏,他们根本不理睬。最终,我与Copenhagen游戏店的一名经理成了朋友,他将新游戏借给我,可以借一周。

后来我又创办了quake3.dk,报道Quake 3。运行多年后,我又创办了dailyrush.dk,报道游戏机和PC游戏。我是从这里真正开始起步的,还创办了孵化器。不过当时没有业务计划,但是还是很成功的,那是2000-2001年的事了。

推行这些项目时,我学会了PHP。并不是因为我想成为程序员,只是因为我想为自己的网站添加一些新功能。2001年,我给37signals的Jason Fried写了一封邮件,就他的PHP博客提问。他决定聘请我。

由此开始,我朝着Basecamp、Ruby on Rails前进,一路走到今天,那是15年前的事了。

问:说说最近你是怎样工作的吧。

具体要看我人在哪里。如果在Malibu,一般7点45分我就会起来,然后开车送最大的孩子上学,9点30分左右开始工作。

我有点迟钝。上午要处理许多的东西,比如邮件、提问、PR事务、聊天室。如果走运,就能早点开始自己的工作。

工作的内容很丰富。有时就是写东西。Jason与我正在写一本新书,名字叫作“The Calm Company”。如果不写书,经常会写博文。或者谈谈某个创意。或者为Basecamp描绘某个创意。在工作中要写许多东西。

有时与编程有关。可能我们想为Basecamp搭建新概念,或者从Ruby on Rails抽取代码。我喜欢编程。

Basecamp大约有56名员工,有时我要负责公司的运营。老实说,公司的支持员工并不多,没有CFO,也没有COO,没有专门的管理人员。所以会有许多事情要处理。我尽可能用更少的精力解决问题,这样就可以回去写东西,编程。在通常的情况下,我们希望将事情做得更好。少一点政策,少开点会。

问题:有哪些App、小设备或者工具是你离不开的?

我最喜欢的软件都与书写有关。

2003年时,我曾帮助Allan打造TextMate 1,它仍然是我的首选文本代码编辑器。

我还喜欢iA Writer。我的许多散文都是在上面完成的,它很美,很简单,不会让人分心。

还有OS X/ iOS Notes。里面有许多很好的东西,可以帮我撰写博文、随笔或者谈话。

我还喜欢摄影。最喜欢的产品是Leica M相机,搭配50毫米Summilux镜头,我用Adobe Lightroom和VSCO处理图片。这些东西帮我留下许多珍贵的瞬间。成为父亲之后,更是留下不少美好时刻。孩子是摄影的动力。

我还喜欢机械手表,特别偏爱Daytonas。看着机械手表40年后还在滴答作响,它似乎想提醒我们应该追求永恒。应该创造一些简单持久的东西,要照看好它们,让它们走得更远。

问题:你的工作间是怎样设置的?

东西不多。我的办公室里有一张很大的白色桌子,放了27英寸iMac,还有HiRise iPhone支架,一只玻璃杯。我曾经听人说过,应该将桌子搞得乱七八糟,这样可以刺激创造力。不过我喜欢整洁。混乱无法让人宁静,我追求宁静。

问题:你有什么节省时间的小窍门或者生活技巧?

你可以说“不”。大多人都为自己编织复杂的责任网络,这点真是让人惊讶。我几乎会对一切事务说不。然后我就可以全心全意做好少数几件事了,选择性进行。

经常有人问我,我如何应付诸多事情的,既要运营Basecamp、编写Ruby on Rails、写书、驾驶赛车,还要摄影。这个问题有点古怪,如果你没有让许多垃圾事情填充生活,完全有足够的时间做这些事。

问:你如何追踪自己所做的事情?

事实上我并不去追踪。我尽力不积压事情。我眼下正在积极清理自己的收件箱。如果你已经有了一个决定,许多邮件可以很快回复,简单回应。大多人的收件箱老是爆满,主要是因为他们摇摆不定,不断推迟,所以焦虑更加严重。有时只需要打个电话,说一声“不”,然后就完了。

只有那些超出控制的事情才需要追踪。例如,我们刚刚建完一幢房子,我们做了一个系统,追踪所有供应商,制作竣工事项检查表,处理类似的事情。Basecamp很适合应付这样的事,真是谢天谢地。

问题:你是如何充电的?如果你想忘掉工作,会做些什么事?

我喜欢工作。我的工作大部分与编程、写作有关,这是我生活中最喜欢的两件事。所以我没有必要忘掉工作。

不过我还是要继续充电。如何让一天过得充实?最好的办法就是集中精力工作4-5小时,让项目或者主题获得很大进步。我认为,拼命榨干每一分钟去努力工作是一种很不好的生活。

正因如此,我才会参加世界耐力锦标赛,开着赛车周游世界。开车的时候我会全神贯注,我喜欢这种感觉。速度、重力、危险让人兴奋愉悦。开车之后人的心智会变得清明。

我还是一名摄影爱好者。捕捉完美瞬间是一件很快乐的事。既要关注构图,又要关注色彩,还要表达自己的想法。

我还喜欢与家人一起旅游。也许喜欢的并不是真正的旅游这一部分,而是体验的部分,我喜欢拖着孩子上飞机,相信有许多人不喜欢,但是我喜欢。与妻儿一起探索世界是一种很好的治愈方式。

问题:你最喜欢的副项目是什么?

Ruby on Rails算是副项目吗?我想应该算吧,那就是它吧。

问题:你正在读什么书?有什么好推荐的吗?

我正在看“Debt: The First 5,000 Years”这本书,我对金钱、债务、实物交易、奴隶制、道德的历史以及它们之间的关系很感兴趣。

问题:你听到的最好建议是什么?

爱上命运。