英文原文:Founder Stories: A Hacker’s Hacker
他一个人写完了 MySQL 几乎全部的代码,55 岁时仍然是自己公司最好的程序员。
编者按:根据 StackOverflow 的最新调查,MySQL 仍然是全世界最流行的数据库,受访的开发者中有 44.3% 的人在使用,超过了第二位的 SQL Server 10 多个百分点。可是你知道 MySQL 是怎么诞生的吗?openocean 的一篇有关 MySQL 开发者 Michael “Monty” Widenius 的传记为我们揭秘。
写代码比打游戏还爽,程序员应该多泡开源社区" data-img-size-val="683,1024" />
大学计算机专业的数量总是会随着技术公司的兴衰而起伏,而现在,计算机科学正处在全盛时期。这意味着,不管怎样,计算机科学专业的毕业生绝大部分可能都会去敲 2 年的代码,再转到产品管理,然后过渡到企业、创业或者商学院,接着再转为既有公司的中层管理,32 岁的时候结婚,有了 2 个孩子,一个儿子,一个女儿,一条狗,还有一栋 2 层的漂亮房子。对于大多数人来说,成为程序员就是一份朝九晚五的工作,一份有保障的 6 位数薪水来偿还高昂的学费,一种达到目的的手段,没人应该为此受到责备。但对于千千万万无论好坏的程序员来说,只有一个 Monty Widenius。
Monty 是一位编程天才。19 岁的时候,他从赫尔辛基理工大学辍学开始全职工作,因为大学已经没有什么东西可以教他了。在独自一人写完除了一个库以外的全部代码之后,33 岁时,他发布了 MySQL,后来后者成为了全世界最流行的开源数据库。55 岁时,他藐视着对老年人的歧视,仍然是自己公司最好的程序员。
Monty1962 年出生于赫尔辛基,1978 年他用暑假铺沥青挣来的钱买下自己的第一台个人计算机的。Monty 迅速意识到自己相当擅长写代码——对于别人来说很复杂的事情他却觉得很简单,而且他对工作非常投入。Monty 用一种在讲瑞典语的芬兰人中常见的浓厚口音说:“基本上这就像是在阅读一本真的非常非常好的书。或者像在玩视频游戏。你知道开始玩游戏然后嘣一声 3 小时的时间就过去了的那种感觉吗?写代码对我来说就是这种感觉。”
当别人跑去聚会的时候,Monty 却呆在家里编程。他把计算机从里到外都摸透了。他把 BASIC 的能力推到了极限。Monty 说:“学校并不理解编程不是像语言或者历史这样的东西,它不是靠学就能学来的。所以学校是不够的。拔尖的黑客是万里挑一。他们奉献了所有能用的时间,10 小时,16 小时,每一天,年复一年周而复始。大多数人都不愿意做这样的事情。大多数人宁愿好好生活。”在 Monty 眼里,好的代码是写过一次就永远不需要再碰的那种。从性能角度来看它已经是最优化了,你可以不断增强,但永远都不需要重写。
到 1980 年,17 岁的 Monty 痴迷编程已经无法自拔,他需要把自己计算机的内存从 8KB 扩到 16KB。由于芬兰没有商店卖他想要的东西,于是他弄了一条船去到瑞典 Allan Larsson 的计算机商店。通过 Allan,Monty 结识了 David Axmark,三人沟通交流了多年,就各自项目互相帮忙,偶尔也会一起协作。1995 年,他们一起成立了 MySQL AB。Monty 负责编程,David 和 Allan 负责干完其他的事情。自 1981 年以来,Monty 就一直以芬兰公司 Tapio Laakso Oy 程序员的身份在写 MySQL 前身的代码,他和 Allan 一起创办的cangku.html" target="_blank">数据仓库公司也要用到那个东西。然而,知道 1995 年,在 Allan 和 David 的游说之后 Monty 才决定在他写的东西之上增加一个 SQL 层。1996 年 10 月,MySQL 终于发布了,它得到了广泛的欢迎。MySQL 快速、可靠并且易学,这主要是因为在多年的开发中 Monty 总是不断把正是客户的反馈整合进来。
MySQL 的初衷是存储和管理大数据。如果有人想要跟踪不同的数据点,他们互使用数据库,也就是有点像微软 Excel 那样的东西。然而,随着数据变得越来越大,查找 Excel 这样的数据库就会变得慢多了,也不再可靠。MySQL 有能力存储大量数据,并且返回搜索结果极其迅速。“My”来自 Monty 女儿的名字,而“SQL”就是结构化查询语言(Structured Query Language)的意思,是一种跟数据库沟通的语言。
对 MySQL 开源的决定出自 1985 年的另一次芬兰到瑞典的乘船旅行,这一次是在一场开源大会上。Monty 说:“讨论没花多少分钟。我们都希望回馈给开源社区一点东西。哪怕有人想拷贝或者偷盗我们的代码,我们认为自己能挣的钱也不会比现在少。”开源项目使得开发者社区帮助把软件做得更好,但从商业角度来看不好的是货币化就要困难多了。为了避免这一点,Monty 补充了一个条款,那就是如果任何企业用 MySQL 来赚钱的话,就需要付费授权。对此 MySQL 的代码里面并没有进行任何限制,但就靠这一荣誉制度 MySQL 实现了扩张并开始赚钱。Monty 说:“我认为开源是开发软件的更好方式。但你仍然需要赚够钱来招聘员工,成立公司去跟闭源社区竞争。MySQL 是第一款做到这一点的产品。”
Monty 在 MySQL AB 的职位是 CTO,对于大多数成熟的公司来说,CTO 其实已经很少再编程的了。然而,Monty 从未停下来过,他的绝大部分时间都是在写代码。这种(很少管理的)做法会导致很多晚期阶段初创企业内爆,但哪怕公司人数已经达到 550 人,Monty 在 MySQL AB 建立的独特文化也使得他可以避免天天开会的烦扰(事实上,Monty 甚至都不接受议事日程邀请)。Monty 说:“我总是招会自动驾驶的人进来。所以我不需要告诉他们太多东西。而开源意味着你有开源社区,大家会给你提供代码,你可以看看那些代码的质量,看看他们是怎么跟社区互动的,跟你是怎么沟通的,他们会问什么问题,在这些情况下很容易就能看出一个人是好是坏。在一次面试里面是很难了解清楚编码者有多好的。”
MySQL 的成功是 CTO Monty 与 CEO Mårten Mickos 通力协作的结果。两人能力都很强且对公司非常重要,但方式不一样。Monty 是技术专家,专注于员工生产出尽量完美的代码。Mårten 是公司建设者,专注于交付东西并帮助团队发展。正是两人的联合愿景制造出了 MySQL。但在一家没有免费洗衣、免费午餐、站立办公桌的公司里,是 Monty 的个人魅力吸引住了变成人才。Monty 不是好交际的筹资人,讨好别人的人,博弈论大师,或者职业沟通者。他会写代码,而且写得很好。在 Monty 看来赢得开发者尊重是很简单的事情:“你干的是跟他们一样的事,而且干得更好。”
Monty 给程序员的建议是,参与到开源社区去,花些时间到个人项目里面(“这些年来我开发了成百上千个程序:MySQL 是其中被用得最多的一个,但其他的都只有我自己用。”)。他警告说,改变环境和代码库将意味着哪怕是最好的程序员也要去了解一堆的东西。在 Sun 被 Oracle 收购之后,Monty 成立了 MariaDB,这是 MySQL 的一个社区版的分支,开发的团队成员很多都是 MySQL 团队里面的,使用的也是一样的官方语言:“蹩脚的英语”。MySQL 的许多热心的开源信徒跟着 Monty 去到了 MariaDB。MariaDB 更加面向开发者,允许由外人打补丁这样的事情发生,在很多 Linux 发行版中它都是默认的数据库。
Monty 对开源和开发者的承诺是坚定的——OpenOcean 原先是 Monty 用自己在 MySQL 的所得成立的,使命是投身于开发者驱动、有技术深度的产品。他仍然在赫尔辛基自己家中主持开发者午餐,很快 OpenOcean 就将推出一个 Slack 频道让开发者可以直接向 Monty 提问。在几十年的时间里,Monty 对塑造开源社区无私的形象做出的贡献无可争议的。但这里面大部分的功劳都应该归到成千上万无名的程序员和黑客身上,是他们投入的时间和能力造就了开源的繁荣,也是这批人才能确保开源革命的继续。