
MySQL 創(chuàng)始人:寫代碼比打游戲還爽,程序員應(yīng)該多泡開源社區(qū)
編者按:根據(jù)StackOverflow的最新調(diào)查,MySQL仍然是全世界最流行的數(shù)據(jù)庫,受訪的開發(fā)者中有44.3%的人在使用,超過了第二位的SQL Server 10多個(gè)百分點(diǎn)??墒悄阒繫ySQL是怎么誕生的嗎?openocean 的一篇有關(guān)MySQL開發(fā)者M(jìn)ichael “Monty” Widenius的傳記為我們揭秘。
大學(xué)計(jì)算機(jī)專業(yè)的數(shù)量總是會隨著技術(shù)公司的興衰而起伏,而現(xiàn)在,計(jì)算機(jī)科學(xué)正處在全盛時(shí)期。這意味著,不管怎樣,計(jì)算機(jī)科學(xué)專業(yè)的畢業(yè)生絕大部分可能都會去敲2年的代碼,再轉(zhuǎn)到產(chǎn)品管理,然后過渡到企業(yè)、創(chuàng)業(yè)或者商學(xué)院,接著再轉(zhuǎn)為既有公司的中層管理,32歲的時(shí)候結(jié)婚,有了2個(gè)孩子,一個(gè)兒子,一個(gè)女兒,一條狗,還有一棟2層的漂亮房子。對于大多數(shù)人來說,成為程序員就是一份朝九晚五的工作,一份有保障的6位數(shù)薪水來償還高昂的學(xué)費(fèi),一種達(dá)到目的的手段,沒人應(yīng)該為此受到責(zé)備。但對于千千萬萬無論好壞的程序員來說,只有一個(gè)Monty Widenius。
Monty是一位編程天才。19歲的時(shí)候,他從赫爾辛基理工大學(xué)輟學(xué)開始全職工作,因?yàn)榇髮W(xué)已經(jīng)沒有什么東西可以教他了。在獨(dú)自一人寫完除了一個(gè)庫以外的全部代碼之后,33歲時(shí),他發(fā)布了MySQL,后來后者成為了全世界最流行的開源數(shù)據(jù)庫。55歲時(shí),他藐視著對老年人的歧視,仍然是自己公司最好的程序員。
Monty1962年出生于赫爾辛基,1978年他用暑假鋪瀝青掙來的錢買下自己的第一臺個(gè)人計(jì)算機(jī)的。Monty迅速意識到自己相當(dāng)擅長寫代碼——對于別人來說很復(fù)雜的事情他卻覺得很簡單,而且他對工作非常投入。Monty用一種在講瑞典語的芬蘭人中常見的濃厚口音說:“基本上這就像是在閱讀一本真的非常非常好的書。或者像在玩視頻游戲。你知道開始玩游戲然后嘣一聲3小時(shí)的時(shí)間就過去了的那種感覺嗎?寫代碼對我來說就是這種感覺?!?
當(dāng)別人跑去聚會的時(shí)候,Monty卻呆在家里編程。他把計(jì)算機(jī)從里到外都摸透了。他把BASIC的能力推到了極限。Monty說:“學(xué)校并不理解編程不是像語言或者歷史這樣的東西,它不是靠學(xué)就能學(xué)來的。所以學(xué)校是不夠的。拔尖的黑客是萬里挑一。他們奉獻(xiàn)了所有能用的時(shí)間,10小時(shí),16小時(shí),每一天,年復(fù)一年周而復(fù)始。大多數(shù)人都不愿意做這樣的事情。大多數(shù)人寧愿好好生活?!痹贛onty眼里,好的代碼是寫過一次就永遠(yuǎn)不需要再碰的那種。從性能角度來看它已經(jīng)是最優(yōu)化了,你可以不斷增強(qiáng),但永遠(yuǎn)都不需要重寫。
到1980年,17歲的Monty癡迷編程已經(jīng)無法自拔,他需要把自己計(jì)算機(jī)的內(nèi)存從8KB擴(kuò)到16KB。由于芬蘭沒有商店賣他想要的東西,于是他弄了一條船去到瑞典Allan Larsson的計(jì)算機(jī)商店。通過Allan,Monty結(jié)識了David Axmark,三人溝通交流了多年,就各自項(xiàng)目互相幫忙,偶爾也會一起協(xié)作。1995年,他們一起成立了MySQL AB。Monty負(fù)責(zé)編程,David和Allan負(fù)責(zé)干完其他的事情。自1981年以來,Monty就一直以芬蘭公司Tapio Laakso Oy程序員的身份在寫MySQL前身的代碼,他和Allan一起創(chuàng)辦的數(shù)據(jù)倉庫公司也要用到那個(gè)東西。然而,知道1995年,在Allan和David的游說之后Monty才決定在他寫的東西之上增加一個(gè)SQL層。1996年10月,MySQL終于發(fā)布了,它得到了廣泛的歡迎。MySQL快速、可靠并且易學(xué),這主要是因?yàn)樵诙嗄甑拈_發(fā)中Monty總是不斷把正是客戶的反饋整合進(jìn)來。
MySQL的初衷是存儲和管理大數(shù)據(jù)。如果有人想要跟蹤不同的數(shù)據(jù)點(diǎn),他們互使用數(shù)據(jù)庫,也就是有點(diǎn)像微軟Excel那樣的東西。然而,隨著數(shù)據(jù)變得越來越大,查找Excel這樣的數(shù)據(jù)庫就會變得慢多了,也不再可靠。MySQL有能力存儲大量數(shù)據(jù),并且返回搜索結(jié)果極其迅速。“My”來自Monty女兒的名字,而“SQL”就是結(jié)構(gòu)化查詢語言(Structured Query Language)的意思,是一種跟數(shù)據(jù)庫溝通的語言。
對MySQL開源的決定出自1985年的另一次芬蘭到瑞典的乘船旅行,這一次是在一場開源大會上。Monty說:“討論沒花多少分鐘。我們都希望回饋給開源社區(qū)一點(diǎn)東西。哪怕有人想拷貝或者偷盜我們的代碼,我們認(rèn)為自己能掙的錢也不會比現(xiàn)在少?!遍_源項(xiàng)目使得開發(fā)者社區(qū)幫助把軟件做得更好,但從商業(yè)角度來看不好的是貨幣化就要困難多了。為了避免這一點(diǎn),Monty補(bǔ)充了一個(gè)條款,那就是如果任何企業(yè)用MySQL來賺錢的話,就需要付費(fèi)授權(quán)。對此MySQL的代碼里面并沒有進(jìn)行任何限制,但就靠這一榮譽(yù)制度MySQL實(shí)現(xiàn)了擴(kuò)張并開始賺錢。Monty說:“我認(rèn)為開源是開發(fā)軟件的更好方式。但你仍然需要賺夠錢來招聘員工,成立公司去跟閉源社區(qū)競爭。MySQL是第一款做到這一點(diǎn)的產(chǎn)品?!?
Monty在MySQL AB的職位是CTO,對于大多數(shù)成熟的公司來說,CTO其實(shí)已經(jīng)很少再編程的了。然而,Monty從未停下來過,他的絕大部分時(shí)間都是在寫代碼。這種(很少管理的)做法會導(dǎo)致很多晚期階段初創(chuàng)企業(yè)內(nèi)爆,但哪怕公司人數(shù)已經(jīng)達(dá)到550人,Monty在MySQL AB建立的獨(dú)特文化也使得他可以避免天天開會的煩擾(事實(shí)上,Monty甚至都不接受議事日程邀請)。Monty說:“我總是招會自動(dòng)駕駛的人進(jìn)來。所以我不需要告訴他們太多東西。而開源意味著你有開源社區(qū),大家會給你提供代碼,你可以看看那些代碼的質(zhì)量,看看他們是怎么跟社區(qū)互動(dòng)的,跟你是怎么溝通的,他們會問什么問題,在這些情況下很容易就能看出一個(gè)人是好是壞。在一次面試?yán)锩媸呛茈y了解清楚編碼者有多好的?!?
MySQL的成功是CTO Monty與CEO M?rten Mickos通力協(xié)作的結(jié)果。兩人能力都很強(qiáng)且對公司非常重要,但方式不一樣。Monty是技術(shù)專家,專注于員工生產(chǎn)出盡量完美的代碼。M?rten是公司建設(shè)者,專注于交付東西并幫助團(tuán)隊(duì)發(fā)展。正是兩人的聯(lián)合愿景制造出了MySQL。但在一家沒有免費(fèi)洗衣、免費(fèi)午餐、站立辦公桌的公司里,是Monty的個(gè)人魅力吸引住了人才。Monty不是好交際的籌資人,討好別人的人,博弈論大師,或者職業(yè)溝通者。他會寫代碼,而且寫得很好。在Monty看來贏得開發(fā)者尊重是很簡單的事情:“你干的是跟他們一樣的事,而且干得更好?!?
Monty給程序員的建議是,參與到開源社區(qū)去,花些時(shí)間到個(gè)人項(xiàng)目里面(“這些年來我開發(fā)了成百上千個(gè)程序:MySQL是其中被用得最多的一個(gè),但其他的都只有我自己用。”)。他警告說,改變環(huán)境和代碼庫將意味著哪怕是最好的程序員也要去了解一堆的東西。在Sun被Oracle收購之后,Monty成立了MariaDB,這是MySQL的一個(gè)社區(qū)版的分支,開發(fā)的團(tuán)隊(duì)成員很多都是MySQL團(tuán)隊(duì)里面的,使用的也是一樣的官方語言:“蹩腳的英語”。MySQL的許多熱心的開源信徒跟著Monty去到了MariaDB。MariaDB更加面向開發(fā)者,允許由外人打補(bǔ)丁這樣的事情發(fā)生,在很多Linux發(fā)行版中它都是默認(rèn)的數(shù)據(jù)庫。
Monty對開源和開發(fā)者的承諾是堅(jiān)定的——OpenOcean原先是Monty用自己在MySQL的所得成立的,使命是投身于開發(fā)者驅(qū)動(dòng)、有技術(shù)深度的產(chǎn)品。他仍然在赫爾辛基自己家中主持開發(fā)者午餐,很快OpenOcean就將推出一個(gè)Slack頻道讓開發(fā)者可以直接向Monty提問。在幾十年的時(shí)間里,Monty對塑造開源社區(qū)無私的形象做出的貢獻(xiàn)無可爭議的。但這里面大部分的功勞都應(yīng)該歸到成千上萬無名的程序員和黑客身上,是他們投入的時(shí)間和能力造就了開源的繁榮,也是這批人才能確保開源革命的繼續(xù)。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10