1.10 新手看高手
入門之前,很多程式設計師心裡有乙個高手情結。通過書籍、**、傳說渲染,他們認為it行業是乙個高手林立的行業,好像這些高手創造了這個行業的奇蹟。這些高手可能是國外的,也可能是中國的。這個高手可能是乙個具體的人,也可能抽象於某些著名軟體背後看不見的程式設計師。只知其名,不聞其聲,這個時候的高手是一種無所不能的神,一種虛幻,是令程式設計師崇拜的偶像。
到了工作崗位之後,這種高手情結更加嚴重,由於新手發現自身技術水平有限,而內心想盡快擺脫這種狀況,使得很多新手對高手感覺更加恐懼和渴望。我發現在it行業中,中國程式設計師認為外國的程式設計師是高手;網下的程式設計師認為網上的是高手;搞硬體的人認為搞軟體的是高手,搞軟體的認為搞硬體是高手;搞應用程式的認為搞系統的是高手;搞介面設計的認為程式設計師是高手,程式設計師認為搞介面設計的是高手;年輕的人認為年長的是高手,年長的認為年輕的是高手;企業內的程式設計師認為企業的外部程式設計師是高手;客戶單位內部的程式設計師認為軟體公司是高手,軟體公司的程式設計師認為客戶單位內部的程式設計師是高手等。所有這些高手都是建立在程式設計師本身對某個領域無知或掌握不精的基礎上。因此,高手的多少是和程式設計師的水平成反比的,如果程式設計師水平高,那他眼中的高手就會少;如果水平低,那他的眼中的高手就會多。所以,不同程式設計師對待高手的標準應該是不同的。
高手情結是新手的正常心理現象,它反映了程式設計師對未知領域的嚮往,說明程式設計師還有遠大的理想,還有激情,還有奮鬥的目標。關於高手,我想新手應該關注以下幾個方面。
1.向身邊的高手學習
身邊的高手,一般是新手的第乙個師傅,也就是第乙個培養他的那個人。這個人對新手來說是乙個決定其技術命運的人。程式設計師很多人可以忘記,但是第乙份工作,第一次帶他的人是很難忘記的。假定這個師傅帶他的時間有一年以上,我想從這個程式設計師身上一定能夠看到其師傅的某些影子。比如說,這個師傅喜歡的語言,這個師傅喜歡的程式設計格式等,都能在新手身上找到。
作為新手來說,除了要向他的師傅學習之外,也要把身邊的同事看做高手,要向他們學習,只要單位或團隊範圍內有比自己強的,不管這個人是早於自己進入這個單位一天,哪怕只是乙個函式、乙個語句、乙個呼叫、乙個演算法都值得去討教和學習。這個時候學習是很實在的,是能解決具體問題的。
向身邊的高手學習,就是要充分利用身邊的優勢,可以面對面地接受別人的技術傳授。新手千萬不要顧及面子,或不好意思,或怕麻煩別人,能請教的就趕快請教,學習是硬道理。向別人請教不僅僅是去弄懂某個問題或解決某個問題,更重要的是培養與人溝通和建立良好人際關係的習慣。
新手千萬不要有那種有人會主動幫助自己的幻想,一方面是大家工作都很忙,另一方面很多程式設計師不習慣於主動幫助新手。
要注意身邊的高手並不是所有問題都能解答的,遇到這種情況,新手不要吃驚,很多「偽高手」就是在這個時候被揭開其偽裝的。對於他們,新手要懷有寬容的心態,應坦然面對,不要深究,這個人不能解答,那就去請教另乙個人。新手要記住,你請教的不是高手,而是解決問題。因此,向其請教的人是否是高手並不重要。
新手千萬不要太迷信不可觸及的高手,因為迷信了也沒有用,而且也不會對你的實際工作有什麼幫助,而應該把對那些高手崇拜的時間和精力用在身邊的工作上,這可能更有成效。只有當自己有了一定進步之後,確定了自己發展方向之後,我們才有本錢和資格向外部高手學習。
2.學習高手的技術
(1)軟體製作流程
我記得很多新手並不會安裝作業系統、不會安裝開發環境、不會配置網路、不會新建專案、不會新建程式、不會編寫程式、不會執行程式、不會除錯程式、不會製作安裝盤等。即使會也只是知其然,而不知其所以然。而一般的程式設計師對此駕輕就熟,而且沒有太多變化,相對機械,新手死記硬背就行了。因此,新手首先要把程式設計的流程搞清楚。把流程搞清楚之後,我們就可以把精力放在編寫程式上了。
(2)語言的掌握
在程式的編寫方面,新手常常遇到的就是語法問題,如語句使用不當、變數問題、格式問題、備註問題、命名問題、函式呼叫問題、引數問題等,這些問題就不那麼簡單了,不同的程式設計師會給出不同的解決方案。當解決這些問題之後,只能說是新手剛剛學會程式設計的工具而已,接下來就要學習如何運用這些工具來開發專案了。
(3)開發專案
這個時候新手就會遇到需求問題、功能問題、處理流程問題、資料結構問題、演算法問題、可靠性問題、邊界處理問題等,針對這些問題,不同的程式設計師更是有不同的觀點和看法,所以,新手要多聽不同的解決方案,通過比較來加深對這些問題的認識。
(4)高階技術
以上就是滿足開發的基本要求了,但是,能執行的程式並不是乙個好程式,只是站在乙個專案的角度上來看技術,也不是最好的技術。因此,新手要更進一步提高自己的技術水平,還要在程式的架構、介面、引數、共享、安全、效率、互動等與程式密切相關的問題上進行**和研究,而在這方面有所建樹的程式設計師已經不多見了。所以,新手要多留意,自己也要多積累,在這些方面多下工夫。
3.學習高手的方法
具體的問題是永遠解決不完的,尤其是程式設計。遇到的問題可以說是千奇百怪,無所不有,因此,新手不能把全部的精力放在學習解決問題上。新手要在學習具體問題的解決方法前提下,更要學習高手們是如何解決這類問題的。通過方法的學習,可以使新手有很大的進步。例如,高手向新手講解乙個具體程式的除錯方法。新手除了掌握這個程式的除錯方法之外,還要學會跳出具體程式,掌握好除錯基本流程、主要除錯命令和注意事項。只有這樣,當新手再次遇到除錯問題的時候,就可以不用再找高手指導了,可以用這種方法自己來處理了。
高手的另一特點就是站得高,看得遠,一般新手的問題,他們都很輕鬆擺平,所以,新手也要在平時看問題時,盡量地跳到具體問題之外,站在更高的層次上看待具體問題。
4.學習高手的激情
高手除了技術水平高、工作方法好之外,還有一點是新手要學習的,那就是他們的激情、堅持、專注。高手之所以是高手,一定付出比常人更多的勞動和辛苦。而這種付出並不像工作那樣是強制的,往往是他們心甘情願的,而且樂在其中。新手可能對老程式設計師沒日沒夜地連續工作感到不可思議,但是一旦他們也這樣做了,他們同樣也會感受到那種付出後獲得成功的喜悅。
在遇到困難的時候,新手要向高手學習那種永不放棄的精神,不戰勝困難就絕不罷休。高手之所以是乙個高手,那是在某個領域,他能比別人有更大發言權,因為他比別人更了解這個領域的客觀規律,這個規律是他長期專注和研究的結果。因此,新手遇到各種問題時,要沉下心來,注意觀察問題中的細節,不放過任何疑點。只有這樣,新手對問題的理解就會比別人更加深入。
5.不迷信高手
其實,現實中並不存在完美的高手,高手總會存在這樣或那樣的缺陷。新手不要對高手一味盲從,程式設計好,不一定介面設計好;程式設計好,不一定設計好。所以,新手要有自己判斷是非的能力。例如,高手讓新手按照某種要求編寫程式,而這種要求本身就可能存在問題。當新手發現這個問題時,就應該停止程式設計,找出問題的原因所在,最好能找出解決方法,向高手說明情況,爭取高手的理解和支援。這樣高手就能看到新手的進步。而新手也可以在自己發現的新方法的過程中找到自我價值。
雖然我們是新手,但是,面對高手我們無須恐懼,我們會發現,隨著時間推移,自己看到的高手會越來越少。這說明自己的技術水平在不斷提高,當有一天有人開始請教你問題的時候,儘管你不處在高手的最前列,但是,你已經步入了高手行列。其實,面對高手就是面對未來的自己。
程式設計師成長路線
圖書封面 我的程式設計師成長之路 程式設計師的成長經歷往往很相似,大部分的人走過了最前面相同的一段路,而有的人則走得更遠。總結自己這些年來的歷程,這也許能讓年輕的程式設計師少走一些彎路,成長得更快 或許更好一些,能讓大家從中得到一些啟發,早日進入優秀程式設計師的階段,實現夢想,釋放激情。第一階段,最...
《程式設計師成長路線 從入門到優秀》
1.很少有軟體企業要招那種性格極端內向的程式設計師。2.面試時,要避免一問一答,要主動地在重點問題上談談自己的看法和想法,主動和面試官進行溝通。3.用人單位招收程式設計師一般有兩種型別,一類是招來即用,一類是培訓後使用。4.應聘者千萬不要過度地表現自己的學習慾望,說一些 到單位之後,我會好好學習的 ...
程式設計師高手之路
不知不覺做軟體已經做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因為和我心目中真正的高手們比起來,還差的太遠。世界上並沒有成為高手的捷徑,但一些基 本原則是可以遵循的。1.紮實的基礎。資料結構 離散數學 編譯原理,這些是所有電腦科學的基礎,如果 不掌握他們,很難寫出高水平的程式。據我...