程式設計師需要自問的 10 個問題

青勁草發表於2015-03-25

你想成為一個開發者/程式設計師麼?

那是時候放下《24小時學會超級騙子語言》之類的書了。相反地,每天問自己一下10個問題,並養成一個習慣吧。

是否有某種模式?

探尋可行與不可行中的模式,能發現(事物)背後的原理,這些原理則驅動著看似無關的概念和行為。要想對你做的工作有更深的理解,養成問自己“是否有種模式存在?”的習慣吧。

這不僅僅適用於你的程式碼。在各類商業需求的變化中有某種模式嗎?技術進步的方式中有某種模式嗎?你看到同樣的錯誤反覆地蹦出來嗎?

理解就是領悟模式。 —— 以賽亞·伯林

我該如何使它變得更簡約?

通常作為web開發者,我們想提出複雜且可擴充套件的解決方案。做一些極其複雜的東西,會讓你覺得自己就是宇宙的主宰。而問題是你永遠不能預測到產品和業務今後會怎樣變化。

“架構”和編寫程式碼更像是園藝而不是建築。你需要有能力去適應不斷變化的環境,解決方案越複雜,越難以適應。

簡約是複雜的最終形式。 ——列昂納多·達·芬奇

為什麼它是那樣工作的?

知道事情運作和知道它運作的原因,這是兩件完全不同的事。如果你知道事情為什麼是那樣(運作),那麼你就能夠做出更好的決策。

一個優秀的程式設計師和懂一點程式語言的人,差別在於理解緣由的深度。

同樣的原則也適用於修復某個問題。“只需重啟一下服務。” “你試過重啟嗎?” 當問題發生時,我們經常會想到這些話。每次你這樣說時,你就失去了一個絕好的學習機會。

理解問題的原因,能讓你解決根本原因,並且永久消除這類錯誤。最起碼,你將不再犯同樣的錯誤。

之前有人做過嗎?

無論何時,如果你發現自己正在發明一個複雜的演算法,你很可能就是方法不對。除非你正忙於研究博士論文,一般已經有人解決了這個問題。

需要編寫一個給離使用者滑鼠最近的item新增標籤的演算法?看看Voronoi Tesselations(泰森多邊形法,多邊形密度)。想要找到卡車送貨的最短路徑?看看Dijkstra演算法吧。想要找到使用者輸入內容的近似標記?試試計算它的 Levenschtein 距離吧。

這些只是幾個簡單示例,但相信我,還有很多很多。

如果我看得更遠,那是因為我站在巨人的肩上 ——艾薩克·牛頓

誰最先提到它?

你以為你知道REST嗎?

你有讀過Roy Fielding描述REST的論文原文嗎?你真的明白它的用意嗎?那種比你多 5 分鐘經驗的傢伙,在IDE v7工具中用 REST API 生成嚮導寫出來的部落格,可不算數的。

幫自己一個忙,儘可能試著去讀某種概念或理論的原始文件吧,然後通過各種手段去了解行業領袖的最新發展動態。如果你不知道他們是從哪開始的,你怎麼跟得上他們的步伐呢?

我熱愛現在所做的嗎?

程式設計不簡單,我們們承認吧。

除了難以外,程式設計還總在不斷髮展。最先進的框架從2年前的“笨重恐龍”已經發展到今天的標準。想要一直站在你的“遊戲”頂端,你需要樹立終生學習和研究的觀念。

如果你不熱愛你所做的,那麼你就沒有跟上其他傢伙的希望。所以找到那種讓你激情燃燒的程式設計型別吧!不要因為市場缺口或者收入不菲而決定成為一名安全專家,不要因為一篇文章說使用者體驗是最熱門的科技工作而決定成為一名使用者體驗專家。

再說一次,做你熱愛的。

做你熱愛的,所需的資源將隨之而來。—— 彼得·麥克威廉斯

我還可以在哪些其他的地方用到這個?

我看到Web開發者給他們自己設定的最大的一個限制就是,想象力的失敗。

如果我們學習一個特定環境下的東西,或者看到解決某個特定問題的技術時,我們認為這就它唯一適用的地方。這種觀點大多時候都是錯的。每次學到新東西時,反問自己:“我還可以在哪些其他的地方用到這個?”

發現了在圖表上定位節點的新的好方法?將同樣的技術應用於發現二維資料集中有趣的資料點?找到了通過websockets從客戶端傳送資料到伺服器端的新方法?它怎樣才能應用到可擴充套件的後臺服務上呢?有時你會是錯誤的,但有時你將是正確的。

這給我們帶來了下一個問題……

邏輯可以帶你從A到Z,但想像力可以讓你無處不在。 ——阿爾伯特·愛因斯坦

今天我做錯了什麼嗎?

提高創新的最簡單方法之一就是降低失誤的成本。

遊戲開發公司Valve和其他幾個公司很贊同這個觀點。這些也同樣適用於你成為Web開發者的成長過程。如果你害怕失敗,你就不會有大的突破。

勇敢點、去嘗試、失敗了、去學習,然後再來試試。

不要害怕錯誤,你將認識失敗,然後重新再來。——本傑明·富蘭克林

我們怎樣使它成為可能?

現實中,一切皆有可能,而凡事均有例外。

先開始假設不管你做什麼事情都是可行的,然後回推過去來工作。你可能會發現,你想做的暫時是不切實際的,但以當今世界的變化速度,它變得可行的時間,可能比你想的要早。

在事情未成功之前,一切總看似不可能。?——納爾遜·曼德拉

我可以向誰學習?

永遠不要在你是最聰明的地方工作。

挑選擁有可以啟發你、激勵你做得更好的同事的工作和公司。沒必要和程式設計有關係,在文字編輯器和命令列之外還有一個世界。從其他領域學習,並應用到你的工作中。

不管怎麼樣,保持競爭力更好!

相關文章