程序員應該捫心自問的10個問題
想成為一名web開發(fā)人員?那么,扔掉《24小時突擊掌握xx語言》這類騙子書籍。你應該養(yǎng)成一個習慣,每天問問自己下面這10個問題。
1.此處有沒有模式?
研究在哪些情況下行得通,哪些情況下行不通的設計模式,能夠讓我們發(fā)現(xiàn)潛在的規(guī)則,了解看似不相關的概念和行為。為了更深層次地了解工作,你需要時不時地問問自己,“此處有沒有設計模式?”。
這句話適用的不只是你的代碼。在根據業(yè)務要求而變的類型變化中有沒有模式?技術發(fā)展有沒有模式?你是否經??吹酵瑯宇愋偷腷ug連連彈出?
理解其實就是一種感知模式。——以賽亞·伯林
2.如何讓它變得簡單起來?
通常作為web開發(fā)人員,我們會想著拿出復雜又可擴展的解決方案。搞點復雜的會讓你覺得自己非常的高大上。問題是,你永遠無法預知你的產品和業(yè)務在未來將會發(fā)生怎樣的改變。
架構和編碼與其說像建造,還不如說更像園藝藝術。你必須得能夠適應不斷變化的環(huán)境。解決方案越復雜,它的適應力就越弱。
簡單才是***的復雜。——達芬奇
3.它為什么這么工作?
知道事物能工作,與知道它為什么這么工作是兩個完全不同的事情。知道一些事物的行為原因,有助于你做出顯然更好的決策。
偉大的程序員,和那些只是知道一門編程語言的人之間的區(qū)別是,兩者處于的知識層深度不同,前者深刻地理解其工作原理。
這也適用于修復問題的時候。“只要重新啟動服務即可。”“你重啟了嗎?”當彈出問題的時候,我們往往會說類似于這樣的話。然而,如果你這樣說了,那你就失去了一次學習的黃金機會。
知道為什么會出現(xiàn)問題,才能從根本上修復問題,才能避免再出現(xiàn)這樣的問題。
4.之前有人做過嗎?
當你自我感覺發(fā)明了一種復雜算法的時候,可能就意味著你正在錯誤的道路上了。***的方法是搜索其他人是否已經解決了這個問題。
需要寫算法,以便于添加標簽到最接近用戶鼠標的菜單項中?別急,已經有解救方法了。想為送貨車找一條最短路徑?也已經有解決方法了。想找類似于用戶剛剛enter的標簽,那么也不用自己絞盡腦汁寫了。
上面這些只是幾個例子,但是相信我,你碰到的問題,別人早就碰到過了。
我能看得更遠,那是因為站在巨人的肩膀上。——牛頓
5.誰***個提出來的?
你覺得自己知道REST?
那么,你讀過Roy Fielding說明REST的原始文件嗎,你了解它的期望目的嗎?暫且不說那個在IDE V7中使用REST API生成向導比你更有經驗的博主了。
所以,告訴自己試著去閱讀概念和理論的原始來源。然后通過各種方法去了解行業(yè)思想***給出的***開發(fā)成果。如果你不知道是從哪里開始的,那么你怎么理解目前的發(fā)展進程呢?
6.我真的熱愛我目前的工作嗎?
首先讓我們面對一個事實:編程很難。
即使很難,編程也在不斷發(fā)展。如果用現(xiàn)在的標準來看,2年前的框架簡直笨拙地就像一頭恐龍。要想留在這一行,那么你需要終生致力于學習和研究。
如果你確實不喜歡編程,那么要想跟上那些熱愛的人的步伐,希望并不大。找找你為什么對她沒有興致的原因。不要因為與市場存在差距或因為待遇還不錯,就決定成為一名安全專家,不要只是因為最近的文章上面評論說,UX是高科技領域中最熱門的職位,就立志成為一個UX專家。
重要的事情說三遍:做自己熱愛的事情。做自己熱愛的事情。做自己熱愛的事情。
做自己熱愛的事情,你所需要的資源也會隨之而來。——彼得·麥克威廉斯
7.還可以用在哪里?
我發(fā)現(xiàn)web開發(fā)人員***的局限之一就是失敗的想象力。
我們在特定的情況下學習的東西,或看到某種用于解決特定問題的技術,我們往往會認為這就是它們的唯一用途。但是,這個想法基本上都是錯的。每次你學到新的東西的時候,都應該問自己:“還可以用在哪里?”。
學到了一種超棒的新的定位方法來定位圖形節(jié)點,那么它是不是也可以運用到在有2個維度的數(shù)據集中查找某一個數(shù)據點?發(fā)現(xiàn)一個越過WebSockets從客戶端發(fā)送數(shù)據到服務器的很棒方法?那么它該如何應用于制定一個可擴展系列的后端服務?有時候此路不通,有時候卻是可行的。
邏輯能力能讓你從A到Z,但是想象力卻能讓你去往任何地方。—— 愛因斯坦
8.我敗在哪里?
最簡單的革新方法就是降低失敗的成本。
游戲開發(fā)公司Valve和它的一些同行就將此當作金科玉律。這同樣適用于web開發(fā)人員,如果你害怕失敗,那么你將永遠不會有大的突破。
勇敢地去嘗試,從失敗中學習,然后再試一次。
不要害怕犯錯。認識失敗。然后從頭來過。——本杰明·富蘭克林
9.如何實現(xiàn)這個目標?
我們生活的世界中只有很少一部分事情是真的完全不可能的。
要抱著自己想做的任何事情都是可能的這樣一種想法去做事??赡苣銜l(fā)現(xiàn)你想做的事不符合當前實際,但隨著世界的不斷進步,它也許比你想象地更快成為了現(xiàn)實。
事情未成功之前,它永遠是看似不可能的。——曼德拉(前南非總統(tǒng))
10.我可以向誰學習?
不要在你是最聰明的地方工作。
選擇那些擁有能夠激勵你,挑戰(zhàn)你,讓你做得更好的同事的工作和企業(yè)。不必與代碼相關,在文本編輯器和命令行之外還有一個世界。學習其他領域的事情,然后應用于你的工作中。
不管如何,僅僅勝任工作是不夠的。