• <track id="6xmvl"></track>
    <pre id="6xmvl"></pre>
      <output id="6xmvl"><strong id="6xmvl"><div id="6xmvl"></div></strong></output>
    1. 微信登錄
      注冊忘記密碼
      查看: 3561|回復: 19
      打印 上一主題 下一主題

      對話MySQL之父:代碼一次性完成才是優秀程序員

      [復制鏈接]

      該用戶從未簽到

      跳轉到指定樓層
      樓主
      發表于 2022-11-8 07:41:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

      【CSDN 編者按】MySQL之父Monty有著四十多年的編程經驗,從兒時的興趣到長大后的深耕,他在編程領域不斷鉆研,最終成為編程大師!缎鲁绦騿T004》帶你走進Monty的程序人生,談談他在編程方面的最新感悟以及對未來的預測。
      作者 | 郭露 責編 | 徐威龍

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

      如今,我們正處于數據爆炸的時代,軟件崛起的背后是數據的支持。而隨著開源技術的發展,越來越多的數據庫選擇創建開源社區,讓更多的開發者參與到數據庫的建設中來。
      在開源數據庫領域中,Michael "Monty" Widenius(通常稱為Monty)絕對是不得不提的代表人物。有著四十多年編程經驗的Monty是MySQL和MariaDB的作者,也是開源軟件運動的著名倡導者,即便是現在他也在堅持寫代碼。作為影響了幾代技術人的數據庫,MySQL所取得的成就無需多言。而最初作為MySQL分支立項的MariaDB也在迅速長大,同樣在數據庫中贏得了一席之地。
      Monty近照(圖源自Wiki)

      作為在技術屆游歷半生的資深“程序員”,Monty對編程的理解也有許多獨到之處,他認為只有學習編程20年以上,才能像讀懂音樂一樣,看出編程之美。除此之外,他還表示:“寫代碼時要盡量將代碼一次性寫成,而不是寫完后再沒完沒了地修改!敝挥凶龅竭@一點,才能稱得上是一名優秀的程序員。而這也是他長久以來所遵循的“編程法則”。
      近期,《新程序員》有機會邀請Monty分享他的程序人生,談談他對于技術的感悟,以及對于數據庫發展的看法與心得。
      1.“我在編程方面有一定的天賦”

      1962年,Monty出生在芬蘭首都赫爾辛基,小時候的他便對計算機有著濃厚的興趣。1978年,年僅16歲的Monty用他一整個暑假打工攢的錢買了人生中的第一臺電腦,并且用BASIC語言寫下了第一行代碼REM,從此以后他便與編程結下了不解之緣。三年后,Monty被北歐著名高校赫爾辛基理工大學錄取,但由于自己的學習理念與學校不同,他感到在學校學不到什么東西,因此沒過多久就輟學了。1981年。離開了校園的Monty開始在荷蘭的一家叫做Tapio Laakso Oy的公司當程序員。在近十年之后,34歲的Monty開發出了歷史上最流行的開源數據庫之一——MySQL。
      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更加成熟,擁有更大的研發優勢,并且在安全性修復方面也更加出色!敝钡浆F在,Monty依舊親自參與MariaDB的開發維護,可以說他的工作重心都在MariaDB上。
      Monty的小女兒Maria(圖源自MariaDB官網)

      2.MariaDB,堅持開源的背后

      鄒欣:你在創建MariaDB時,曾提到要把它打造成第二個MySQL,并且確保它是開源的。那么對于數據庫而言,為什么開源這么重要呢?
      Monty:對于任何大型項目來說,開源都是非常重要的。既然要和巨頭競爭,你就要有和他們一樣的工具。在我看來,開源很適合用于軟件開發,尤其是當公司規模還不大的時候。這個時候你很難兼顧公司和用戶的需求,因此需要聽取別人的想法。而開源就意味著可以獲得社區的幫助,能夠了解其他人的觀點。有了開源,你可以開發出更好的產品,同時產品也能夠獲得更大的影響力。
      鄒欣:不過開源的一大弊端就是聲音太多,需求不一,這種情況下該如何保證數據庫能滿足大多數人的需求呢?
      Monty:要解決這個問題,就需要確保數據庫足夠靈活,這樣才能滿足大多數人的需求。在這一點上,MySQL和MariaDB的做法是建立各種性能不一的存儲引擎,人們可以針對具體需求開發自己的存儲引擎 。
      事實上,對于那些有需求的人來說,MariaDB依舊是一個優秀的工具。而對于要求數據庫體量較小且運行較快的人來說,MariaDB同樣是一個不錯的選擇。在開發MariaDB時,我們考慮到了各種可能性,使它能夠保持良好的性能。
      鄒欣:AI技術的發展讓人們對數據庫的期待發生了轉變,今天數據庫是否能夠與AI技術結合,從而擁有數據決策能力?
      Monty:對于數據庫來說,最重要的是要處理AI需要的不同結構。因此我們添加了對JSON的支持,用于在MariaDB中支持動態列。這樣人們就可以儲存并檢索數據,同時保留自己想要的格式。通常AI并不是要創造內容,更多的是實現文件自動化,這就是我們對于MariaDB所抱的期望。因此這兩者完全是不同的工具集。
      除此之外,我們還需要一個良好的環境,其中每一個部分都是可替代的,要確保自己不被束縛。一旦有了束縛的存在,那么你的應用程序就需要與靜態系統相結合,這會大大降低靈活性。我認為對于數據庫來說,要注意的一點就是,要確保數據庫容易上手,而這恰恰意味著更多的AI技術能夠整合到數據庫中。
      3.依舊每天堅持寫代碼

      鄒欣:在中國IT行業有這樣一種現象,認為程序員過了35歲就要轉型,進入管理層或是其他領域。對此你怎么看?
      Monty:這在很多地方都很常見。這個現象的主要原因在于程序員在管理崗位上的工資要比單純做編程高。因為很少有公司會重視優秀的程序員,這就導致了收入的差異。我認為,如今程序員沒有晉升的空間。與其讓他們被迫轉型,不如建立一個能提升他們收入的新環境。要想做到這一點,公司就得讓他們承擔更多的責任。要程序員擔任管理崗位也行,但前提是依舊要保證他們每天寫代碼的時間。畢竟好的經理人到處都是,好的程序員卻千里挑一。
      鄒欣:據我所知,你依舊每天在堅持寫代碼,但同時也要負責MariaDB的運營和管理。那么,你如何平衡這兩個身份呢?
      Monty:我認為在寫代碼這方面,我還是有一點天分的,所以我想堅持下去。我會雇用經理人為我工作,這樣我就可以做我最擅長的事情。我會參與代碼審查、社區運營以及MariaDB的相關決策。但同時我也會花很多時間維系客戶,與不同國家的開發者交流,其中有許多中國的開發者。我認為,除了寫代碼之外,這是我做的最重要的事?偠灾,我會雇傭經理人來做一部分管理,讓我有足夠的時間在真正重要的事情上。
      鄒欣:聽聞你從20世紀80年代就開始在家辦公,如今這一辦公方式也開始流行起來,對于遠程辦公你有什么看法?
      Monty:事實上我認為遠程辦公是非常靈活的工作方式,自1981年開始我就在家辦公(MySQL和MariaDB團隊都是在家辦公)。我們招人之前可能從來沒見過他們,甚至都不知道對面是個人還是團隊。但是我們的效率一直都在線。能做到這一點的前提,是要對跟自己聯系密切的同事有足夠的了解。至少熟悉他們的樣貌。
      我認為對于八成的開發者而言,在家辦公是一個不錯的選擇?赡苡幸恍〔糠珠_發者,他們的工作負擔比較重,在家提不起精神來。這就需要他們出去走走,見見朋友或是接觸新事物。我剛開始在家辦公的時候,也會擔心這樣是不是會被孤立。所以后來我會定期在家里舉行派對,我也會親自下廚。我們團隊每年也會在一起待上一段時間。
      4.一個好的程序員能抵五個一般的程序員

      鄒欣:對于你來說,在過去幾年數據庫領域發生了哪些大的變化?
      Monty:在過去的五年或七年間,學習SQL(結構化查詢語言)開始成為一種趨勢。但是人們發現SQL過于復雜,因此還需要學習其他語言。于是許多公司開始創新,采用NoSQL(非關系型數據庫) 進行開發。但在過去的幾年里,人們逐漸意識到NoSQL并不是萬金油。但選擇關系型數據庫是否能夠涵蓋NoSQL提供的功能?很明顯,有的可以 ,有的不行。因此我認為,在當下的環境中,對于數據庫的要求在于要保證云端以及本地部署。
      我們不能被一個數據庫束縛。云端提供的是靈活性,你能在數據庫中運行軟件,即使是有成百上千個軟件,而且本地部署的價格更低,控制權限更高,這一點是云端無法提供的。但我依然認為云端有它的優勢,我們要在兩者之間找到平衡。
      鄒欣:30年前我從大學畢業時,人們提到數據庫一般是指去銀行辦業務,F在看來,人們有了更多的選擇,我們能夠借助數據庫實現許多功能。但提到數據庫開發時,人們往往指的是“后端”。那么,對于一個開發者或是畢業生想要進入數據庫領域的人來說,你會給他們怎樣的職業建議?
      Monty:在我看來,從開源數據庫開始入門更簡單,F在開源數據庫很多,如果你的確想成為專家級別的人,想要得到一份很好的工作,你可以找一個合適的數據庫,并學習如何進行優化。但同時你也需要了解人們的需求,你可以和從事這一行的同學交流,并且學習解決數據庫中的實際問題。
      鄒欣:除了多參與開源項目之外,對于中國開發者你還有哪些想說的?
      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

      聲明:以上內容來源于網絡,如有侵權請聯系我們(123@shiyan.com)刪除!

      該用戶從未簽到

      沙發
      發表于 2022-11-8 07:43:03 | 只看該作者
      代碼一次完成,想多了。國內很多程序員就是靠改bug謀生的,改了一個bug,引起更多bug,忙的不亦樂乎,這樣反而不會失業。
      回復 支持 反對

      使用道具 舉報

      簽到天數: 5 天

      [LV.2]偶爾看看I

      椅子
      發表于 2022-11-8 07:44:04 | 只看該作者
      一個大的功能我經常會拆分成很多細節,寫完每個細節我都會測試,最后做整體測試,我寫的程序很少出bug,客戶對我開發的東西也比較放心。
      回復 支持 反對

      使用道具 舉報

      該用戶從未簽到

      板凳
      發表于 2022-11-8 07:45:29 | 只看該作者
      找到一個好經理很容易,但找到一個好的程序員很難。
      ——的確,思考占80%,20%占勤奮。
      回復 支持 反對

      使用道具 舉報

      該用戶從未簽到

      地板
      發表于 2022-11-8 07:50:27 | 只看該作者
      不考慮產品要改功能?
      回復 支持 反對

      使用道具 舉報

      簽到天數: 2 天

      [LV.1]初來乍到

      6
      發表于 2022-11-8 07:54:16 | 只看該作者
      確實牛,一個人就能寫出個數據庫,國內的幾十幾百個人,最多寫出個插件
      回復 支持 反對

      使用道具 舉報

      簽到天數: 1 天

      [LV.1]初來乍到

      7
      發表于 2022-11-8 07:56:54 | 只看該作者
      要程序員擔任管理崗位也行,但前提是依舊要保證他們每天寫代碼的時間。很多人轉型管理崗就是為了不寫代碼[捂臉]
      回復 支持 反對

      使用道具 舉報

      該用戶從未簽到

      8
      發表于 2022-11-8 07:58:52 | 只看該作者
      get
      回復 支持 反對

      使用道具 舉報

      該用戶從未簽到

      9
      發表于 2022-11-8 08:02:33 | 只看該作者
      轉發了
      回復 支持 反對

      使用道具 舉報

      該用戶從未簽到

      10
      發表于 2022-11-8 08:06:52 | 只看該作者
      為什么國外有那么多成熟穩定的框架,就是因為他們有經驗豐富的程序員,中國認為35歲以后程序員要下崗,那是指一般做個頁面,寫個APP那些稍微深點層次就懵逼,離開ide啥也不會的人來說的,所以大齡程序員更有經驗來開發優秀的產品,根本不用擔心失業問題
      回復 支持 反對

      使用道具 舉報

      發表回復

      您需要登錄后才可以回帖 登錄 | 立即注冊 微信登錄

      本版積分規則