那是時(shí)候放下《24小時(shí)學(xué)會(huì)超級(jí)騙子語言》之類的書了。相反地,每天問自己一下10個(gè)問題,并養(yǎng)成一個(gè)習(xí)慣吧。
是否有某種模式?
探尋可行與不可行中的模式,能發(fā)現(xiàn)(事物)背后的原理,這些原理則驅(qū)動(dòng)著看似無關(guān)的概念和行為。要想對你做的工作有更深的理解,養(yǎng)成問自己“是否有種模式存在?”的習(xí)慣吧。
這不僅僅適用于你的代碼。在各類商業(yè)需求的變化中有某種模式嗎?技術(shù)進(jìn)步的方式中有某種模式嗎?你看到同樣的錯(cuò)誤反復(fù)地蹦出來嗎?
理解就是領(lǐng)悟模式。 —— 以賽亞·伯林
我該如何使它變得更簡約?
通常作為web開發(fā)者,我們想提出復(fù)雜且可擴(kuò)展的解決方案。做一些極其復(fù)雜的東西,會(huì)讓你覺得自己就是宇宙的主宰。而問題是你永遠(yuǎn)不能預(yù)測到產(chǎn)品和業(yè)務(wù)今后會(huì)怎樣變化。
“架構(gòu)”和編寫代碼更像是園藝而不是建筑。你需要有能力去適應(yīng)不斷變化的環(huán)境,解決方案越復(fù)雜,越難以適應(yīng)。
簡約是復(fù)雜的最終形式。 ——列昂納多·達(dá)·芬奇
為什么它是那樣工作的?
知道事情運(yùn)作和知道它運(yùn)作的原因,這是兩件完全不同的事。如果你知道事情為什么是那樣(運(yùn)作),那么你就能夠做出更好的決策。
一個(gè)優(yōu)秀的程序員和懂一點(diǎn)編程語言的人,差別在于理解緣由的深度。
同樣的原則也適用于修復(fù)某個(gè)問題?!爸恍柚貑⒁幌路?wù)。” “你試過重啟嗎?” 當(dāng)問題發(fā)生時(shí),我們經(jīng)常會(huì)想到這些話。每次你這樣說時(shí),你就失去了一個(gè)絕好的學(xué)習(xí)機(jī)會(huì)。
理解問題的原因,能讓你解決根本原因,并且永久消除這類錯(cuò)誤。最起碼,你將不再犯同樣的錯(cuò)誤。
之前有人做過嗎?
無論何時(shí),如果你發(fā)現(xiàn)自己正在發(fā)明一個(gè)復(fù)雜的算法,你很可能就是方法不對。除非你正忙于研究博士論文,一般已經(jīng)有人解決了這個(gè)問題。
需要編寫一個(gè)給離用戶鼠標(biāo)最近的item添加標(biāo)簽的算法?看看Voronoi Tesselations(泰森多邊形法,多邊形密度)。想要找到卡車送貨的最短路徑?看看Dijkstra算法吧。想要找到用戶輸入內(nèi)容的近似標(biāo)記?試試計(jì)算它的 Levenschtein 距離吧。
這些只是幾個(gè)簡單示例,但相信我,還有很多很多。
如果我看得更遠(yuǎn),那是因?yàn)槲艺驹诰奕说募缟?——艾薩克·牛頓
誰最先提到它?
你以為你知道REST嗎?
你有讀過Roy Fielding描述REST的論文原文嗎?你真的明白它的用意嗎?那種比你多 5 分鐘經(jīng)驗(yàn)的家伙,在IDE v7工具中用 REST API 生成向?qū)懗鰜淼牟┛停刹凰銛?shù)的。
幫自己一個(gè)忙,盡可能試著去讀某種概念或理論的原始文檔吧,然后通過各種手段去了解行業(yè)領(lǐng)袖的最新發(fā)展動(dòng)態(tài)。如果你不知道他們是從哪開始的,你怎么跟得上他們的步伐呢?
我熱愛現(xiàn)在所做的嗎?
編程不簡單,咱們承認(rèn)吧。
除了難以外,編程還總在不斷發(fā)展。最先進(jìn)的框架從2年前的“笨重恐龍”已經(jīng)發(fā)展到今天的標(biāo)準(zhǔn)。想要一直站在你的“游戲”頂端,你需要樹立終生學(xué)習(xí)和研究的觀念。
如果你不熱愛你所做的,那么你就沒有跟上其他家伙的希望。所以找到那種讓你激情燃燒的編程類型吧!不要因?yàn)槭袌鋈笨诨蛘呤杖氩环贫鴽Q定成為一名安全專家,不要因?yàn)橐黄恼抡f用戶體驗(yàn)是最熱門的科技工作而決定成為一名用戶體驗(yàn)專家。
再說一次,做你熱愛的。
做你熱愛的,所需的資源將隨之而來?!?彼得·麥克威廉斯
我還可以在哪些其他的地方用到這個(gè)?
我看到Web開發(fā)者給他們自己設(shè)定的最大的一個(gè)限制就是,想象力的失敗。
如果我們學(xué)習(xí)一個(gè)特定環(huán)境下的東西,或者看到解決某個(gè)特定問題的技術(shù)時(shí),我們認(rèn)為這就它唯一適用的地方。這種觀點(diǎn)大多時(shí)候都是錯(cuò)的。每次學(xué)到新東西時(shí),反問自己:“我還可以在哪些其他的地方用到這個(gè)?”
發(fā)現(xiàn)了在圖表上定位節(jié)點(diǎn)的新的好方法?將同樣的技術(shù)應(yīng)用于發(fā)現(xiàn)二維數(shù)據(jù)集中有趣的數(shù)據(jù)點(diǎn)?找到了通過websockets從客戶端發(fā)送數(shù)據(jù)到服務(wù)器端的新方法?它怎樣才能應(yīng)用到可擴(kuò)展的后臺(tái)服務(wù)上呢?有時(shí)你會(huì)是錯(cuò)誤的,但有時(shí)你將是正確的。
這給我們帶來了下一個(gè)問題……
邏輯可以帶你從A到Z,但想像力可以讓你無處不在。 ——阿爾伯特·愛因斯坦
今天我做錯(cuò)了什么嗎?
提高創(chuàng)新的最簡單方法之一就是降低失誤的成本。
游戲開發(fā)公司Valve和其他幾個(gè)公司很贊同這個(gè)觀點(diǎn)。這些也同樣適用于你成為Web開發(fā)者的成長過程。如果你害怕失敗,你就不會(huì)有大的突破。
勇敢點(diǎn)、去嘗試、失敗了、去學(xué)習(xí),然后再來試試。
不要害怕錯(cuò)誤,你將認(rèn)識(shí)失敗,然后重新再來。——本杰明·富蘭克林
我們怎樣使它成為可能?
現(xiàn)實(shí)中,一切皆有可能,而凡事均有例外。
先開始假設(shè)不管你做什么事情都是可行的,然后回推過去來工作。你可能會(huì)發(fā)現(xiàn),你想做的暫時(shí)是不切實(shí)際的,但以當(dāng)今世界的變化速度,它變得可行的時(shí)間,可能比你想的要早。
在事情未成功之前,一切總看似不可能。?——納爾遜·曼德拉
我可以向誰學(xué)習(xí)?
永遠(yuǎn)不要在你是最聰明的地方工作。
挑選擁有可以啟發(fā)你、激勵(lì)你做得更好的同事的工作和公司。沒必要和編程有關(guān)系,在文本編輯器和命令行之外還有一個(gè)世界。從其他領(lǐng)域?qū)W習(xí),并應(yīng)用到你的工作中。
不管怎么樣,保持競爭力更好!
-
開發(fā)工程師
+關(guān)注
關(guān)注
1文章
91瀏覽量
14947
發(fā)布評論請先 登錄
相關(guān)推薦
評論