日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

近40年码龄,从通宵写代码到三思而后行——专访云风

發(fā)布時間:2024/8/1 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 近40年码龄,从通宵写代码到三思而后行——专访云风 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

小學(xué)時跟隨母親去成人大學(xué)學(xué)習(xí)編程,初中開始參加信息學(xué)奧賽,高中寫出人生中第一個成熟軟件——Cview,大學(xué)發(fā)布開源軟件風(fēng)魂系列,后用于網(wǎng)易開發(fā)的《大話西游》《夢幻西游》等熱門游戲,離開網(wǎng)易創(chuàng)立簡悅科技……隨著云風(fēng)在游戲與編程領(lǐng)域的不斷深入,他的聲名也愈發(fā)廣為人知,成為大家口中的技術(shù)大神。“游戲做得好”“博客寫得好”“很極客的一個人”是大家對他的印象,“云風(fēng)大佬”“云風(fēng)大神”“云大”是大家對他的稱呼。

《新程序員》專訪了這位集游戲、編程、開源、創(chuàng)業(yè)、攀巖等標(biāo)簽于一身的極客,深入了解其三十多年編程生涯與人生感悟。

作者 | 田瑋靖
出品 | 《新程序員》編輯部

一位43歲的中年人,已有三十多年時光與游戲和編程為伴,恐怕全球都難找?guī)兹恕?/p>

生于1979年的云風(fēng),在電腦還是稀罕玩意兒的20世紀(jì)80年代初,便成為了他的玩具。電腦沒有顯示器,用黑白電視接,將《兒童計算機(jī)世界》中的程序按步驟寫入、運(yùn)行,就是最好玩的事情。

因?yàn)橛螒驉凵暇幊?#xff0c;又因編程做好游戲,云風(fēng)至今都在游戲與編程的世界中感受樂趣。如果讓一個超過30年碼齡的程序員對年輕人說點(diǎn)什么,他的建議是:想清楚再去做、多聽別人的聲音、抓住問題的本質(zhì)、把復(fù)雜的問題簡單化、看清事物也認(rèn)清自己、做事情要專注、信任和你共事的人。

云風(fēng)。原網(wǎng)易游戲核心成員、杭州研究中心總監(jiān);后聯(lián)合創(chuàng)辦的簡悅科技為現(xiàn)阿里游戲的前身。具有豐富的程序開發(fā)經(jīng)驗(yàn)。硬核游戲玩家。早期在 cfido 和水木清華 BBS 發(fā)表了多篇關(guān)于游戲制作的文章。1997 年開始維護(hù)的個人網(wǎng)站是最早用簡體中文介紹游戲制作的網(wǎng)站之一,收錄個人文章超過百萬字,在游戲界頗有名氣。

談兒時與玩具

《新程序員》:你從小接觸游戲和電腦,大概幾歲萌生了對編程的興趣?

云風(fēng): 我在絢麗的街機(jī)廳看到電子游戲,是在八、九歲的時候,那時就想自己做游戲。小學(xué)時也寫過程序,但不成系統(tǒng)。

在我五歲的時候,家里買了一臺電腦,那是我爸的玩具。他給我寫了一些比較簡單的游戲,也教我編程,但他覺得教不會。大概在我四、五年級的時候,課業(yè)較松,有很多自由時間可以支配,我就跟著母親去成人大學(xué)上一門Basic語言的課程,我每堂課都聽,并且認(rèn)真完成老師留的作業(yè)。課堂上基本都是四十多歲的中年人,只有我一個小孩,老師自然也就認(rèn)識我了。學(xué)完這門課程后,我做了一些小游戲,但當(dāng)時的能力還不能把東西完全做好。真正有把握寫程序,以及正式學(xué)習(xí)編程,是上初中后,1990年左右。

當(dāng)時我所在的中學(xué),素有奧賽傳統(tǒng),包括數(shù)、理、化與信息學(xué)。奧賽老師是我爸的大學(xué)同學(xué),由于在當(dāng)時想找一個會寫程序的人比較難,他就讓我爸去代課,我也順理成章地成為了我爸的正式學(xué)生。

初中幾年的奧賽經(jīng)歷,讓我對自己的編程能力充滿信心,覺得自己什么都能做。初三時還進(jìn)了奧賽省隊(duì),作為高中生的后備力量。那時,初中生參加高中奧賽就算拿不到好成績,也可以到上高中后繼續(xù)比賽,所以我在這方面非常積極。每逢暑假就去大學(xué),帶隊(duì)老師按本科課程教我們計算機(jī)知識,算法、數(shù)據(jù)結(jié)構(gòu)、編譯原理等。

《新程序員》:那時的電腦有顯示器嗎?用這樣的電腦編程,是什么樣的感受?

云風(fēng): 很有意思,它對小孩來說就是玩具。我最早使用的電腦是Z80 CPU的港產(chǎn)機(jī)器——Laser310,這是一臺只有16K內(nèi)存的電腦。為了接顯示器,在電視還沒有普及的年代,我爸就買了一臺舊的9寸黑白電視。后來在初中參加奧賽基本都是用Apple II兼容機(jī)。學(xué)校機(jī)房使用的是中華學(xué)習(xí)機(jī),由于我爸在學(xué)校代課,就從學(xué)校機(jī)房借了一臺放在家里用。中華學(xué)習(xí)機(jī)比較簡單,它有幾本配套書,講解硬件、軟件系統(tǒng),對于當(dāng)時的我來說,這是特別好玩的玩具,玩了好幾年。

《新程序員》:喜歡編程是覺得有趣,還是因?yàn)樵谟嬎銠C(jī)稀有的年代,會比其他小朋友厲害?

云風(fēng): 我從小到大身邊總有各方面比我厲害的人。我的父母屬于工薪階層, 經(jīng)濟(jì)條件不是很好,沒有給我買很多玩具。家里有一臺電腦,就覺得很有意思了,但早期沒辦法跟別人交流其中的樂趣。當(dāng)時《兒童計算機(jī)世界》創(chuàng)刊(1984年),刊登一些有趣的程序,我拿到以后,打開電腦。花兩、三個小時把程序敲進(jìn)去,運(yùn)行一下,覺得非常好玩。

上中學(xué)以后參加奧賽,并不是因?yàn)閷Ρ荣惗嗝从信d致,而是因?yàn)槟玫胶玫谋荣惓煽兛梢员槐K?#xff0c;保送就意味著不用參加高考。當(dāng)然,后來沒有保送成功,高考前雖然沒怎么復(fù)習(xí),但成績也不算太糟糕。

《新程序員》:高中時為什么會想做一個看書的軟件——C-View?

云風(fēng): 讀高三時玩撥號的BBS網(wǎng)絡(luò)(中國惠多網(wǎng)),大家用電話撥到一個固定的位置,傳送信件、下載資源。其中最多的就是電子書。在互聯(lián)網(wǎng)普及之前,BBS網(wǎng)絡(luò)在國內(nèi)流行了好幾年,求伯君、雷軍、馬化騰等人都玩過很長時間。

我從小到大都喜歡看書,但沒那么多錢買書。我發(fā)現(xiàn)在電腦上看書可以省很多錢。在Windows還沒誕生的年代,DOS系統(tǒng)是使用最廣泛的,很多電腦甚至連硬盤都沒有。因此,我想做一個在軟盤上快速打開的電子書軟件,并自帶中文環(huán)境。初期發(fā)布在BBS網(wǎng)絡(luò),按照很多共享軟件的注冊頁面,照貓畫虎也做了注冊框,注冊費(fèi)10塊錢,并留了收費(fèi)地址。直到大學(xué)時間,都一直有人給我郵寄軟件注冊費(fèi)。也正因?yàn)檫@個軟件積累了一些用戶,所以上大學(xué)后又更新了一個版本,后來被《電腦報》的光盤收錄,在全國發(fā)行。

談游戲與產(chǎn)品

《新程序員》:最近在忙什么?

云風(fēng): 最近兩、三年,由于簡悅科技被阿里巴巴(以下簡稱阿里)收購,我就脫離了管理工作。然后,興趣使然,我做了一個3D游戲引擎。原本計劃開源,但我覺得游戲引擎需要完整成熟,才能培養(yǎng)出好的開發(fā)社區(qū),因此在完善之前,還是閉源開發(fā)。因此,從2021年下半年開始,帶了五、六個人的小團(tuán)隊(duì),基于這個自研游戲引擎開發(fā)游戲。在做游戲的過程中,能夠發(fā)現(xiàn)游戲引擎的不足,逐漸完善它。目前是圍繞游戲來完善游戲引擎,等我們做下一款游戲的時候,就可以逐步把游戲引擎中通用的部分抽象出來。本質(zhì)上,做游戲引擎還是為了做游戲,游戲引擎只是其中的一部分。所以,我定義自己目前在做的事情,并不是游戲引擎,還是游戲。

目前在做的這款游戲,是手機(jī)端的單機(jī)游戲。定位于城市建設(shè)和自動化,基調(diào)和我近兩年喜歡玩的一款游戲——異星工廠很相似。在2022年春節(jié),我們剛完成游戲的雛形。

現(xiàn)在的狀態(tài)也很舒服,不負(fù)責(zé)簡悅大團(tuán)隊(duì)的事項(xiàng),又做著自己感興趣的事情,按現(xiàn)在流行的話說,我已經(jīng)財務(wù)自由了,不會為了賺錢去做什么事,也就沒有太大的業(yè)績壓力。

《新程序員》:果然自由的基礎(chǔ)還是財務(wù)自由。

云風(fēng): 財務(wù)自由只是一種流行的說法,其實(shí),自由不自由不在于有多少積蓄,還是看自身的個人需求。我沒有太大的需求,自然就感覺財務(wù)自由了。當(dāng)經(jīng)濟(jì)比較獨(dú)立后,來自外界的壓力會小得多。但我自己還是有壓力的,因?yàn)槲蚁Mo一起工作的團(tuán)隊(duì)一個交代,讓同事覺得工作有意義,生活也能過得比較好。

《新程序員》:你們現(xiàn)在忙嗎?

云風(fēng): 還算有點(diǎn)忙,但至少我負(fù)責(zé)的團(tuán)隊(duì),從不鼓勵加班。我們在晚上六、七點(diǎn)鐘就下班,下班后也不談工作。在我看來,做開發(fā)這項(xiàng)工作,最主要的是把事情想清楚,再按照計劃好的工作時間做事。比如一件事你做了兩年,回頭看有多少時間在做有效工作?可能你做了很多無謂的事情,占用了太多時間。你會發(fā)現(xiàn),最終有效工作花掉的時間并不多。因此,要少犯錯誤、少走彎路,減少返工,這樣就會有很多時間被節(jié)省下來。如果事情沒有做好,我作為團(tuán)隊(duì)領(lǐng)導(dǎo)者責(zé)任最大,是我?guī)е蠹易吡藦澛贰?/p>

《新程序員》:你認(rèn)為做產(chǎn)品最重要的因素是什么,怎樣才能做一款被大家認(rèn)可并追捧的產(chǎn)品?

云風(fēng): 其實(shí)我不太做面向最終用戶的東西,而是更偏底層,是給其他程序員用的。不過我認(rèn)為,作為產(chǎn)品的首批用戶,首先自己要喜歡它,讓自己滿意。我不太贊成僅為迎合市場調(diào)研結(jié)果或別人的想法去做產(chǎn)品。自己喜歡的東西,總有人也會喜歡。如果自己不喜歡,就不應(yīng)該參與這件事。

《新程序員》:相比其他領(lǐng)域,做游戲開發(fā)的難點(diǎn)是什么?

云風(fēng): 游戲的前端開發(fā)決定著一款游戲給用戶呈現(xiàn)怎樣的畫面質(zhì)量和交互效果,一個永恒的話題是把圖形技術(shù)做好,而圖形技術(shù)的發(fā)展速度非常快,也比較復(fù)雜,需要投入大量的時間學(xué)習(xí),更新知識儲備。可能有些游戲不在乎畫面,但在國內(nèi)目前的大環(huán)境下,必須考慮這方面。而游戲的后端開發(fā),關(guān)系著游戲系統(tǒng)的穩(wěn)定性,系統(tǒng)不能出故障,即使出現(xiàn)問題也必須盡快修復(fù)。如果是單機(jī)游戲,就不涉及后端開發(fā)。

另外,游戲軟件和其他領(lǐng)域軟件,最大的不同在于時效性。通常,軟件開發(fā)關(guān)注輸入和輸出,輸入正確,輸出也正確,中間的過程無誤,程序員的事情就做完了。可能會去優(yōu)化代碼,讓它運(yùn)行得更快。但在游戲領(lǐng)域,如果不能在10毫秒內(nèi)把任務(wù)運(yùn)行完,拖延到20毫秒,就是不及格的,而這在很多其他領(lǐng)域,其實(shí)不是個事兒。游戲領(lǐng)域之所以特別強(qiáng)調(diào)代碼的優(yōu)化,是因?yàn)椤叭恕笔钦麄€系統(tǒng)的一部分。“人”的感受是決定了系統(tǒng)運(yùn)作是否合格。10毫秒運(yùn)行一個任務(wù)對用戶來說是“很流暢”,但20毫秒就意味著“卡”,損害了系統(tǒng)中“人”的感覺。因此,游戲系統(tǒng)中的許多事務(wù)必需在限定時間內(nèi)處理完,而這一點(diǎn)卻非常難以衡量。不同的硬件會有不同的環(huán)境,很難確定事務(wù)能否正確按時處理。

《新程序員》:很多偉大的項(xiàng)目往往由一個人或者一個極小數(shù)量的群體發(fā)起并成長起來的,但在企業(yè)里,作為開發(fā)者缺乏高層決策能力,項(xiàng)目的開展也講求完美的計劃,多人頭腦風(fēng)暴,你認(rèn)為這兩者之間是否存在“矛盾”?

云風(fēng): 我個人不太喜歡多人頭腦風(fēng)暴,大部分時候都是在浪費(fèi)時間,只有極少數(shù)頭腦風(fēng)暴能帶來一點(diǎn)靈感。我們啟動新項(xiàng)目時,通常只在吃飯的時候,大家湊在一起聊一聊,很少在工作時間開大會。

首先,我個人比較反感開會這件事,我認(rèn)為做好工作計劃,大家各自執(zhí)行就好了,然后團(tuán)隊(duì)負(fù)責(zé)人盡量了解其他人在做什么事,做好溝通工作。一堆人為了溝通專門坐在一起開會,是非常沒有效率的。

其次,項(xiàng)目做得好不好,最為關(guān)鍵的往往只在一兩個人。

談開源與貢獻(xiàn)

《新程序員》:你是什么時候關(guān)注開源的?

云風(fēng): 在讀大學(xué)的時候,1997年左右,彼時互聯(lián)網(wǎng)剛剛興起,大家使用的大部分軟件來自盜版。有一次我買到一張光碟,里面是各種各樣的非商業(yè)開源軟件。還買到過一套Linux的光碟。這給我?guī)砹撕艽蟮臎_擊,居然有光碟中不是盜版軟件,而可以合法免費(fèi)使用。我發(fā)現(xiàn),其實(shí)這個世界上有很多軟件并不是商業(yè)模式的運(yùn)作方式。后來,在學(xué)校機(jī)房下載到很多開源的開發(fā)工具,也做了一些開源的軟件,當(dāng)時只覺得做開源軟件供大家使用是件很有意思的事,而且在這個過程中可以認(rèn)識很多有趣的人,

當(dāng)時大部分軟件是英文文檔,沒有中文說明書,而我又很喜歡游戲引擎。機(jī)緣巧合,我接觸到了Allegro ,我就加了他們的郵件列表,寫郵件討論問題或回答別人的問題。當(dāng)時翻譯了這個游戲引擎的中文文檔,大概用了一個多學(xué)期的時間。因此還收獲了一個意外驚喜,我此前的的英文水平非常差,高考英文分?jǐn)?shù)很低,大學(xué)第一次考英語4級也沒過。我從來沒想到翻譯文檔能加強(qiáng)了我的英語應(yīng)試能力。第二次報考英語4級,沒有備考卻竟然及格了。更巧合的是,我最近發(fā)現(xiàn)Allegro居然還在發(fā)展,而我最喜歡的異星工廠一開始就是用它開發(fā)的。

再后來我去網(wǎng)易工作,也是源于開源。當(dāng)時網(wǎng)易做《大話西游》的團(tuán)隊(duì),使用了我在網(wǎng)上開源的底層系統(tǒng)——風(fēng)魂,網(wǎng)易希望我兼職做底層渲染的開發(fā)。遠(yuǎn)程工作一個多月后,為了便于團(tuán)隊(duì)間的溝通,才正式入職網(wǎng)易。因此,從機(jī)緣角度來說,是我先做了開源軟件,才進(jìn)入網(wǎng)易做《大話西游》系列,并且一待就是十年。在網(wǎng)易期間還開源過一些小項(xiàng)目,用戶比較多的一個項(xiàng)目是Google Protobuf(通訊協(xié)議),很多年都是國內(nèi)游戲領(lǐng)域的一個事實(shí)標(biāo)準(zhǔn)。

創(chuàng)立簡悅后,做了Skynet,它一誕生就用開源的方式,發(fā)布在GitHub上。因?yàn)槲耶?dāng)時在業(yè)界有點(diǎn)名氣,所以Skynet一經(jīng)發(fā)布就吸引了很多用戶。這個項(xiàng)目從產(chǎn)生想法到衍生出第一個可用版本,不到一個月的時間,發(fā)展至今,一直有很多用戶在維護(hù)它、完善它。

這也是我第一個擁有很多用戶并一直維護(hù)的開源項(xiàng)目。早在大學(xué)期間的開源項(xiàng)目,都是自己把項(xiàng)目完善后才發(fā)到網(wǎng)上。之所以在 Skynet 雛形時就開源,是受 Linus Benedict Torvalds(操作系統(tǒng)Linux之父、Git的開發(fā)者,以下簡稱Linus)影響。2007年,Linux團(tuán)隊(duì)與BitKeeper(彼時是非開源但有條件免費(fèi)的版本控制工具)產(chǎn)生合作糾紛,Linus決定不再使用BitKeeper,大約三天后,Git(開源版本控制系統(tǒng))橫空出世。可能最初連1000行代碼都不到的Git雛形,一直發(fā)展到現(xiàn)在。很多開源的大項(xiàng)目都是從一開始就在眾人眼皮下生長起來的。

除了上述事件外,我更多的是參與一些開源項(xiàng)目的開發(fā)。我們正在開發(fā)的游戲引擎使用了很多開源的庫,基本每個使用過的開源項(xiàng)目,我們都參與了開發(fā),包括提修改、修補(bǔ)丁以及與主要開發(fā)者交流等。另外,我覺得作為一個開源愛好者,甄選合適的庫也是很重要的能力,非常考驗(yàn)一個人的眼光和讀代碼的能力。

《新程序員》:您如何看待開源的發(fā)展及它對世界的影響?未來開源還會向哪些方向發(fā)展?

云風(fēng): 世界上要解決的問題是非常多的,尤其是一些根源問題,但每個問題都只能找到極少的幾個人去解決。因?yàn)閷τ诔绦騿T而言,做得好的人和做得不那么好的人,會相差幾個數(shù)量級。如果你需要解決的問題非常需要人去做的話,那么可能你在世界上只能找到那么幾個人可以把這個事情做好,不是說其他人做不好,其他人可能不關(guān)心這個問題,或者不是他的領(lǐng)域。如果這個前提正確,你就會發(fā)現(xiàn)很多基礎(chǔ)設(shè)施的問題和一些很專注的問題,若限定在一個公司里邊,根本找不到合適的人。只有群體足夠大,大到世界范圍,才可以找到對的人把事情做好或把問題很好的解決,我覺得這是開源最大的意義:把特定的事情和擅長做這些事的人連接、聚集在一起。

正因此,不是所有的代碼都應(yīng)該開源,比如一項(xiàng)特別專注于某個領(lǐng)域或某項(xiàng)技術(shù)的業(yè)務(wù)代碼,開源沒有意義,因?yàn)椴恍枰泻芏嗳藚⑴c。反之,越是能被大眾廣泛使用的項(xiàng)目,越值得開源。游戲引擎同理,大家不需要把精力都浪費(fèi)在同樣的事情上。

當(dāng)然,開源的發(fā)展與互聯(lián)網(wǎng)的發(fā)展相互關(guān)聯(lián),如果互聯(lián)網(wǎng)不那么發(fā)達(dá),就沒辦法把世界各地、各種各樣的人連接在一起。舉個例子,為什么在早年間美國的大學(xué)之間會流行開源、黑客文化等?因?yàn)樗麄冇凶约旱木W(wǎng)絡(luò)。當(dāng)人和人不能順暢溝通的時候,就談不上做開源這件事,而開源又會極大地促進(jìn)互聯(lián)網(wǎng)行業(yè)的發(fā)展,因此我認(rèn)為,至少對于通用的、底層的設(shè)施,必然會走向開源,不應(yīng)該有第二條路。

《新程序員》:你對中國的開發(fā)者在開源領(lǐng)域,有哪些期待或倡導(dǎo)?

云風(fēng): 當(dāng)我們作為開源領(lǐng)域的參與者或貢獻(xiàn)者時,最重要的能力不是代碼寫得比別人好多少,而當(dāng)我們作為一個開源項(xiàng)目的主導(dǎo)者,最重要的能力是與人溝通的能力,聽更多人的意見,求同存異。這和我們在公司當(dāng)差不一樣,在公司里,大家都拿工資,下級需要聽從上級的安排,但在開源領(lǐng)域,大家可能都是“為愛發(fā)電”,只有信任才能讓彼此更好地協(xié)作,把事情做好,因此,通過網(wǎng)絡(luò)語言讓別人相信你的想法,愿意跟你共事,是相當(dāng)重要的。

另外,怎么讓你的項(xiàng)目吸引更多人,一起把你的項(xiàng)目做好,也非常重要。拿到一個開源項(xiàng)目,私下做一個分支,我不喜歡這樣的開發(fā)方式,我覺得對于開源項(xiàng)目,如果它是一個基礎(chǔ)設(shè)施,所有參與貢獻(xiàn)的開發(fā)者就應(yīng)該抱緊了朝一個方向走下去,即使這個方向有人并不喜歡,但可以先參與進(jìn)去,慢慢將其修正為自己喜歡的方向,或逐漸改變自己的想法,盡量減少分叉。對于這種情況,你需要花費(fèi)很多時間與參與者或用戶,也可以稱其為潛在的開發(fā)者,保持良好的關(guān)系。

談人生與感悟

《新程序員》:如今,你已經(jīng)有三十多年碼齡了,在你的編程生涯中,從前和現(xiàn)在的做事方式或觀念有沒有一些變化?

云風(fēng): 改變都是漸進(jìn)的,從趨勢上來看,我越來越趨向于寫更簡單的程序,而不追求性能更好。但我想說,把程序?qū)懞唵?#xff0c;不論是空間性能還是時間性能都更容易變好。性能是一種自然而然的結(jié)果,不必刻意追求。

現(xiàn)在做事情也更有規(guī)律。二十幾歲時,我經(jīng)常通宵寫代碼,一旦進(jìn)入狀態(tài)能寫到第二天早上七、八點(diǎn),還不覺得累,覺得一天能做很多事,非常有滿足感。而現(xiàn)在,我會在每天早上或頭天晚上臨睡前想好接下來要做什么事、幾個小時完成、大概怎么做,以及在每天下午四、五點(diǎn)鐘思考下一步的計劃。即使這個時間段我有很好的工作狀態(tài),也會去想下一步該怎么做、應(yīng)該在哪里停下來。在下班之前,我會把工作告一段落,并想好第二天怎么接著啟動更好。如果是周五,就告一個大的段落,如果這件事比較重要,我在周末兩天也會思考,但不會動手做。把事情分階段完成,講究節(jié)奏,不傾向于突擊,是我在做事方面比較大的改變,三思而后行。

《新程序員》:以你多年的從業(yè)經(jīng)歷來看,優(yōu)秀的研發(fā)人員具有哪些品質(zhì)和能力?

云風(fēng): 很多能力都重要,近兩年我認(rèn)為,比較重要的能力是抓住問題的本質(zhì)。就是可以用足夠簡單的方法去解決根源問題,拋開中間的一些枝節(jié)干擾。

為什么我會強(qiáng)調(diào)用簡單的方法?Keep it Simple and Stupid,即KISS原則。在20年前,我不完全理解這個道理,比如,我在大學(xué)期間以及剛畢業(yè)的時候,比較喜歡做程序的優(yōu)化,讓自己寫的代碼比別人寫的代碼跑得快。很多年輕程序員和我一樣,都喜歡炫技。但我現(xiàn)在看來,這些事不是解決問題的本質(zhì)。這與把事情做簡單有什么關(guān)系?以前我認(rèn)為寫出復(fù)雜的程序并且不出錯是一種出色的能力,可隨著時間的推移,我的代碼需要被別人維護(hù),可能還要和其他人合作,這時我們需要在這群人之間找到一個共同的基點(diǎn),讓代碼更容易理解。所以我們需要讓代碼足夠簡單,讓別人一看就明白。什么樣的代碼是好代碼?并不是看上去好像沒有問題的代碼,而是看上去所有東西都清清楚楚,斷定它肯定不會出問題的代碼。

最近幾年,我寫程序很少炫技。炫技在短時間內(nèi)看,是用一個很巧妙的方法把問題解決掉了,但經(jīng)不起時間的檢驗(yàn)。把復(fù)雜的問題簡單化,對程序員而言是一項(xiàng)非常重要的能力。

另一項(xiàng)重要能力是評估事物的能力,知道一件事情大概是怎么回事,需要多長時間完成,需要什么條件完成,這是靠經(jīng)驗(yàn)堆出來的。也要對自身有清晰的認(rèn)知,這樣你才能規(guī)劃好你做整件事情的流程和時間,減少返工。通常一件事誰都能做,比如,同樣是2000行代碼,有人只需要兩天,有人卻需要兩周、兩月,為什么?當(dāng)一個程序員經(jīng)驗(yàn)不足時,他評估一件事可以用兩天搞定,但他可能又花費(fèi)兩周甚至兩月來解決他做事過程中發(fā)現(xiàn)的問題,改錯、返工,導(dǎo)致和預(yù)期完成時間出入很大。這就是能力的差異,否則程序員的能力差異體現(xiàn)在哪里?別人會的東西,你學(xué)習(xí)后也能掌握,所以真正在做事時,能力的差異就在于一個人的評估能力。

《新程序員》:那么,有哪些人生感悟、研發(fā)感悟可以分享給大家嗎?

云風(fēng): 第一,做事情要專注。想好一件事情就去做,只要花的時間和精力足夠多,不三心二意,這件事終究會給你回報。每個人的生命都幾乎一樣長,你不可能比別人多出很多時間和精力,你也不會比別人差在哪或好多少,那么,一件事情做得好不好,就看你投入的時間多不多。但過程中是有方法的,不能蠻干,時常回顧自己怎么才能把這件事學(xué)好、做好,發(fā)現(xiàn)錯誤或更好的方向,及時修正。

我現(xiàn)在40多歲,每個人從十幾歲開始明白這個世界的道理,到了40多歲,也就30年的時間,每個人都是30年。如果這30年間你都做一件事,那你會超越大部分人。對于任何事情,如果你處于金字塔上層的位置,就會覺得自己是個很有用的人。很多事情必需你來做才能做好的時候,自然而然,這個世界就會給你回報。

第二,信任和你共事的人,接受他們做得不好的方面。以把整件事情做好為主。每個模塊都按照你的想法做,通常是行不通的。你可以找準(zhǔn)你真正想要的那件事,圍繞那件事情,把它做好,其他事情放心交給你的伙伴。我反復(fù)講,人不會比其他人強(qiáng)多少,也不會差多少,你找對人一起做事,接納其他人的不同想法,求同存異,把整件事做好就可以了。

談興趣與偶像

《新程序員》:你是很多開發(fā)者的偶像,你知道嗎?

云風(fēng): 可能有感覺,但我很少談偶像這件事。

《新程序員》:你有自己的偶像嗎?

云風(fēng): 我可能會欽佩某些人,但談不上“偶像”,我會覺得他有些事情做得很好,而已。比如,我覺得Linus做了兩件非常厲害的事情。一件是開發(fā)了Linux操作系統(tǒng),另一件是開發(fā)了Git版本控制系統(tǒng)。這兩件中的任何一件都足以改變世界,但他做了兩件,我覺得他很了不起。而且他平常發(fā)表的一些觀點(diǎn),我也比較認(rèn)同。

《新程序員》:你的一位粉絲想問你什么時候再出書?

云風(fēng): 隨著閱歷的增加,知道的事情越多,感到自己不知道的事情越多,而且覺得自己的想法不夠成熟。寫《游戲之旅》這本書是二十來歲,當(dāng)時覺得自己很多東西都懂,如今覺得自己不懂的更多了,所以就不太敢寫。但我覺得翻譯書籍也挺好的,翻譯《程序員修煉之道》(第2版)花費(fèi)了我大半年的時間。做翻譯也是一種創(chuàng)作,并不是把英文一字一句翻譯成中文,而是按照自己的理解,把作者原本想表達(dá)的內(nèi)容以準(zhǔn)確、可讀的文字重新表達(dá)。

《新程序員》:你現(xiàn)在業(yè)余時間還會攀巖嗎,攀巖的時候會想些什么?

云風(fēng): 比較少,一周會去一次。當(dāng)你真的爬上墻,你不會想什么,你會聚精會神地思考這條線路怎么完成。

《新程序員》:喜歡這項(xiàng)運(yùn)動是因?yàn)檫^程比較專注嗎?

云風(fēng): 我覺得攀巖是個很有意思的事情,因?yàn)槲沂且粋€不太喜歡社交的人,自己玩自己的。過程中就想著面前的問題該怎么解決,如果能力不足,再提高自己的能力,完成線路后非常有快感和成就感。

《新程序員》:攀巖和研發(fā)有沒有什么共同點(diǎn)?

云風(fēng): 所有事情都能找到一些共同點(diǎn)。攀巖時要去思考線路的每一步怎么完成,每個人的身體狀況和攀爬能力不同,方法也不同。所以攀巖之前,需要根據(jù)自己的條件,預(yù)想一套完整的計劃,攀爬就是兌現(xiàn)這個計劃。研發(fā)也是這樣,不能想到哪做到哪,否則中間錯了一步,退回來的代價很大。

本文為《新程序員004》內(nèi)容,二十年前,《程序員》創(chuàng)刊時,我們要全面關(guān)注軟件人的成長。今天,我們依然初心不變:在一行行代碼的背后,是一顆顆鮮活的開發(fā)者想要改變世界的雄心壯志。

因此,《新程序員》從潘愛民到MySQL 之父、MariaDB 創(chuàng)始人 Michael “Monty” Widenius,PostgreSQL 全球開發(fā)組聯(lián)合創(chuàng)始人Bruce Momjian,阿里巴巴副總裁賈揚(yáng)清,著名科技作者吳軍,Vue.js作者尤雨溪……共談我們的程序人生,我們的技術(shù)時代。《新程序員》即將上市,敬請期待。


【第一期】描繪開發(fā)者黃金十年全景圖,戳此👉了解更多
【第二期】帶你了解軟件如何定義汽車,戳此👉了解更多
【第三期】一站了解云原生技術(shù),戳此👉了解更多

???

總結(jié)

以上是生活随笔為你收集整理的近40年码龄,从通宵写代码到三思而后行——专访云风的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。