程序猿的職業生涯是一段充滿起伏的有趣經歷。考慮到其陡峭的學習曲線。全然可以預見你將經歷挫折、啓蒙、驕傲自大這幾個時期。以及穿插其間的各類心路歷程。在這篇文章中讓咱們輕鬆一下。經過一系列搞笑 gif 圖來回想當中的每一個階段 。web
初入職場的日子,咱們都充滿激情。編程
在此期間。你毫無頭緒,根本不知道該作什麼。就像魚兒離開了水。每一行代碼對你來講都是個迷。瀏覽器
Doctype?哈?見鬼,這個<div>到底是幹什麼用的?第一個階段使人生畏、讓人提心吊膽。卻又激動人心。究竟有多少種該死的語言要學啊?app
只是。你最大的優點也許就是你不知道水有多深(譯者注:原文」you have no idea how deep the rabbit hole goes」,典故出自《愛麗絲夢遊仙境》中愛麗絲掉進了一個深不見底的兔子洞)。學習HTML僅僅是向前邁出的一小步。框架
雖然花了些功夫,你終於仍是學到了足夠的知識,邁出了你進入編程世界的第一步。雖然第一階段全然是「我該如何/該從哪裏開始?」的懵懂狀態。到了第二階段你已開始慢慢地創建本身的技能體系。編程語言
固然,CSS定義樣式的語法對你來講依舊陌生,但至少你能夠在剛買的代碼編輯器中修改一下代碼,並在瀏覽器中看看修改的效果。編輯器
那真是一種美妙的感受!ide
想象一下你在洞穴裏迷路。打着手電照亮每一個隧道以尋找出路。每走一步。你都但願看到一絲光亮。工具
不幸的是。咱們這一行的學習曲線很是陡峭。學習
我僅僅能很是抱歉地說,那一絲光亮不會持續很是長時間。你必須作好在這個階段花費數百小時的準備。當你絕望地試圖搞清楚那些讓你抓狂的東西是什麼意思的時候。你需要不斷。不斷,不斷地閱讀技術書籍。
假設你認爲太過沮喪而難以承受,請平復一下心情,想一想咱們每一個人都曾在職業生涯的這個階段或那個階段有過和你同樣的感覺。你不是一我的在戰鬥。堅持下去,不久以後你就將到達「頓悟」階段。
「頓悟」那一刻是世界上最優秀的感受之中的一個:一瞬間,忽然,你「搞定了」「哦哦哦,現在我最終明確了」。拿我本身來講,我發現編程中的重大突破一般出現在夜裏。此時其它人正在睡夢之中。
當我讀了八遍代碼以後。本來捉摸不透的地方,現在至少有點兒清楚了。
這個階段,你學的所有技術和語言都開始派上用場了。
如同以前的階段。「脆弱」階段也至關漫長。
在這一階段,你成功地構建了應用程序並實現了預想的結果,但是底層代碼沒法應對客戶需求的忽然改變(At this point, you are successfully building applications and achieving your desired end result, but the underlying code is one client feature-request away from popping。譯註:but 後半句不大好翻譯,還望高手挽救。
)。此時。你編寫的方法長達幾十行,而測試的觀念還沒有在你腦海中造成。
但至少你在作一些實際的東西了。就眼下來講,請將你在GitHub上的pull請求侷限於書寫文檔和改正拼寫錯誤。不要低估了這些工做能給他人帶來的幫助。
模仿階段很是重要。模仿你心目中的大神編寫的代碼——甚至是一行行地複製他們的代碼,除此以外沒有什麼更好的辦法來學習恰當的編程技巧了。
別灰心,每種帶有藝術性的職業生涯都少不了模仿階段。
幸運的是。GitHub讓這樣的無聲的崇拜比以往更easy了。固然,複製代碼僅僅能幫到你這麼多,但它開了個好頭。模仿那些能夠啓示你的人。終於,你將開始造成本身的風格。
此時,你最終開始陷入這樣一種境界:你固然還有巨大的改進空間,但自信心也在高速膨脹-也許太快了。人們常說,在頭幾年裏。你還不足以認清本身有多無知。
在這個階段,避免衝動讓本身變得太驕傲自大。驕傲自大對不論什麼人都沒優勢。僅僅會讓將來更出色的你在回想過去時連連搖頭。當你想要在GitHub、Reddit或者StackOverflow中留下嘲諷性的評論「哥們,學學怎麼編程吧」的時候,千萬別這麼作。不久曾經你本身也曾是個十足的菜鳥。請傳遞正能量,而不是打擊別人。咱們在同一條戰線上。僅僅是處於不一樣的階段。
假設你曾觀察過與你共事的開發人員,吃驚於他在代碼編輯器中操做的速度。那麼他有多是在用Vim。雖然Vim的學習曲線十分陡峭,但一旦你精通了它,你的工做流程在旁觀者看來也將如魔術通常奇妙。
這是你開始掌控你的編程技術和工做流程的階段。合適的工具跟技術同樣重要。
雖然要花上數千小時。但終有一天。你看着本身的代碼,閱讀起來就像操做命令行那樣輕鬆。你會意識到它簡直就跟藝術品同樣。你的代碼有版本號控制、良好的抽象、完美的可測試性、可伸縮性,而且易於閱讀。在你職業生涯的某個階段。你可能曾陶醉於本身能夠寫出神奇、使人困惑但能正常執行的代碼。
但是,利用編程語言中每一個可能的技巧和隱藏特性,或者僅僅是爲了炫耀本身的聰明才智而把複雜的邏輯簡化爲一行代碼,這些都不是成熟開發人員的標誌。相反。它展示的是一個自覺得是的開發人員。全然不爲未來的代碼維護者着想。
當代碼的可讀性和它實現的功能對你來講相同重要時,代碼就變成了藝術。到了這個階段,你就是在爲人類而不是爲機器編寫代碼。
當編程成爲一種本能。你就到達了職業生涯的下一個階段。此時你再也不思考語言和框架層面的東西,而不過發現問題並從你的開發工具箱中選擇正確的工具來提供解決方式。
一個經驗豐富的開發人員懂得西部牛仔式的單槍匹馬蠻幹爲什麼很是少是正確的道路。與項目組所有成員討論每一個新特性、準備白板、編寫故事(譯者注: story)、生成測試,這些都是在開始寫第一行實際代碼前完畢的工做。
至此。你已成爲一個成熟、思慮周全、其它人都願意與你共事的開發人員。恭喜!
很是少有人能達到這個階段。搖滾巨星階段是職業生涯的巔峯。
除了平常工做,你經常在研討會上發言。成爲無數開源項目背後的領軍人物;你要抽時間經過郵件列表參與到web的將來發展併爲之貢獻力量。同一時候還要在IRC上幫助新人。你是那種以編寫編譯器和解析器爲樂的人。
別人稱呼你爲搖滾巨星或是忍者,但你厭惡這類標籤。你比其它不論什麼人都清楚——學無止境。