給新程式設計師的10條建議

發表於2015-09-17

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

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

接納自己是一張白紙這個事實

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

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

關注自己能做到什麼

我們是一張白紙,但我們還是可以做很多事情,我們通過學習,將能做更多事情。我們會遇到各種各樣的問題,會產生自己這個不會、那個不會,可能安裝一個IDE都會出問題,可能三行程式碼都會遇到10個編譯錯誤,可能Run起來你不知道結果是對是錯是否符合預期……這都沒關係。

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

如飢似渴地學習

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

當你連一個DEMO都不知道如何建立,當你連一個Hello World都跑步起來,當你弄不懂變數、操作符、函式、物件、類、例項、控制語句,當你不知道那些被老手們當做常識的遞迴、連結串列、單例、觀察者、MVC、CRUD、RBAC……你唯一能做的,就是把自己變成一塊乾燥的海綿,持續不斷地去吸收各種知識。

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

別怕犯錯

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

我們不必擔心別人因為自己犯錯而看輕自己,要知道,此時此刻我就是一張白紙啊,我沒有經驗啊,我什麼都不會啊,我不犯錯才是奇怪的事情。

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

犯錯一點兒也不可怕,可怕的是不總結、不歸納、不吸取教訓。

迎難而上

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

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

所以,要迎難而上,把困難當做獵物,當做鍛鍊的機會,要見獵心喜,用於挑戰自己。

記錄問題和心得

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

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

適時求助

有些人喜歡悶頭黑搞,搞不定也吭聲,要麼把困難扔在那裡不管,自己也停在那裡,要麼繼續黑搞,東搞搞西搞搞始終搞不定,停在那裡。

我覺得應該給自己設定一個期限,在期限到達時還搞不定,就向別人求助。

向別人求助是正常的事情,每個人都可能會求助別人,一個人不可能搞定所有事情。不要擔心別人太忙沒時間幫你,也不要擔心欠別人的人情。要知道“幫助別人”這件事本身,就是一件快樂的事。在幫助別人的過程中,提供幫助的人會收穫快樂。多數程式設計師都很樂意幫助別人。真的。你獲得了幫助,你在遇到別人的求助時也樂於提供幫助,這就夠了。別的不用想太多。

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

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

一個軟體專案的週期,通常是由最晚結束的那個任務決定。

假如你是一個新手,碰巧Take了一個任務,你當然不希望自己的任務是最晚結束的那個。可實際情況表明,你有很高几率扮演那個角色。我要說的是,你需要清楚判斷自己手上的任務的狀況,如果你真的不可能搞定(或者不可能按期搞定),一定要提前告知你的上級,把你的狀況、任務的狀況都說明白,這樣你的上級才可能有時間做必要的調整(比如分配新的資源、延長時間等)來應對可能的專案延期。如果你在最後一刻才告訴別人,那就沒有補救的機會了。真的。

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

向優秀的同伴學習

三人行必有我師。

想讓自己變優秀的一個好辦法就是和優秀的人走在一起。

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

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

讓上級為自己指定導師

如果可能,讓你的專案經理或者領導為你指定一個導師(mentor),讓導師來幫助你制定你的階段目標,並且讓他來指導你達到目標。

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

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

相關文章