首頁>資訊 >
對話MySQL之父:代碼一次性完成才是優(yōu)秀程序員 2022-04-14 19:48:18  來源:36氪

【CSDN 編者按】MySQL之父Monty有著四十多年的編程經(jīng)驗,從兒時的興趣到長大后的深耕,他在編程領(lǐng)域不斷鉆研,最終成為編程大師?!缎鲁绦騿T004》帶你走進Monty的程序人生,談?wù)勊诰幊谭矫娴淖钚赂形蛞约皩ξ磥淼念A(yù)測。

如今,我們正處于數(shù)據(jù)爆炸的時代,軟件崛起的背后是數(shù)據(jù)的支持。而隨著開源技術(shù)的發(fā)展,越來越多的數(shù)據(jù)庫選擇創(chuàng)建開源社區(qū),讓更多開發(fā)者參與到數(shù)據(jù)庫的建設(shè)中來。

在開源數(shù)據(jù)庫領(lǐng)域中,Michael "Monty" Widenius(通常稱為Monty)絕對是不得不提的代表人物。有著四十多年編程經(jīng)驗的Monty是MySQL和MariaDB的作者,也是開源軟件運動的著名倡導(dǎo)者,即便是現(xiàn)在他也在堅持寫代碼。作為影響了幾代技術(shù)人的數(shù)據(jù)庫,MySQL所取得的成就無需多言。而最初作為MySQL分支立項的MariaDB也在迅速成長,同樣在數(shù)據(jù)庫中贏得了一席之地。

Monty近照(圖源自Wiki)

作為在技術(shù)屆游歷半生的資深“程序員”,Monty對編程的理解也有許多獨到之處,他認為只有學(xué)習(xí)編程20年以上,才能像讀懂音樂一樣,看出編程之美。除此之外,他還表示:“寫代碼時要盡量將代碼一次性寫成,而不是寫完后再沒完沒了的修改。”只有做到這一點,才能稱得上是一名優(yōu)秀的程序員。而這也是他長久以來所遵循的“編程法則”。

近期,《新程序員》有機會邀請Monty分享他的程序人生,談?wù)勊麑τ诩夹g(shù)的感悟,以及對于數(shù)據(jù)庫發(fā)展的看法與心得。

“我在編程方面有一定的天賦”

1962年,Monty出生在芬蘭首都赫爾辛基,小時候的他便對計算機有著濃厚的興趣。1978年,年僅16歲的Monty用他一整個暑假打工攢的錢買了人生中的第一臺電腦,并且用BASIC語言寫下了第一行代碼REM,從此以后他便與編程結(jié)下了不解之緣。三年后,Monty被北歐著名高校赫爾辛基理工大學(xué)錄取,但由于自己的學(xué)習(xí)理念與學(xué)校不同,他感到在學(xué)校學(xué)不到什么東西,因此沒過多久就輟學(xué)了。1981年。離開了校園的Monty開始在荷蘭的一家叫做Tapio Laakso Oy的公司當程序員。在近十年之后,34歲的Monty開發(fā)出了歷史上最流行的開源數(shù)據(jù)庫之一——MySQL。

戳↑↑查看采訪視頻

Monty能開發(fā)出MySQL并非偶然,他在編程上投入了大量的時間。根據(jù)早期的資料顯示,就連別人去參加聚會時,他也在家里寫代碼。在他看來,好的代碼不需要一次又一次地重寫,而是在開始寫之前,就抱有一次寫成的心態(tài)。正因為如此,直到多年后的今天,Monty仍然直言“自己在編程方面具有一定的天賦”。

除了Monty,MySQL的誕生還離不開David Axmark和Allan Larsson。早在1980年,17歲的Monty打算將自己的計算機內(nèi)存從8KB提高到16KB。機緣巧合之下,他去往瑞典Allan Larsson的電腦店尋求幫助,在那里認識了同樣也是寫代碼的David Axmark,之后三人就成為了親密的合作伙伴,經(jīng)常一起寫代碼,解決編程過程中遇到的問題。1995年,三人創(chuàng)立了MySQL AB,MySQL AB就是MySQL的雛形。這其中Monty負責(zé)了大部分的開發(fā)工作。最終,在1996年10月,MySQL首個版本發(fā)布,從此掀開了數(shù)據(jù)庫歷史的重要一章。

到了1999年,MySQL的迅速發(fā)展已經(jīng)引起了許多人的注意, Oracle表示要以5000萬美元的價格收購MySQL。然而Monty三人并不想止步于此,也不想失去對MySQL的控制,因此拒絕了這次收購。

隨著時間的推移,MySQL迅速發(fā)展, 但同時市場上也出現(xiàn)了包括PostgreSQL在內(nèi)的競爭對手數(shù)據(jù)庫。為了在競爭中脫穎而出,MySQL開始接受融資,以獲得更大的發(fā)展機會。到了2003年,MySQL實現(xiàn)了高達400萬的安裝次數(shù),較兩年前翻了一番,成為了當時全世界最受歡迎的開源數(shù)據(jù)庫。

2008年1月16日,Sun Microsystems以高達10億美元的價格收購MySQL(然而次年Sun又被Oracle收購)。當時Monty擔(dān)心MySQL可能會受到Oracle的控制而變得商業(yè)化,并且如果Oracle一家獨大的話,可能會引發(fā)數(shù)據(jù)庫領(lǐng)域的不良競爭。于是他發(fā)起了一場拯救MySQL的請愿活動,并在MySQL閉源前將其分化,以其小女兒Maria的名字命名創(chuàng)建了MariaDB。

設(shè)計MariaDB的初衷(圖源自MariaDB官網(wǎng))

MariaDB開源數(shù)據(jù)庫可以看做是MySQL的一個分支,主要由開源社區(qū)維護,目的是要完全兼容MySQL,甚至包括API和命令行。MariDB推出后,不少MySQL的員工都轉(zhuǎn)而投向MariaDB,甚至是原先使用MySQL的各大公司也將數(shù)據(jù)庫遷移到MariaDB上,其中就包括谷歌和維基百科。Monty表示:“與MySQL相比,MariaDB更加成熟,擁有更大的研發(fā)優(yōu)勢,并且在安全性修復(fù)方面也更加出色?!敝钡浆F(xiàn)在,Monty依舊親自參與MariaDB的開發(fā)維護,可以說他的工作重心都在MariaDB上。

Monty的小女兒Maria(圖源自MariaDB官網(wǎng))

MariaDB,堅持開源的背后

鄒欣:你在創(chuàng)建MariaDB時,曾提到要把它打造成第二個MySQL,并且確保它是開源的。那么對于數(shù)據(jù)庫而言,為什么開源這么重要呢?

Monty:對于任何大型項目來說,開源都是非常重要的。既然要和巨頭競爭,你就要有和他們一樣的工具。在我看來,開源很適合用于軟件開發(fā),尤其是當公司規(guī)模還不大的時候。這個時候你很難兼顧公司和用戶的需求,因此需要聽取別人的想法。而開源就意味著可以獲得社區(qū)的幫助,能夠了解其他人的觀點。有了開源,你可以開發(fā)出更好的產(chǎn)品,同時產(chǎn)品也能夠獲得更大的影響力。

鄒欣:不過開源的一大弊端就是聲音太多,需求不一,這種情況下該如何保證數(shù)據(jù)庫能滿足大多數(shù)人的需求呢?

Monty:要解決這個問題,就需要確保數(shù)據(jù)庫足夠靈活,這樣才能滿足大多數(shù)人的需求。在這一點上,MySQL和MariaDB的做法是建立各種性能不一的存儲引擎,人們可以針對具體需求開發(fā)自己的存儲引擎。

事實上,對于那些有需求的人來說,MariaDB依舊是一個優(yōu)秀的工具。而對于要求數(shù)據(jù)庫體量較小且運行較快的人來說,MariaDB同樣是一個不錯的選擇。在開發(fā)MariaDB時,我們考慮到了各種可能性,使它能夠保持良好的性能。

鄒欣:AI技術(shù)的發(fā)展讓人們對數(shù)據(jù)庫的期待發(fā)生了轉(zhuǎn)變,今天數(shù)據(jù)庫是否能夠與AI技術(shù)結(jié)合,從而擁有數(shù)據(jù)決策能力?

Monty:對于數(shù)據(jù)庫來說,最重要的是要處理AI需要的不同結(jié)構(gòu)。因此我們添加了對JSON的支持,用于在MariaDB中支持動態(tài)列。這樣人們就可以儲存并檢索數(shù)據(jù),同時保留自己想要的格式。通常AI并不是要創(chuàng)造內(nèi)容,更多的是實現(xiàn)文件自動化,這就是我們對于MariaDB所抱的期望。因此這兩者完全是不同的工具集。

除此之外,我們還需要一個良好的環(huán)境,其中每一個部分都是可替代的,要確保自己不被束縛。一旦有了束縛的存在,那么你的應(yīng)用程序就需要與靜態(tài)系統(tǒng)相結(jié)合,這會大大降低靈活性。我認為對于數(shù)據(jù)庫來說,要注意的一點就是,要確保數(shù)據(jù)庫容易上手,而這恰恰意味著更多的AI技術(shù)能夠整合到數(shù)據(jù)庫中。

仍然每天堅持寫代碼

鄒欣:在中國IT行業(yè)有這樣一種現(xiàn)象,認為程序員過了35歲就要轉(zhuǎn)型,進入管理層或是其他領(lǐng)域。對此你怎么看?

Monty:這在很多地方都很常見。這個現(xiàn)象的主要原因在于程序員在管理崗位上的工資要比單純做編程高。因為很少有公司會重視優(yōu)秀的程序員,這就導(dǎo)致了收入的差異。我認為,如今程序員沒有晉升的空間。與其讓他們被迫轉(zhuǎn)型,不如建立一個能提升他們收入的新環(huán)境。要想做到這一點,公司就得讓他們承擔(dān)更多的責(zé)任。要程序員擔(dān)任管理崗位也行,但前提是仍然要保證他們每天寫代碼的時間。畢竟好的經(jīng)理人到處都是,好的程序員卻千里挑一。

鄒欣:據(jù)我所知,你仍然每天在堅持寫代碼,但同時也要負責(zé)MariaDB的運營和管理。那么,你如何平衡這兩個身份呢?

Monty:我認為在寫代碼這方面,我還是有一點天分的,所以我想堅持下去。我會雇用經(jīng)理人為我工作,這樣我就可以做我最擅長的事情。我會參與代碼審查、社區(qū)運營以及MariaDB的相關(guān)決策。但同時我也會花很多時間維系客戶,與不同國家的開發(fā)者交流,其中有許多中國的開發(fā)者。我認為,除了寫代碼之外,這是我做的最重要的事。總而言之,我會雇傭經(jīng)理人來做一部分管理,讓我有足夠的時間在真正重要的事情上。

鄒欣:聽聞你從20世紀80年代就開始在家辦公,如今這一辦公方式也開始流行起來,對于遠程辦公你有什么看法?

Monty:事實上我認為遠程辦公是非常靈活的工作方式,自1981年開始我就在家辦公(MySQL和MariaDB團隊都是在家辦公)。我們招人之前可能從來沒見過他們,甚至都不知道對面是個人還是團隊。但是我們的效率一直都在線。能做到這一點的前提,是要對跟自己聯(lián)系密切的同事有足夠的了解。至少熟悉他們的樣貌。

我認為對于八成的開發(fā)者而言,在家辦公是一個不錯的選擇??赡苡幸恍〔糠珠_發(fā)者,他們的工作負擔(dān)比較重,在家提不起精神來。這就需要他們出去走走,見見朋友或是接觸新事物。我剛開始在家辦公的時候,也會擔(dān)心這樣是不是會被孤立。所以后來我會定期在家里舉行派對,我也會親自下廚。我們團隊每年也會在一起待上一段時間。

一個好的程序員能抵五個一般的程序員

鄒欣:對于你來說,在過去幾年數(shù)據(jù)庫領(lǐng)域發(fā)生了哪些大的變化?

Monty:在過去的五年或七年間,學(xué)習(xí)SQL(結(jié)構(gòu)化查詢語言)開始成為一種趨勢。但是人們發(fā)現(xiàn)SQL過于復(fù)雜,因此還需要學(xué)習(xí)其他語言。于是許多公司開始創(chuàng)新,采用NoSQL(非關(guān)系型數(shù)據(jù)庫) 進行開發(fā)。但在過去的幾年里,人們逐漸意識到NoSQL并不是萬金油。但選擇關(guān)系型數(shù)據(jù)庫是否能夠涵蓋NoSQL提供的功能?很明顯,有的可以,有的不行。因此我認為,在當下的環(huán)境中,對于數(shù)據(jù)庫的要求在于要保證云端以及本地部署。

我們不能被一個數(shù)據(jù)庫束縛。云端提供的是靈活性,你能在數(shù)據(jù)庫中運行軟件,即使是有成百上千個軟件,而且本地部署的價格更低,控制權(quán)限更高,這一點是云端無法提供的。但我依然認為云端有它的優(yōu)勢,我們要在兩者之間找到平衡。

鄒欣:30年前我從大學(xué)畢業(yè)時,人們提到數(shù)據(jù)庫一般是指去銀行辦業(yè)務(wù)?,F(xiàn)在看來,人們有了更多的選擇,我們能夠借助數(shù)據(jù)庫實現(xiàn)許多功能。但提到數(shù)據(jù)庫開發(fā)時,人們往往指的是“后端”。那么,對于一個開發(fā)者或是畢業(yè)生想要進入數(shù)據(jù)庫領(lǐng)域的人來說,你會給他們怎樣的職業(yè)建議?

Monty:在我看來,從開源數(shù)據(jù)庫開始入門更簡單?,F(xiàn)在開源數(shù)據(jù)庫很多,如果你的確想成為專家級別的人,想要得到一份很好的工作,你可以找一個合適的數(shù)據(jù)庫,并學(xué)習(xí)如何進行優(yōu)化。但同時你也需要了解人們的需求,你可以和從事這一行的同學(xué)交流,并且學(xué)習(xí)解決數(shù)據(jù)庫中的實際問題。

鄒欣:除了多參與開源項目之外,對于中國開發(fā)者你還有哪些想說的?

Monty:我和來自中國的開發(fā)者有過非常多的互動,他們非常棒,在編程上表現(xiàn)得非常優(yōu)秀。不過我在感到驚喜的同時,也感到非常惋惜,因為他們都想轉(zhuǎn)型做管理。我認為這是最大的錯誤。他們需要讓老板給自己派更多的任務(wù),當然也可以做管理,但前提是能讓自己寫代碼。還是那句話:找到一個好經(jīng)理很容易,但找到一個好的程序員很難。一個非常出色的程序員可以抵五個一般的程序員,關(guān)鍵是你想當一個好的程序員還是一個平庸的經(jīng)理。對于所有中國開發(fā)者,我只想說,請堅持你的工作,你已經(jīng)做得非常好了,一定不要停止寫代碼。

【參考資料】

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

出品 |《新程序員》編輯部

關(guān)鍵詞:

相關(guān)閱讀:
熱點
圖片 圖片