编者按:MySQL之父Monty有着四十多年的编程经验,从儿时的兴趣到长大后的深耕,他在编程领域不断钻研,最终成为编程大师。《新程序员004》带你走进Monty的程序人生,谈谈他在编程方面的最新感悟以及对未来的预测。
如今,我们正处于数据爆炸的时代,软件崛起的背后是数据的支持。而随着开源技术的发展,越来越多的数据库选择创建开源社区,让更多开发者参与到数据库的建设中来。
在开源数据库领域中,Michael “Monty” Widenius(通常称为Monty)绝对是不得不提的代表人物。有着四十多年编程经验的Monty是MySQL和MariaDB的作者,也是开源软件运动的著名倡导者,即便是现在他也在坚持写代码。作为影响了几代技术人的数据库,MySQL所取得的成就无需多言。而最初作为MySQL分支立项的MariaDB也在迅速成长,同样在数据库中赢得了一席之地。
作为在技术界游历半生的资深“程序员”,Monty对编程的理解也有许多独到之处,他认为只有学习编程20年以上,才能像读懂音乐一样,看出编程之美。除此之外,他还表示:“写代码时要尽量将代码一次性写成,而不是写完后再没完没了的修改。”只有做到这一点,才能称得上是一名优秀的程序员。而这也是他长久以来所遵循的“编程法则”。
近期,《新程序员》有机会邀请Monty分享他的程序人生,谈谈他对于技术的感悟,以及对于数据库发展的看法与心得。
《新程序员001——004》订阅地址:https://mall.csdn.net/item/76785
1962年,Monty出生在芬兰首都赫尔辛基,小时候的他便对计算机有着浓厚的兴趣。1978年,年仅16岁的Monty用他一整个暑假打工攒的钱买了人生中的第一台电脑,并且用BASIC语言写下了第一行代码REM,从此以后他便与编程结下了不解之缘。三年后,Monty被北欧著名高校赫尔辛基理工大学录取,但由于自己的学习理念与学校不同,他感到在学校学不到什么东西,因此没过多久就辍学了。1981年。离开了校园的Monty开始在荷兰的一家叫做Tapio Laakso Oy的公司当程序员。在近十年之后,34岁的Monty开发出了历史上最流行的开源数据库之一——MySQL。
Monty近照(图源自Wiki)
Monty能开发出MySQL并非偶然,他在编程上投入了大量的时间。根据早期的资料显示,就连别人去参加聚会时,他也在家里写代码。在他看来,好的代码不需要一次又一次地重写,而是在开始写之前,就抱有一次写成的心态。正因为如此,直到多年后的今天,Monty仍然直言“自己在编程方面具有一定的天赋。”
除了Monty,MySQL的诞生还离不开David Axmark和Allan Larsson。早在1980年,17岁的Monty打算将自己的计算机内存从8KB提高到16KB。机缘巧合之下,他去往瑞典Allan Larsson的电脑店寻求帮助,在那里认识了同样也是写代码的David Axmark,之后三人就成为了亲密的合作伙伴,经常一起写代码,解决编程过程中遇到的问题。1995年,三人创立了MySQL AB,MySQL AB就是MySQL的雏形。这其中Monty负责了大部分的开发工作。最终,在1996年10月,MySQL首个版本发布,从此掀开了数据库历史的重要一章。
到了1999年,MySQL的迅速发展已经引起了许多人的注意, Oracle表示要以5000万美元的价格收购MySQL。然而Monty三人并不想止步于此,也不想失去对MySQL的控制,因此拒绝了这次收购。
随着时间的推移,MySQL迅速发展,但同时市场上也出现了包括PostgreSQL在内的竞争对手数据库。为了在竞争中脱颖而出,MySQL开始接受融资,以获得更大的发展机会。到了2003年,MySQL实现了高达400万的安装次数,较两年前翻了一番,成为了当时全世界最受欢迎的开源数据库。
2008年1月16日,Sun Microsystems以高达10亿美元的价格收购MySQL(然而次年Sun又被Oracle收购)。当时Monty担心MySQL可能会受到Oracle的控制而变得商业化,并且如果Oracle一家独大的话,可能会引发数据库领域的不良竞争。于是他发起了一场拯救MySQL的请愿活动,并在MySQL闭源前将其分化,以其小女儿Maria的名字命名创建了MariaDB。
设计MariaDB的初衷(图源自MariaDB官网)
MariaDB开源数据库可以看做是MySQL的一个分支,主要由开源社区维护,目的是要完全兼容MySQL,甚至包括API和命令行。MariDB推出后,不少MySQL的员工都转而投向MariaDB,甚至是原先使用MySQL的各大公司也将数据库迁移到MariaDB上,其中就包括谷歌和维基百科。Monty表示:“与MySQL相比,MariaDB更加成熟,拥有更大的研发优势,并且在安全性修复方面也更加出色。”直到现在,Monty依旧亲自参与MariaDB的开发维护,可以说他的工作重心都在MariaDB上。
Monty的小女儿Maria(图源自MariaDB官网)
《新程序员》:你在创建MariaDB时,曾提到要把它打造成第二个MySQL,并且确保它是开源的。那么对于数据库而言,为什么开源这么重要呢?
Monty:对于任何大型项目来说,开源都是非常重要的。既然要和巨头竞争,你就要有和他们一样的工具。在我看来,开源很适合用于软件开发,尤其是当公司规模还不大的时候。这个时候你很难兼顾公司和用户的需求,因此需要听取别人的想法。而开源就意味着可以获得社区的帮助,能够了解其他人的观点。有了开源,你可以开发出更好的产品,同时产品也能够获得更大的影响力。
《新程序员》:不过开源的一大弊端就是声音太多,需求不一,这种情况下该如何保证数据库能满足大多数人的需求呢?
Monty:要解决这个问题,就需要确保数据库足够灵活,这样才能满足大多数人的需求。在这一点上,MySQL和MariaDB的做法是建立各种性能不一的存储引擎,人们可以针对具体需求开发自己的存储引擎 。
事实上,对于那些有需求的人来说,MariaDB依旧是一个优秀的工具。而对于要求数据库体量较小且运行较快的人来说,MariaDB同样是一个不错的选择。在开发MariaDB时,我们考虑到了各种可能性,使它能够保持良好的性能。
《新程序员》:AI技术的发展让人们对数据库的期待发生了转变,今天数据库是否能够与AI技术结合,从而拥有数据决策能力?
Monty:对于数据库来说,最重要的是要处理AI需要的不同结构。因此我们添加了对JSON的支持,用于在MariaDB中支持动态列。这样人们就可以储存并检索数据,同时保留自己想要的格式。通常AI并不是要创造内容,更多的是实现文件自动化,这就是我们对于MariaDB所抱的期望。因此这两者完全是不同的工具集。
除此之外,我们还需要一个良好的环境,其中每一个部分都是可替代的,要确保自己不被束缚。一旦有了束缚的存在,那么你的应用程序就需要与静态系统相结合,这会大大降低灵活性。我认为对于数据库来说,要注意的一点就是,要确保数据库容易上手,而这恰恰意味着更多的AI技术能够整合到数据库中。
《新程序员》:在IT行业中,在中国有这样一种现象,认为程序员过了35岁就要转型,进入管理层或是其他领域。对此你怎么看?
Monty:这在很多地方都很常见。这个现象的主要原因在于程序员在管理岗位上的工资要比单纯做编程高。因为很少有公司会重视优秀的程序员,这就导致了收入的差异。我认为,如今程序员没有晋升的空间。与其让他们被迫转型,不如建立一个能提升他们收入的新环境。要想做到这一点,公司就得让他们承担更多的责任。要程序员担任管理岗位也行,但前提是仍然要保证他们每天写代码的时间。毕竟好的经理人到处都是,好的程序员却千里挑一。
《新程序员》:据我所知,你仍然每天在坚持写代码,但同时也要负责MariaDB的运营和管理。那么,你如何平衡这两个身份呢?
Monty:我认为在写代码这方面,我还是有一点天分的,所以我想坚持下去。我会雇用经理人为我工作,这样我就可以做我最擅长的事情。我会参与代码审查、社区运营以及MariaDB的相关决策。但同时我也会花很多时间维系客户,与不同国家的开发者交流,其中有许多中国的开发者。我认为,除了写代码之外,这是我做的最重要的事。总而言之,我会雇佣经理人来做一部分管理,让我有足够的时间在真正重要的事情上。
《新程序员》:听闻你从20世纪80年代就开始在家办公,如今这一办公方式也开始流行起来,对于远程办公你有什么看法?
Monty:事实上我认为远程办公是非常灵活的工作方式,自1981年开始我就在家办公(MySQL和MariaDB团队都是在家办公)。我们招人之前可能从来没见过他们,甚至都不知道对面是个人还是团队。但是我们的效率一直都在线。能做到这一点的前提,是要对跟自己联系密切的同事有足够的了解。至少熟悉他们的样貌。
我认为对于八成的开发者而言,在家办公是一个不错的选择。可能有一小部分开发者,他们的工作负担比较重,在家提不起精神来。这就需要他们出去走走,见见朋友或是接触新事物。我刚开始在家办公的时候,也会担心这样是不是会被孤立。所以后来我会定期在家里举行派对,我也会亲自下厨。我们团队每年也会在一起待上一段时间。
《新程序员》:对于你来说,在过去几年数据库领域发生了哪些大的变化?
Monty:在过去的五年或七年间,学习SQL(结构化查询语言)开始成为一种趋势。但是人们发现SQL过于复杂,因此还需要学习其他语言。于是许多公司开始创新,采用NoSQL(非关系型数据库) 进行开发。但在过去的几年里,人们逐渐意识到NoSQL并不是万金油。但选择关系型数据库是否能够涵盖NoSQL提供的功能?很明显,有的可以 ,有的不行。因此我认为,在当下的环境中,对于数据库的要求在于要保证云端以及本地部署。
我们不能被一个数据库束缚。云端提供的是灵活性,你能在数据库中运行软件,即使是有成百上千个软件,而且本地部署的价格更低,控制权限更高,这一点是云端无法提供的。但我依然认为云端有它的优势,我们要在两者之间找到平衡。
《新程序员》:30年前我从大学毕业时,人们提到数据库一般是指去银行办业务。现在看来,人们有了更多的选择,我们能够借助数据库实现许多功能。但提到数据库开发时,人们往往指的是“后端”。那么,对于一个开发者或是毕业生想要进入数据库领域的人来说,你会给他们怎样的职业建议?
Monty:在我看来,从开源数据库开始入门更简单。现在开源数据库很多,如果你的确想成为专家级别的人,想要得到一份很好的工作,你可以找一个合适的数据库,并学习如何进行优化。但同时你也需要了解人们的需求,你可以和从事这一行的同学交流,并且学习解决数据库中的实际问题。
《新程序员》:除了多参与开源项目之外,对于中国开发者你还有哪些想说的?
Monty:我和来自中国的开发者有过非常多的互动,他们非常棒,在编程上表现得非常优秀。不过我在感到惊喜得同时,也感到非常惋惜,因为他们都想转型做管理。我认为这是最大的错误。他们需要让老板给自己派更多的任务,当然也可以做管理,但前提是能让自己写代码。还是那句话:找到一个好经理很容易,但找到一个好的程序员很难。一个非常出色的程序员可以抵五个一般的程序员,关键是你想当一个好的程序员还是一个平庸的经理。对于所有中国开发者,我只想说,请坚持你的工作,你已经做得非常好了,一定不要停止写代码。
【参考资料】
https://zh.wikipedia.org/wiki/%E7%B1%B3%E5%8D%A1%E5%9F%83%E7%88%BE%C2%B7%E7%B6%AD%E5%BE%B7%E7%B4%90%E6%96%AF
https://blog.openocean.vc/founder-stories-a-hackers-hacker-6d5054c90564
https://huskyintelligence.com/leverage-open-source-code/
http://monty-says.blogspot.com/2009/12/help-saving-mysql.html
https://www.geeksforgeeks.org/introduction-of-mariadb/
http://www.josetteorama.com/from-mysql-to-mariadb-michael-%e2%80%9cmonty%e2%80%9d-widenius-talks-about-databases-and-his-projects/
https://dri.es/the-history-of-mysql-ab
https://mariadb.org/wp-content/uploads/2019/11/MySQL-MariaDB-story.pdf
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦