給新程序員的10條建議

(注:本文曾發表於《程序員》201509A期)html

我最開始不是作軟件開發的,是一個售後技術支持工程師,你懂的,就是公司賣出的設備壞了,我就到現場去鼓搗兩下,換個零件,重啓下系統什麼的。後來我轉行作軟件開發,頗經歷了一些曲折,遇到了不少實際的困難,再後來我成了程序員,幹上了手藝活兒,就這麼一路過來了,還出了兩本書,《Qt on Android核心編程》和《Qt Quick核心編程》。程序員

後來我也和一些剛入行的開發人員共事過,有的朋友能夠很快度過適應期,有的朋友則會花費比較長的時間,遇到各類不那麼酸爽的事兒。你知道,我是一個愛瞎琢磨的程序員,根據個人我的經驗和我觀察別人的結果,我發現,若是一個新手能夠堅持並實踐這麼幾點,就可以很快從青澀變成熟,完成最初的角色轉變,融入到讓你歡喜讓你憂的軟件開發工做中來。web

接納本身是一張白紙這個事實

我以爲這是一個首要的前提。也許你很優秀,有很強的學習能力,有強大的信念,有超強的小宇宙,有百折不撓的韌性……可是,你沒作過,你確實是一張白紙。這是一個客觀事實,咱們必需要要認可。咱們所作的一切,都是在接納現實的前提下展開的,惟有認可這一點,其它美好的事情纔有可能。編程

咱們平靜的看待這一點,不要妄自菲薄,也不要好高騖遠,從一條線開始,慢慢繪製本身的藍圖,一切可能就會慢慢變成現實。微信

關注本身能作到什麼

咱們是一張白紙,但咱們仍是能夠作不少事情,咱們經過學習,將能作更多事情。咱們會遇到各類各樣的問題,會產生本身這個不會、那個不會,可能安裝一個IDE都會出問題,可能三行代碼都會遇到10個編譯錯誤,可能Run起來你不知道結果是對是錯是否符合預期……這都不要緊。svg

咱們要看本身今天作到了什麼,明天又能作到什麼,一週後能作到什麼,一月後能作到什麼。咱們關注積極的方面,不要由於各類挫敗而將本身陷在不良情緒的泥潭裏,自怨自艾、自我否認、羨慕嫉妒恨、失望、沮喪……這些情緒都是咱們的敵人,都是有不良居心的魔鬼,它們只會壞咱們的事兒。咱們要逃離它們,不給它們機會,咱們的對策就是,看我能作什麼,看我未來能作什麼,看我須要作哪些事情才能夠達到明天、下一週、下一個月的目標。這樣咱們就能積極行動起來,就會把時間花在有價值的地方,咱們也會慢慢更有價值。函數

如飢似渴地學習

咱們是一張白紙,就要如飢似渴地學習,抓住一切機會學習,讀書,求人,讀代碼,上班8小時,下班還有更多時間,咱們能夠把一切能夠利用的時間都投入到相關知識和技能的學習中來。學習

當你連一個DEMO都不知道如何建立,當你連一個Hello World都跑步起來,當你弄不懂變量、操做符、函數、對象、類、實例、控制語句,當你不知道那些被老手們當作常識的遞歸、鏈表、單例、觀察者、MVC、CRUD、RBAC……你惟一能作的,就是把本身變成一塊乾燥的海綿,持續不斷地去吸取各類知識。ui

這個過程是快樂的,幸福的,你會發現隨着你掌握的知識愈來愈多,隨着你能解決的問題愈來愈多,你會發現今天的本身和昨天的本身不一樣,這個月的本身和上個月的本身不一樣,每一天、每一週、每一月都是一種驚喜。就讓本身變成一個小孩,收穫簡單的快樂。.net

別怕犯錯

不少新手怕犯錯,其實沒必要。犯錯不等於失敗,犯錯也是一種學習。

咱們沒必要擔憂別人由於本身犯錯而看輕本身,要知道,此時此刻我就是一張白紙啊,我沒有經驗啊,我什麼都不會啊,我不犯錯纔是奇怪的事情。

就像小孩子蹣跚學步,跌卻是很正常的事情。但是它會在跌倒中收穫寶貴的經驗,摔幾回,摔幾天,它就學會了。

犯錯一點兒也不可怕,可怕的是不總結、不概括、不吸收教訓。

迎難而上

我遇到一些新入行的朋友,面對一個任務時會畏縮,說這個我不會啊,說這個我歷來沒弄過啊,說我搞不定啊……

固然會遇到困難!做爲新手,你遇不到困難纔是見了鬼呢。要把困難當作機會,只有作你眼下搞不定的事情,你才能提高,你明天才能搞定更多的爛事兒。

因此,要迎難而上,把困難當作獵物,當作鍛鍊的機會,要見獵心喜,用於挑戰本身。

記錄問題和心得

我以爲這一點很是重要。在初始階段,記錄遇到的問題,記錄學習心得,總結解決問題的經驗,將會對咱們後來的進步提供很是大的幫助。咱們要模仿牛的反芻,不斷從有限的實踐經驗中總結、消化,得到更多的養分。

同時這也會幫助咱們養成良好的工做習慣,良好的習慣,會讓咱們終身受益。

適時求助

有些人喜歡悶頭黑搞,搞不定也吭聲,要麼把困難扔在那裏無論,本身也停在那裏,要麼繼續黑搞,東搞搞西搞搞始終搞不定,停在那裏。

我以爲應該給本身設定一個期限,在期限到達時還搞不定,就向別人求助。

向別人求助是正常的事情,每一個人均可能會求助別人,一我的不可能搞定全部事情。不要擔憂別人太忙沒時間幫你,也不要擔憂欠別人的人情。要知道「幫助別人」這件事自己,就是一件快樂的事。在幫助別人的過程當中,提供幫助的人會收穫快樂。多數程序員都很樂意幫助別人。真的。你得到了幫助,你在遇到別人的求助時也樂於提供幫助,這就夠了。別的不用想太多。

提早告知上級你真的不能搞定

沒錯。就是這樣,一旦你通過了種種努力,確信本身不能搞定手頭的事情,必定要儘早告知你的上級和小夥伴。

一個軟件項目的週期,一般是由最晚結束的那個任務決定。

假如你是一個新手,碰巧Take了一個任務,你固然不但願本身的任務是最晚結束的那個。可實際狀況代表,你有很高概率扮演那個角色。我要說的是,你須要清楚判斷本身手上的任務的情況,若是你真的不可能搞定(或者不可能定期搞定),必定要提早告知你的上級,把你的情況、任務的情況都說明白,這樣你的上級纔可能有時間作必要的調整(好比分配新的資源、延長時間等)來應對可能的項目延期。若是你在最後一刻才告訴別人,那就沒有補救的機會了。真的。

別擔憂別人看輕你,即使經驗豐富的優秀程序員,也會碰到搞不定的事情。軟件開發的性質就是如此,永遠會有超越你能力邊界的問題蹦出來。這很正常的,讓別人知道,讓你們能想辦法補救,這就是很好的措施。

向優秀的同伴學習

三人行必有我師。

想讓本身變優秀的一個好辦法就是和優秀的人走在一塊兒。

你必定要知道(本身觀察、別人告訴你、上級告訴你)你所在的團隊中的哪些程序員在哪方面比較優秀,好比張三代碼簡潔能自解釋,好比李四設計能力強,好比王五總能搞定技術難題,好比趙六具備卓越的影響力,好比錢八善於分析問題,好比趙十能深刻淺出的講解技術問題,諸如此類,若是你可以清楚,一方面能夠在本身遇到問題時向正確的人求助,另外一方面,你也能夠主動學習。

見賢思齊,自古就是這個道理。有時不少變化是在潛移默化中發生的,你所處的環境、你交往的人,每每會以潤物無聲的方式影響你。孟母三遷,只爲擇鄰,就是這個道理。

讓上級爲本身指定導師

若是可能,讓你的項目經理或者領導爲你指定一個導師(mentor),讓導師來幫助你制定你的階段目標,而且讓他來指導你達到目標。

有個實踐,叫OJT培訓(On the Job Training)。不過不必定每一個公司都運用這種機制。若是你所在的公司沒有,那可讓上級給你找一個導師,或者本身找一個。

有經驗的導師,既能引導你少走一些彎路,又不會越俎代庖直接幫你把事情搞定。這樣你就會本身走在正確的方向上,在節省沒必要要的精力浪費的同時,又能本身收穫實做的經驗。


更多精彩文章,參看「漫談程序員」專欄。

我開通了微信訂閱號「程序視界」,關注便可第一時間看到個人原創文章以及我推薦的精彩文章:

程序視界