趣圖展示程序員職業生涯的11個階段


本文由  伯樂在線 -  LieGroup 翻譯自  Jeffrey Way。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。

程序員的職業生涯是一段充滿起伏的有趣經歷。考慮到其陡峭的學習曲線,徹底能夠預見你將經歷挫折、啓蒙、驕傲自大這幾個時期,以及穿插其間的各類心路歷程。在這篇文章中讓咱們輕鬆一下,經過一系列搞笑 gif 圖來回顧其中的每個階段 。git

階段1-菜鳥

初入職場的日子,咱們都充滿激情。在此期間,你毫無頭緒,根本不知道該作什麼。就像魚兒離開了水,每一行代碼對你來講都是個迷。Doctype?哈?見鬼,這個<div>究竟是幹什麼用的?第一個階段使人生畏、讓人提心吊膽,卻又激動人心。到底有多少種該死的語言要學啊?程序員

不過,你最大的優點或許就是你不知道水有多深(譯者注:原文」you have no idea how deep the rabbit hole goes」,典故出自《愛麗絲夢遊仙境》中愛麗絲掉進了一個深不見底的兔子洞)。學習HTML只是向前邁出的一小步。web

階段2-起步

雖然花了些功夫,你最終仍是學到了足夠的知識,邁出了你進入編程世界的第一步。儘管第一階段徹底是「我該怎樣/該從哪裏開始?」的懵懂狀態,到了第二階段你已開始慢慢地創建本身的技能體系。固然,CSS定義樣式的語法對你來講依然陌生,但至少你可以在剛買的代碼編輯器中改動一下代碼,並在瀏覽器中看看改動的效果。那真是一種美妙的感受!編程

階段3-極度沮喪

想象一下你在洞穴裏迷路,打着手電照亮每個隧道以尋找出路。每走一步,你都但願看到一絲光亮。不幸的是,咱們這一行的學習曲線很是陡峭。我只能很抱歉地說,那一絲光亮不會持續很長時間。你必須作好在這個階段花費數百小時的準備。當你絕望地試圖搞清楚那些讓你抓狂的東西是什麼意思的時候,你須要不斷,不斷,不斷地閱讀技術書籍。瀏覽器

若是你以爲太過沮喪而難以承受,請平復一下心情,想一想咱們每個人都曾在職業生涯的這個階段或那個階段有過和你同樣的感覺。你不是一我的在戰鬥。堅持下去,不久以後你就將到達「頓悟」階段。微信

階段4-頓悟時刻

「頓悟」那一刻是世界上最棒的感受之一:一瞬間,忽然,你「搞定了」「哦哦哦,如今我終於明白了」。拿我本身來講,我發現編程中的重大突破一般出如今夜裏,此時其餘人正在睡夢之中。當我讀了八遍代碼以後,本來捉摸不透的地方,如今至少有點兒清楚了。markdown

這個階段,你學的全部技術和語言都開始派上用場了。app

階段5-脆弱的代碼

如同以前的階段,「脆弱」階段也至關漫長。在這一階段,你成功地構建了應用程序並實現了預想的結果,可是底層代碼沒法應對客戶需求的忽然改變(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請求侷限於書寫文檔和改正拼寫錯誤。不要低估了這些工做能給他人帶來的幫助。

階段6-模仿

模仿階段很重要。模仿你心目中的大神編寫的代碼——甚至是一行行地複製他們的代碼,除此以外沒有什麼更好的辦法來學習恰當的編程技巧了。別灰心,每種帶有藝術性的職業生涯都少不了模仿階段。幸運的是,gitHub讓這種無聲的崇拜比以往更容易了。固然,複製代碼只能幫到你這麼多,但它開了個好頭。模仿那些可以啓發你的人,最終,你將開始造成本身的風格。

階段7-自覺得是

此時,你終於開始陷入這樣一種境地:你固然還有巨大的改進空間,但自信心也在快速膨脹-或許太快了!人們常說,在頭幾年裏,你還不足以認清本身有多無知!

在這個階段,避免衝動讓本身變得太驕傲自大。驕傲自大對任何人都沒好處,只會讓將來更出色的你在回顧過去時連連搖頭。當你想要在GitHub、Reddit或者StackOverflow中留下嘲諷性的評論「哥們,學學怎麼編程吧」的時候,千萬別這麼作。不久之前你本身也曾是個十足的菜鳥。請傳遞正能量,而不是打擊別人。咱們在同一條戰線上,只是處於不一樣的階段。

階段8-學習Vim

若是你曾觀察過與你共事的開發者,驚訝於他在代碼編輯器中操做的速度,那麼他有多是在用Vim。儘管Vim的學習曲線十分陡峭,但一旦你精通了它,你的工做流程在旁觀者看來也將如魔術通常神奇。

這是你開始掌控你的編程技術和工做流程的階段,合適的工具跟技術同樣重要。

階段9-當代碼成爲藝術

儘管要花上數千小時,但終有一天,你看着本身的代碼,閱讀起來就像操做命令行那樣輕鬆,你會意識到它簡直就跟藝術品同樣。你的代碼有版本控制、良好的抽象、完美的可測試性、可伸縮性,並且易於閱讀。在你職業生涯的某個階段,你可能曾陶醉於本身可以寫出神祕、使人困惑但能正常運行的代碼。可是,利用編程語言中每個可能的技巧和隱藏特性,或者只是爲了炫耀本身的聰明才智而把複雜的邏輯簡化爲一行代碼,這些都不是成熟開發者的標誌。相反,它展示的是一個自覺得是的開發者,徹底不爲未來的代碼維護者着想。

當代碼的可讀性和它實現的功能對你來講一樣重要時,代碼就變成了藝術。到了這個階段,你就是在爲人類而不是爲機器編寫代碼。

階段10—經驗豐富

當編程成爲一種本能,你就到達了職業生涯的下一個階段。此時你再也不思考語言和框架層面的東西,而僅僅是發現問題並從你的開發工具箱中選擇正確的工具來提供解決方案。一個經驗豐富的開發者懂得西部牛仔式的單槍匹馬蠻幹爲什麼不多是正確的道路。與項目組全部成員討論每個新特性、準備白板、編寫故事(譯者注: story)、生成測試,這些都是在開始寫第一行實際代碼前完成的工做。

至此,你已成爲一個成熟、思慮周全、其餘人都願意與你共事的開發者。恭喜!

階段11——搖滾巨星

不多有人能達到這個階段。搖滾巨星階段是職業生涯的巔峯。除了平常工做,你常常在研討會上發言,成爲無數開源項目背後的領軍人物;你要抽時間經過郵件列表參與到web的將來發展併爲之貢獻力量,同時還要在IRC上幫助新人。你是那種以編寫編譯器和解析器爲樂的人。

別人稱呼你爲搖滾巨星或是忍者,但你厭惡這類標籤。你比其餘任何人都清楚——學無止境!