本文是html5tricks原創翻譯,轉載請看清文末的轉載要求,謝謝合作!
三年前,我還在巴塞羅那的神經科學實驗室工作,忙著研究腦電波、教授心理學上的認知系統課程。而今天,我以設計和寫軟件為生。
你或許會滿頭黑線:隔行如隔山,這轉變也忒快了吧。其實不然,早在以前我就已經寫過很多軟件了——比如想理解掃描出來的有40GB那么多的大腦數據,我得捋起袖子、埋頭苦干,寫個能緊縮這些數據的腳本。所以我一直以來就是一個能干的程序員。但是直到我最終下定決心辭去了這份在學術上能有所建樹的工作,轉去一家朝氣蓬勃的創業公司打工,我才明白了什么是軟件工程師——而更重要的一點是,知道了軟件工程師是干什么的。軟件工程師并不意味著你得學會更多的編程語言、類庫、算法和設計模式。它是一種心態。
如果我能早點懂得這些,我的工作肯定要輕松的多。不過亡羊補牢,猶未晚矣。
下面是我寫給自己的注意事項,是我在這三年里學到的經驗教訓,有的甚至是慘痛的。
1.智力不是萬能的
如果你還年輕,聰明機智能讓你的道路走得更加順暢。聰明能讓你鶴立雞群。如果你有強大的表達能力就更妙了。老實說,聰明和好口才能讓我們在高中和大學里所向披靡,輕輕松松就能拿到個好成績。——如果你兩項都具備,那么首先要恭喜你,你是一個幸運兒。但是同時你也很不幸。因為當你毫不費力地考上一個好學校,隨便看看就能通過考試,其他智力不如你的人卻因此學到了將來會受益無窮的品質:勤奮、耐心、協作等等。
當今社會太過于看重智力。當我告訴別人我曾經在神經科學方面工作過,大家第一個反應往往是:“哇,你肯定超聰明的!”我不得不說,我認識很多人或許智力方面不及我,但是卻的的確確是更為優秀的神經科學家。
智力毫無疑問能為你打開前行的大門,但是如果光有聰明,工作是永遠不可能做好的。勤奮、嚴謹、可靠的網絡,最后還有守信等等,不光是在軟件工程領域甚至在其他專業都是必須的基本品質。而這些是學校不會教給你的。
2.為你自己鼓掌
這句話可能大家看到過很多次了,但是這的確有著其不可忽視的重要意義。無論結果如何,只要努力了,那么就應該為自己自豪,為自己鼓掌。不是所有努力都會有成果。我們誰都喜歡在報刊雜志上出現自己的名字,但是中間過程卻異常艱辛。首先得想出一個好的課題,否決一些假設,然后才能一步一步進行研究——這個課題可以大至人類也可以小至在試管里漂浮——根據需要而定,然后嚴格分析數據和驗證統計資料,如果發現有錯誤就毫不猶豫重新開始。看著過程就頭皮發麻!
寫軟件意味著要規劃特點、研究現有的開源代碼、學習新的模式和編程語言、修復bug、重構及維護等等。如果在這些過程中你絲毫沒有感覺到樂趣,只是把這些步驟當做是得以發表論文、發布產品的工具,那么你永遠也不可能在這個領域真正有所建樹。如果你在提升自己技能方面沒啥目標,那么我建議你還是盡快轉行,哪怕是去做科學家、工程師還是別的什么,都比現在這樣浪費時間要好。
為自己鼓掌、以自己為榮意味著,你在做的項目是自己喜歡的,可能這些項目看上去又小又蠢,為了不影響整個項目的順利完工,可能根本沒有必要投入精力馬上去做,但是你就是孜孜不倦、刻苦攻關。只因為兩個字:喜歡。有意思的是,這似乎在軟件社區是個相當普遍的現象——我們每天在用的很多產品開始僅僅是因為開發者個人的愛好而已——但是卻在科學界極為少見。下面是Konrad Lorenz(奧地利動物學家、動物心理學家、鳥類學家、諾貝爾獎優勝者)寫的我最喜歡的一段話之一,和大家分享:
“對研究型科學家而言,
在早飯前
回顧丟棄寵物的假設
就是最棒的晨練了。”
如果你感覺這聽起來很愚蠢,那么也許你并不應該成為研究型科學家。
3.學習新工具
學習新工具不只能夠擴大抽象的知識領域,并且在有的時候借助這些工具還能幫助我們解決問題。付出總有回報,一切很快就會見分曉。
學習新工具的一個好辦法就是類似上面提到的要自己喜歡,畢竟興趣才是最好的老師。當你構建好新模型或者別的什么之后,可以試著用另一種工具再構建一次。要記得,失敗是成功之母,人都是在逆境中成長,在失敗里學習的。不過如果你認為沒必要繼續了,學到的已經足夠了,或者不可能成功,或者對此你已毫無興趣,又或者你發現這個挑戰超出了你的能力范圍,那么就此放棄也可以。
以下是我強烈建議學習的一些好工具:
- Git和Github。有了Git,媽媽再也不用擔心我的備份了。而Github上有超多的事例代碼,這樣你就不必老是自己重新寫過了。
- 插圖軟件。我個人比較喜歡Inkscape,不過Adobe Illustrator和新出來的Sketch?也一樣棒。
- 學習如何有效使用文本和代碼編輯器。
- 學會如何講話。
- 涉獵Python, R, HTML?和?Javascript等等的基礎知識。
對一個問題的解決方案往往會受到我們所用工具的限制。學習新工具也是為了能跳出這個框,從其他的角度看問題。
如果你還在上大學,那么我強烈建議你每周定一天時間用于學習新工具。如果你已經是在搞研究的博士,那么可以每周兩天。從長遠來看,這會節約你解決問題的時間,別人會因為你的高效率而震驚贊嘆。如果你覺得你沒有那么多空余的時間,也不需要給自己壓力,可以向年長的同事請教,如何去正確分配時間。
4.成為利益相關者
眾所周知,主管以及CEO總是把公司的利益放在首位,這是他們的工作職責。
但我們談到公司的最大利益,我們往往指的是利益相關者的最大利益。而現在的問題是:哪些是主管和CEO眼中的利益相關者,這些利益相關者的利益又占多少比重?
如果你的老板認為他/她自己是唯一的利益相關者,那么趕緊走吧。不然的話,要是找到合適的家伙,你就會被拋棄。還有哪些會是利益相關者呢?投資者或者慷慨的捐獻者,員工,學生,還是全人類,都有可能,關鍵是要盡快找出來。并且如果你不在利益相關者當中,那么離開。
5.發布
“發布”這詞已經成為了科技領域的新寵。它的意思是把我們的產品從倉庫中取出來展示給消費者。這不僅僅是一個動作,更是一種心態。如果不能把產品成功交付給客戶,那么意味著我們以前的工作毫無價值,是無用功。關于這一點,是我們要時刻謹記的。
以前在學術界的時候,我寫的大多數軟件必須一一對應系統。而現在要為五十萬用戶寫軟件,這真的大不相同。
這也意味著,如果不能發布一個完美的產品,我們就得一直迭代。所以如果想盡快得到一個完美的產品,那么發布吧!有壓力才有動力,集思廣益,查漏補缺。
6.了解80/20法則
80/20法則的基本意思是,花上20%的時間能實現項目80%的預期效果,然后剩下20%的項目成果則需要80%的時間才能拿下。舉個例子,假如你從郊區開車前往市區:在20%的時間里走了80%的路程,但是當你碰上交通堵塞,呵呵,剩下20%的路程就會用去你很多很多時間。
那么了解這個法則有什么意義?因為如果沒有這個法則指導,很多人往往會低估完成一個項目所需要的時間。科學家和工程師更是容易犯這種錯誤。不光是這個法則,還有部分是經驗問題:懂得越多,就越能更好的預測開工之后會遇到的各種問題,而這一點是很多人想不到的。
如果你還沒有這方面的經驗,那么可以將你認為所需要的時間乘以五,希望經過五分之一的時間之后,你會明白對80/20法則有所了解。
7.不要出賣自己的靈魂
我攻讀我的博士學位完全是個錯誤。其中一個錯誤我把它叫做“學術犯罪”。因為那個時候我覺得如果我不去讀博士完全是浪費了我的天賦。不過我覺得我有所虧欠于那些支持我學術生涯的人——教授和支付我獎學金的人——因為我最后并沒有去搞研究。他們投資了我的未來但是很可能會失望,因為他們的投資并沒有成果——我并沒有成為一名偉大的科學家。不過這是他們的問題,不是我的。
這同樣也適用于任何其他工作。人們給你投資,是他們利益最大化的選擇。這并不意味著你由此需要出賣自己的靈魂。
8.離開自己的安樂窩
以下是我對世界的看法:
在一個你熟悉的地方,舒適又安全,你可能學進去很少。然而當處于恐慌的心態中,你可能啥都學不會。
每個人都有自己的“狗窩”,在這里,你放浪形骸無拘無束,角落里藏著什么都清清楚楚。不過如果你想學到新事物并且能夠迅速成長起來,那么首先你得離開這個“安樂”的地方,自己在學海里迎風破浪“苦作舟”。
當然,如果你感覺不堪重負,那么其實矯枉過正,已經處于恐慌的境地了。可憐的你,風浪太大掉海里了!現在唯一能做的就是盡量保證自己能活著等別人來搭救。
而正如上圖所示,在到達恐慌的境地之前的最高點,我們能學得更多,成長得更快,變得更優秀。找到你的學習最高點。
9.馴服思維之猴
舒適地坐下來,閉上眼睛,平穩的吸氣呼氣。感覺一下當當空氣流出你的鼻子流過上嘴唇皮膚帶來的美好。什么都別想,好好感受。
大腦放空多久了?有五分鐘了?可能不會。一分鐘?太棒了。20秒或者更少?好吧,這才是正常值。你的思緒就像一只猴子,它在樹上跳來跳去,看到哪個枝干最近就抓著哪個跳過去。你可能還不理解,我再重新用專有名詞表述一下:現在比較流行的說法是聯想性思維。如果你想發明創造,那么聯想性思維絕對是不可或缺的好工具,但是它卻是專注的殺手。幸運的是,專心致志是可以學習的。現在有非常非常多號稱“能提高生產力的高科技”,但是都還停留在表面因素。誰都不希望在寫軟件的時候,思緒飄啊飄得在想意大利面怎么做才更好吃。我們需要馴服這只頑皮的猴子,一勞永逸。
不過適合我的方法可能并不適合你。我通過定期使用上述沉思的方法(這方法還有其他有益之處)從而獲得了很大的成效。不過即便是如此,我也不敢保證每個人都適合。我所要推薦的是,要保持你的頭腦處于最佳狀態,這很重要。還覺得冥想是在浪費時間?我們每周都會去健身房鍛煉身體,不過在心理鍛煉上你得花上至少兩倍于此的時間:減去幾磅雜念。鍛煉自己的思緒以便保證在工作時自己的頭腦可以專注更長時間。