最近幾幅精彩的關于2017年網頁開發者所采用技術的可視化圖出現在了網絡上。下圖(偏向後端開發)就是其中之一。
這些對于新手和專家都是超贊的資源。圖裡面清晰地展示了如想從事前端網頁開發員、後端網頁開發員或者系統管理者工作,所需要了解的一切技術。
而我相信這些對于剛開始學習人生頭幾行代碼的純新手是尤其有用的。
下面就是我這麼想的理由。
我程式設計已經超過15年(從8歲時使用qbasic遊戲開始)。我認為我是一個全棧工程師,作為一個全棧工程師,上面可視化圖表中出現的每一項内容我都或多或少地有所了解。
現在好好看看這些圖檔。你覺得它看起來很吓人,對不對?但是成為一個開發者,這并不是一張你需要全都知道的圖譜。完全不是!你真的覺得我——或者任何開發人員——真的知道怎麼使用全部這些東西嗎?
臣妾做不到!
當你剛剛開始接觸電腦程式設計的時候,這些知識完全過多了。你可能聽說過有學生能用10種語言程式設計,見過傳說中的linux專家,或者學習大量的計算機科學概念嘗試跟上你的導師速度。就像其他成千上萬的人一樣,你很可能犯了一個非常可以了解的錯誤:你覺得你需要知道關于程式設計的一切。
但你并不需要這麼做。而且沒有人會期待你做到這點。
即便做過幾年的開發人員之後,我隻在那些圖檔中一小部分技術能夠達到“精通”的水準。其中的一些我甚至不知道是什麼!我曾經在不同的項目上用過它們中的大概一半,但是75%的這種使用情況在我的一生中都不超過1小時。
但是如果你讓我坐下來學習一個小時,我很可能能夠使用。這是因為我知道怎麼像一個開發者一樣去學習。
作為一個開發者,如果你嘗試在每個新技術上都保持在最前列你會常常铩羽而歸。他們實在是太多了,并且比以往變化的都快。最好的方法是,你可以選擇一些技術随時留意最新變化。
是以,你應該學習怎麼像一個開發者一樣去學習,而不是把你的時間花在學習每一個語言和技術上。下面來解釋一下:
學習怎麼看介紹文檔
這裡(https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects)有一個python檔案輸入和輸出的例子。這裡(https://golang.org/pkg/io/ioutil/)在golang上有一個類似的例子。
看見相似點了嗎?當你嘗試回答下列這些問題的時候,範例代碼、簡短的總結、以及類型接口(如果你幸運的話)将是你最好的夥伴。
“這些程式包能否完成我想做的事?”
“我怎麼做到我想做的?”
“這裡有沒有更好的方法來達到我心中預設的目标?”
學習如何閱讀源代碼
本連結(https://github.com/python/cpython/blob/3.6/lib/json/encoder.py)是json編碼器在python的應用。如果這個程式包的一些地方運作的與你預期不同,或者介紹文檔缺失,讀一讀源代碼會讓你找到答案,盡管(常常)格式不是很親切。
一些小技巧我發現很有用:
github的代碼檢索工具。
讓你看到源代碼的互動工具(比如ruby的pry)。
拷貝開源項目并且加入調試語句來看它們如何運作。
學習怎麼調試程式
調試器、中斷語句、列印語句!學習怎麼運用它們來修正你程式中的問題,因為這将是你花時間最多的地方。記住這些有用的東西:
當你開始調試一個程式錯誤,盡可能多的考慮外部因素。要是代碼完全沒有問題,而是跑代碼的伺服器有問題怎麼辦?或者一些資料的格式錯了呢?如果不能馬上發現代碼的問題,你可能考慮錯了方向。
休息一下。當你調試程式的時候,你很容易就隻關注你覺得有問題的部分,完全忽視了真正存在錯誤的地方。讓自己休息一會,别忘了你的大腦實際上隻是一系列互相連接配接的線路,是以如果你在一條路徑上走的太遠,大腦很難跳到另外一條平行的線路上,而可能這條線路才是你實際上尋找的。是以站起來,想想别的事,清空你的大腦。當你回來的時候,程式漏洞将會直直的盯着你的臉。我保證。
程式(絕大部分)總是正确的。它完全按照你的指令運作,這點有好處也有壞處。你需要找你(或者其他人)在哪裡讓它去做了錯誤的事情。
學習如何尋求幫助
這件事并不像聽着那樣掉價。有大量的非常棒的地方可以給你提供幫助,讓你走出困境。我一般會依次看:
谷歌
stackoverflow(http://stackoverflow.com/)網站(常常在谷歌看到)
程式包的github問題部分
當你請教别人的時候,最好能記住下面的内容:
幫助的人對你的問題了解的并不充分(如果有些了解的話)。給他們必要的背景解釋,但是不要說得過于繁雜。這代表你需要介紹你部分的代碼,應用程式日志,程式配置,或者你案例中任何細微的調整。
保持文檔整潔。去讀一篇充滿拼寫錯誤,無格式的代碼,或者沒有結尾的問題描述的錯誤報告,是很困難的。
不要上傳敏感代碼。再三檢查你的貼上去的密碼,通路令牌和使用者資料。如果确實犯了錯誤,你要承擔責任并且馬上解決它。
結語
作為一個開發人員,相關的知識技能太多不可能全部熟練掌握。甚至不要去費力嘗試。學習如何把工作做到最好,建立适合你的工具清單,并且不要嘗試找到所有的答案。專注于如何快速找到答案。
不論你是剛剛開始程式設計還是已經有豐富的經驗,我希望這篇文章對你有所幫助。
記住:沒有人期待你什麼都知道。享受這個過程,并且不要停止學習。
原文釋出時間為:2017-5-5
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号