碼農雜談:Taste

代碼首先是寫給人看的,然後才是在機器上運行。一個每天“高效”產出幾百行爛代碼的人,本質上是在給團隊做負功,屎一樣的代碼生產的越多,對團隊的拖累越大。我去年接手公司的項目,一個好好的開源項目,一個實習生兩個月咣咣咣加了一堆代碼,生產(屎一樣的代碼的)效率極其驚人,結果我接手後,帶著兩三個人花了近一年的時間才把屁股擦乾淨——幾乎每個月定位到的 bug 都能 blame 到這位前同事……

代碼是有生命週期的,並且與代碼的 ad-hoc 的程度成反比。碼農的一大悲劇就在於,在職業生涯的早期,多數時間都在寫著各種 ad-hoc 的代碼。比如拿個開源項目魔改一下,寫點腳本,寫幾個頁面加幾個 button。多數人都熬不過這個週期,然後要麼轉行,要麼激情磨滅了——我不敢說自己已經脫離了這個階段。就我工作這幾年接觸到的人和項目,大多數代碼的生命週期都短得可憐……少有超過兩年的,也許是我的職業生涯太 low 了吧。這也是我現在越來越反感各種所謂“小步快跑”的開發方式。所謂的敏捷開發在大多數企業完全是被爛用了。真正的敏捷開發,需要強力的 PM,仔細推敲的需求,強力的工程師,良好的自動化測試部署監控系統的支持……你什麼都沒有,碰個事情就說“來來來我們先 work around 一下把這個問題臨時解決一下”,這不叫敏捷開發,這叫胡鬧開發。然而,實話實說,在資本強力的鞭策之下,碼農其實是蠻弱勢的一個群體,很多時候做的事情就是把現實世界的需求翻譯成機器能“理解”的代碼,如是而已。 從某種程度上講,寫代碼和寫文章是非常像的,代碼運行在數字世界,而文章則運行在想像中的思維世界。一個優秀的工程師,對待寫代碼,應該像一個優秀的作家對待寫一部作品一樣。好的代碼,需要仔細的推敲設計,反覆的迭代修改,需要在動筆之前就在腦海裡布上所有的“劇情”,就像一部小說一樣。但是寫代碼和寫文章又不完全一樣,廣義上的文章(小說,散文等各種作品),寫完了,作品就算結束了,但是代碼則永遠沒有“封筆”的那一天。因為軟件世界在不斷的進化,代碼封筆,就意味著這段代碼開始慢慢腐化走向死亡了。這是寫代碼和寫文章的一點不同,也是大部分痛苦和樂趣的來源。

當你學了 C,學了 C++,學了 Java 學了 Linux 學了 JavaScript 一堆一坨一噸一挑子一卡車一輪船的東西,耗了兩年終於入了門能做出點小東西后,這時候如果想進階,想在這個行業幹到 35 歲之後還能饒有興致的繼續幹下去,記住一個很重要的詞:taste。工作這麼多年,接觸了這麼多人,我必須說,大多數碼農的 taste 實在是太差了……寫代碼做設計寫文章,對什麼是好的什麼是差的一點感覺都沒有……為什麼一個公司一個團隊一定要有那麼一些 Senior 甚至 Staff 級別的有點 taste 的工程師鎮著場子?因為如果沒有這批人,一群連什麼是好壞 taste 都搞不清楚的碼農搞吧搞吧慢慢就會把手頭的項目做死……我是說真的。怎樣去培養好的 taste?我的意見是,不要侷限於代碼,去看那些好的文章,去看那些讓你流淚的電影,去聽那些讓你心潮澎湃的音樂,去學 LaTeX 細究下各種字體的排版細節,去學學 Mathematica 看看什麼叫做令人驚豔的交互,去買一個頂尖的降噪耳機體驗下什麼叫做瞬間安靜的世界……跳出你固有的思維舒適區,多體驗多嘗試多思考,當你的手、眼、腦、耳變得挑剔,當你聽到 work around/trade off 這類字眼就本能得反感噁心和不舒服,你就明白,什麼叫做“由儉入奢易,由奢入儉難”,你就懂得什麼是好,什麼是差,什麼叫做 taste。

大多數企業 taste 之差,遠超你我的想像。舉個例子?好吧:

碼農雜談:Taste

這是淘寶開放平臺的開發者文檔不需要懂多少數字排版的知識,我相信每個人都能看出來這份網頁的排版有多爛吧?你要知道,這可是淘寶,市值幾千億美金,開發者平臺上入駐了數以萬記的開發者,這個網頁每天的訪問量可能會有幾十萬。就這排版……還開放?開放個屁,要不是壟斷,誰樂意去讀這些鬼畫符一樣的文檔。

碼農雜談:Taste

碼農雜談:Taste

這是我隨便找的一篇官方微信公眾號的文章,看似色彩斑斕,然而我要告訴你,中英文排版中,段落文字水平居中是最爛最爛的排版方式。看看段落兩邊的錯落邊緣,你不覺得這種居中排版的段落,就像被你家狗啃過的面巾紙麼? 關於 taste,再多說一句吧,taste 的好壞,甚至技術的牛逼與否,並不決定一個企業,甚至一項事業的成功與否。世間萬物如果都遵循“如果怎樣就會怎樣”的模式,那這個世界未免有些太簡單了,簡單到有些無聊。以前我和人爭論,寫代碼之前應該仔細調研,全盤考量,謀定而後動,有人就跟我舉例說,“滴滴打車最早的項目就是找個外包隨便做的”,“淘寶最早也是買來的代碼隨便改的”,然後試圖說服我採用所謂的“小步快跑”的開發模式,work around 套 work around,trade off 疊 trade off,先解決需求。可是,可是,可是,可是,可是的是,滴滴走到現在,和他最初的 App 是請外包開發還是自己開發的,有半毛錢的關係麼?淘寶走到現在,最初的代碼來自於哪裡又能有什麼決定性的影響?我同樣可以說,你看 Github,從成立之初到現在一直保持了極高的代碼、文案和設計的水準;看看 Stripe,靠著極其友好的 API 和開發者文檔不知俘獲了多少開發者的芳心。一個商業項目的成敗取決於太多的因素了,技術的牛逼好壞也許至關重要,也許微不足道。因果律在這裡是不成立的。所以一個人一個公司有沒有好的 taste,本質上就是“江山易改、秉性難移”。

資料獲取方式,關注小編,私信"學習"即可,手機用戶可直接私信,電腦端尚未開放此功能,還需下載app,然後私信回覆“學習”然後今天就分享到這裡,大家記得點贊收藏,分享轉發,關注小編哦!免費領取本文的Java視頻學習教程。


分享到:


相關文章: