寫給年輕程序員的10點啟示

轉載自:https://segmentfault.com/a/1190000013972995, 侵刪

1. 正確認識自己

相比碼農、程序猿、軟件工程師、張江男、屌絲程序員等等這些網絡詞彙,當你把自己看作是一個屌絲程序員的話,那你也可能就是那個衣食不愁,但整天渾渾噩噩、無所追求的屌絲。我更願意用技匠這個詞來形容程序員,就像我給自己起的花名一樣。程序員應該是那些不斷追求更高技術,並有著自己產品夢的工匠。當你通過對自己技術不斷打磨,一次又一次做出那些優秀產品的時候,你會發現自己不再是他人口中的碼農或是屌絲,而更多被稱為了大師、大神,而受到大家的尊重。

2. 比一般人更加努力

優秀的程序員往往會被同天才或高智商的人聯繫在一起,但我想告訴你,你周圍所看到的那些天才(身邊的優秀程序員)只是在你沒看到的時候花了更多時間工作或者學習而已,當你也堅持這麼做時,你也會變得和他們一樣優秀。

3. 適時建立個人權威

建立個人權威,這能讓其他人看到你的不同之處,併為你在公司或團隊內部構建起良好的影響力。當然,這一切的前提是你通過不斷努力積累了自己的實力,並在恰當的時候去展現它。

4. 遵循最佳實踐

技術更新太快,作為程序員,如何才能適應這種變化呢?其實,就像每年都會有新的流行設計趨勢,然而設計的本質和原則卻始終不變一樣。這些最佳實踐或由此衍生出來的框架、工具都是那些富有經驗的程序員通過大量實踐,總結出來的最優秀的軟件開發思想。通過理解和對它們的有效實踐,能夠讓你站到前人的肩膀之上,對軟件開發本身獲得更深入的理解和認識。

5. 保持好奇心並樂於探索新的事物

優秀的程序員們也往往非常樂於探索那些看似與工作無關的技術。比如,做後端的程序員去學習前端的技能,前端工程師則去學習UI設計,等等,這些雖不會讓他們成為那一個領域的專家,但技術往往是相通的,當你在探索這些新鮮事物的同時,你會發現你原有的技能也得到了提升。

6. 拋開代碼與人溝通

“緊盯著電腦屏幕,不斷敲擊鍵盤,目光有些呆滯。”這可能是程序員給人的印象。而我所看到的那些優秀的程序員卻都不是這樣的,他們往往興趣廣泛,並且都樂於與人溝通交流。程序員們很容易會忽視與人的溝通,這其實對他們的職業生涯發展是不利的。我很支持那些年輕的程序員們堅持去走技術路線,但這不應該成為你排斥與人溝通的理由。你需要與人溝通來獲得他人的幫助;你需要與人溝通來建立良好的工作關係;當你的能力不斷提升,被賦予更多職責時,你更需要與人溝通來管理好自己的團隊,以及與老闆或客戶進行有效的溝通等。

7. 要為優秀的人工作

環境對一個人的影響是巨大的,而最可怕的是當你身處其中時,很難意識到你正在變得越來越糟。我之前帶過一些不錯的程序員,他們中的一些人去了一些整體氛圍或環境不是太好的公司。過了一段時間後,再次與他們碰面聊天時,我發現他們的思維、觀點相較之前並沒有提升,有些甚至反而退步了。

8. 生活、睡眠、旅行

我希望每個程序員都能明白工作、技術、寫代碼這些並不是你存在的意義,而生活才是,你需要懂得生活,並且學會生活。

生活:嘗試有節制和有規律的生活,程序員生涯絕不是一次衝刺,而更像一場馬拉松。

睡眠:很多人覺得睡眠是弱者的表現,他們往往會長時間熬夜,其實我覺得這是這一種惡性循環,反而會使你的工作效率變的更低。

旅行:去任何一個新的地方都可以稱之為旅行,讓你發現和感受新的東西,而這些是從電腦屏幕上無法獲得的。

9. 相信自己的天賦和創造力

每個人的身上都有屬於他自己的天賦和創造力,但它們也絕不是與生俱來的,你需要在生活中不斷地培養和發掘它們。下面是我覺得一些行之有效的方法。

閱讀優秀的書籍:好的想法絕不是憑空產生的,嘗試從書中尋找那些能激發你創意和靈感的優秀內容。

記錄和收集:嘗試用一個小本子,將你轉瞬即逝的好想法記錄下來,它們可能並不直接有效,但下一個更好的想法可能就是從這些你記錄下來的想法中產生的。

嘗試動手:光有好的想法是不夠的,你需要成為一個有工匠精神的人,通過親自動手去嘗試和實踐,你會不斷從中得到新的創造力。

10. 如果上面提到的其他建議都對你無效,那麼就請堅持第2點吧,因為它將成為你最大的競爭優勢。

那些程序員們後知後覺的職涯經驗

1. 你的薪酬與工作量無關

換句話說你是否容易被取代。公司很容易找到一個和你差不多的應屆畢業生,而那些對公司產品非常熟悉,並且起到關鍵作用的老員工,要想替代他們,公司所需要付出的代價及需要承擔的風險就會高得多。所以,不妨擺正心態,正確認識到自己在公司中的位置,努力修煉內功,讓自己變得越來越重要,相信你的薪資也會隨之提升的。

2. 儘可能持續做一件事

既然你對於公司的價值來自於你的不可替代性,那又該如何有效提升它呢?我的建議是儘可能持續做一件事。這既是指技術上的積累,也是指你能完整或較長時間參與同一個項目或開發一個產品。

技術深度及完整項目經驗的重要性,如果你總是在跟隨那些新出現的技術和框架,那你很難在某一項技術上達到理想的深度;同樣,在一個公司裡,如果你總是在更換項目,那你也很難提升自己的價值。參與10個項目,不如完整參與一個項目。持續做一件事是要你把每一件事做透、做好,而不是蜻蜓點水,淺嘗輒止。

3. 唯一不變的就是變化本身

作為程序員,我們又應該如何應對這些變化呢?我想說,你很難去改變所處的環境,或是阻擋那些變化的大趨勢。你所能做的恰恰是培養自己持續學習的能力。

4. 你的聲譽非常重要

除了那些經常掛在嘴邊的誠實守信、踏實肯幹等之外,有一點特別重要,那便是嚴謹。因為它往往是判斷一名程序員是否具備優秀潛質的重要因素。嚴謹的程序員對於分配給自己的任務會認真理解,對於自己的產出會仔細檢查,這些都能大大減少工作中的出錯概率,給團隊或公司中的其他人留下良好的印象。

5. 理解溝通的意義

當我們沒有對問題有深入理解的時候,我們很難寫出正確的程序來,因此我們需要向用戶虛心求教,去真正理解他們所希望解決的問題。

6. 你的右腦將是你成功的關鍵

談到那些我們眼中非常成功的技術大牛、IT高管,都會出人意料地將一些非技術能力作為自己獲得成功的關鍵。比如,編寫文檔或做PPT的能力、演講的能力、說服他人的能力,等等。我雖然並不完全贊同最優秀的程序員不寫代碼這種觀點,但我確信你的右腦將會是決定你能否成功的關鍵。

7. 不要輕易說簡單和不可能

年輕程序員們不應該輕易做出那些過於絕對的判斷,應儘可能去使用科學的方法進行分析和論證,然後用不易被人誤解的方式進行有效的表達,這樣你提出的觀點才能讓大家感到信服。

8. 你不應該總是單打獨鬥

如果你真的希望做出一些具有影響力的東西,那麼光靠個人是很難實現的。你需要和團隊中不同角色的人進行合作,有時候你需要說服別人,有時候你則會被別人說服。

9. 讓你的能力顯而易見

那些優秀的程序員無時無刻不在體現他們的能力,從輕鬆地解決技術難題,到會議上提出被一致認可的解決方案,以及他們寫出的那些優雅且完善的代碼,這些都讓他們顯得與眾不同,彷彿是天生的優秀程序員。但我想說,他們其實都是那些努力並使用了正確方法的人。程序員的能力來自於大量的編碼實踐,以及持續學習的能力和勤于思考的習慣。任何自作聰明,不懂裝懂,以及投機取巧在明眼人看來都只會是東施效顰,顯得如此微不足道。

每個程序員都應該瞭解的一件事

我曾經接觸過一些IT高管及行業的技術大牛,當私下聊起他們是如何變得如此出類拔萃時,他們大多會以自嘲但又略帶得意的語氣來講述他們的那些獨門秘籍。

  • 我的文檔寫得特別好。
  • 我的口才很好,總是能成功說服別人。
  • 我的PPT做得非常棒,是公司裡數一數二的。
  • 我寫過幾篇很受歡迎的技術文章。
  • 我熱愛開源文化,並在社區裡很有名氣。
  • ……

我發現,這些普通人眼中的大神們很少會提及自己的技術有多牛,反而更多地把功勞歸於那些看似與技術毫無關係的能力。大家千萬別誤以為他們只是一群華而不實,靠著一些小伎倆往上爬的小人。完全不是,而且我敢向你保證,他們中的每一個人在擔任程序員或負責其他技術工作時,同樣都有著非常出色的技術能力和優秀的工作表現。但為什麼在他們眼中這些還不足以使他們達到現在的高度,反而是那些不起眼的寫文檔、做PPT、演講等這些技能使他們能夠在一次次競爭中勝出,併成為了我們中的佼佼者呢?

其實在我看來,他們所謂的這些秘籍,都可以歸納為一種能力,那就是自我營銷。

一名程序員如果能夠儘早意識到自我營銷的重要性,並有意識地鍛鍊和運用這種能力,那將對你的事業產生有益的幫助。

那麼對於程序員們來說,又有哪些能夠提升自我營銷能力的方法呢?下面便是我的一些建議。

1. 讀與技術無關的書

我建議只買一些經典的技術書籍來幫你打基礎,然後從網上去學習一切新的東西。我尤其鼓勵大家去讀那些與技術無關的書籍。程序員不善於自我營銷,其中一個重要原因是他們自身所掌握的知識體系太過於單一,很難跳出技術範疇與人交流,並引起別人的興趣和認同。你可以讀任何歷史、經濟、人文、藝術類的書籍,它們都能夠幫助你豐富自己的知識和思想,使你變得更加全面和完善,而這反過來,又能幫助你建立信心。

2. 會寫文檔

文檔可能是你完成代碼編寫後一個最佳的展示機會。當代碼實現了它的功能之後,就很少有人會再去看它,除非它出錯了。但文檔被閱讀的概率卻大得多。從一個文檔中,我們可以看到關於作者的很多東西,思路是否縝密,邏輯性是否強,設計方案是否優秀,等等。可以說,文檔質量的高低是衡量一名程序員是否優秀的重要標準之一。

3. 學會包裝

說到包裝,人們往往會產生一種不好的感覺,把它與虛偽、假的東西聯繫在一起。其實,我所說的包裝應該包含兩層意思:

  • 知道什麼是美的(優秀的)。
  • 精心製作。

作者舉例一個普華永道的高級經理通過一個長達114頁的非常精美的PPT而贏得了保監會關於償付能力改革的會議。

在日常工作中,我經常發現身邊的程序員很難寫出美觀整潔的文檔或PPT來。這一方面與我們從小缺乏美學教育有關,而更重要的往往是他們並沒有真正用心去製作它。其實,我們可以通過尋找一些優秀的文檔示例來學習如何製作優秀的文檔,這其實並不困難。知道什麼是優秀的,然後像寫你的代碼一樣用心去製作就行了。

4. 嘗試多講

講話一直是很多程序員的硬傷,當然這也曾是我的硬傷。根據我的經驗,你需要跨過以下兩個障礙:

  • 敢說。
  • 讓說的和你想的一致。

5.建立社會化聯繫

一個完全封閉的程序員一定不是一個優秀的程序員。優秀的程序員往往願意並善於與他人交流,分享自己的經驗和想法,並在交流中獲得有益的東西。這樣做有很多好處:

  • 通過這些社會化的活動能夠使你的想法和技能更加完善。
  • 能夠使你建立權威,你的技術博客,在一些社區上的技術問題解答,以及你的開源項目等都會使人認為你是這方面的專家。
  • 同樣,你也可以獲得他人的幫助,來解決棘手的難題。
  • 你可以找到與你有相同興趣的人,一起做有趣的事情。
  • 你的社交網絡將因此擴大,這意味著你所獲得的機會將會更多。

程序員的煩惱

1. 是否還應該留在一線城市

一切都能為你的生活賦予意義,並讓你感到更加快樂的話,那你還是應該更堅定地留下,而非選擇離開。

2. 小公司做的事情太繁雜了

時常會說“雜事不雜”,雖然看著被很多與技術無關的事務纏身,但它們對你來說同樣具有意義。你從中可能獲得溝通能力、管理能力、建立更廣的人脈,在企業內部建立影響力,等等

3. 創業公司中的危機感

無論成功與否,經歷一次完整的創業都將讓你受益匪淺。你將學到很多在大公司僅僅做一顆螺絲釘所學不到的東西。雖然在此過程中,你一定會有挫敗感、焦慮,但或許堅持一下就會看到曙光。

另外一點我想說的是,創業的過程將讓你獲得不同的眼光。創業大多是在一個新的領域中進行的,你不應僅僅專注於公司所使用的那些技術,而更需要通過深入理解這個新的領域,去獲得不同的視角和眼光,因為它們也會在未來成為你的核心競爭力。

4. 技術單一,想學習更多

我總是很鼓勵身邊的程序員們去涉獵不同的技術甚至領域,但前提是你必須首先對某一門技術做到精通。技術是需要深耕的,深入學習一門主流的開發技術,並不斷提升編程思維,比對很多技術棧都淺嘗輒止要好很多。因此,如果精力有限不妨先學好一門技術,你會發現之後再去學習其他技術會變得容易許多,因為它們之間往往都是相通的。

5. 我想自學編程,應該學哪一門語言?

如果你真的沒有任何思路,只是希望你學的這門編程語言能夠有用,我的建議是JavaScript,因為它看起來是唯一可能在未來所有領域內得到應用的編程語言,從我們的移動設備,到傳統的Web應用,再到服務器端開發甚至是硬件編程,它幾乎無處不在。

6. 大專學歷,能進大公司嗎?

全日制本科幾乎成了所有內部職位的最低要求,所以學歷上的缺失確實會成為你進入大公司的障礙。當然還是有例外的情況:

  • 通過內部員工的推薦。
  • 通過外包公司進入後,再轉為內部員工。
  • 努力成為某一領域的專家,或者建立個人影響力。

如果你還是一名大專在讀學生,那麼我希望你不要過早焦慮,嘗試問問自己除了學歷之外還有什麼讓你能夠脫穎而出的東西?是否有自己的個人項目?是否為知名的開源項目貢獻過代碼,甚至只是參與編寫文檔?是否通過寫博客闡述過自己的獨到觀點,並得到大家的認可?在哪家公司實習過?這些都可能抓住僱主的眼球,從而彌補你在學歷上的不足。

給年輕程序員的職涯建議

1.儘早確定你想做的事情。儘早確定自己想做的事情——你的職業目標,意味著你可以獲得比其他人更多的時間去努力。

2.一萬小時定律

3.提高工作效率。有以下兩點建議:

  • 加快工作節奏
  • 藉助工具完成工作

4.簡明的溝通方式

5.持續學習

6.學會控制情緒

7.讓最優秀的人圍繞在你身邊

8.善於歸納與表達

9.掌握英語

10.睡眠是你更強大


分享到:


相關文章: