關於書本
新人們常常會說我看了多少多少的書,看過某某人寫的書,彷彿書看了就會做了。其實不然,很多新人在面試的時候夸夸其談,說啥啥都知道一點,到真正做的時候,啥都不會。歸根到底是沒有經驗,技術這玩意兒經驗非常重要,很多東西如果不是你碰到了,你從書上一輩子都找不到答案。
我看書的習慣一般都是先把整個書翻翻,瞭解一下書的基本內容,然後在實際項目中遇到相應的問題再去翻書,當然這是因為我對技術已經有一定的瞭解,不需要通讀整本書。初學者應該找一些適合自己的書,通讀一遍,其中的例子要認真做,一定要自己去寫代碼,而不是Copy。我以前在學做網頁的時候,別人都用Dreamweaver去做,只有我開啟原始碼編輯器學習HTML原始碼的編寫。
做完書的例子只能說明你會削木頭了,但會削木頭離會做柜子還有很遠的路要走。還記得達·芬奇畫雞蛋的故事嗎?不停地重複肯定是枯燥的,所以你需要自己嘗試去做一些實際的東西,比如做一個個人首頁、一個留言本、一個通訊地址本......在這些實際的東西中去實現你的創意,去實現你在書本上所學習的例子,並且將這些例子加入你的思想。
永遠不要認為書本能給你帶來多少東西,雖然它們很有用,但它們只是一個Key,一個引你入門的Key。我買的技術書中,最多的是 VB.Net,但這卻是我最爛的一門技術。而我用得比較好的Delphi、Sql Server、Photoshop、CoreDRAW、CSS、HTML、Javascript、Xslt、Xml,我幾乎沒有買書,但因為實際的項目需要,或者是我個人的興趣愛好。
當然,我並不是反對你去買書,去讀書,我只是想告訴你,你需要有一種平和的心態。但你要記住,書本只是一個Key。
關於基礎
現在很多新人們都是好高騖遠,目空一切,基礎的東西不想做,難一點的東西又做不了,真的很令人頭疼。其實技術人員,尤其是中國技術人員,你要懂的東西太多太多了。我們拿 Web程式員舉例吧,HTML、Javascript、CSS、Photoshop切圖,這些都是很基礎的東西,但很多人就是不願意去學,認為這些東西太低級,甚至有些老程式員也不擅長這些。但我要告訴你,在Web開發中,這些都很重要,尤其是CSS和HTML、Javascript,如果你不是做一個 OA之類辦公的Web系統的話,這些在網站用得太多太多了,是一些Web應用的基礎。
雖然我們現在湧現一大批如ASP.Net的優秀開發環境,可以讓你完全不懂HTML也能開發出一套“網站”來,但正如其它程式化的東西一些,它會限制你的靈感與思維,它們都很霸道,所以才會有開源的興起。我以前甚至不願意用ASP.Net內建的GridView,我寧願自己去構造 Table,這覺得這樣我更便於控制。
很多新人們喜歡拿新興的技術說事,比如說AJAX,但實質他根本就不懂AJAX實現的原理,連多線程的原理都不懂,怎麼能明白AJAX呢?有些做了一年多 ASP.Net的人,居然還不知道.Net Framework架構的本質是什麼,不知道ASP.Net是如何?的,也不知道用戶端也伺服器端是如何互動的。
在這裡,我建議做Web開的新人們,HTML、 Javascript,CSS是實現一些Web功能的基礎,一定要打好基礎,當你會你記事本編輯這些代碼的時候,恭喜你,你過關了。
關於語言的選擇
語言之爭都是大公司戰鬥的結果,套用一句管理上的話來說,把合適的的技術用在合適的地方。我們沒有必要跟風去不停地換新的語言,每種語言都有它的優劣,但在一般的項目中,很難看得出來。如果我們做一個只需要新聞發布功能的小公司網站,你說是Java和.Net好,還是Asp和PHP好呢?在很多時候,Java與.Net、Asp與PHP是難分高下的,他們之間的差異或許是你一輩子也不需要用到,我們範得著把自己拉入某一些陣營嗎?
當技術達到一定的水平之後,語言只不過是錦上添花了,武俠小說常無招勝有招就是這個道理。你現在讓我換成Java或者是PHP,我很快就可以做項目,因為我掌握的不是語言,而是對技術深層次的理解,現在Java陣營也好,.Net陣營也好,不管你說它們之間有多少差別,但他們的本質始終沒有變,掌握這些本質,換一種語言就好比換一輛車,只需要一個熟悉的過程和一個磨合期而已。
最後,我建議新手們選擇一種在你實質工作中需要的語言,坦坦實實地學好,不要中途“變節”,這樣的成本太高了。.Net也好,Java也罷,只是一輛車而已,學好開本田就會駕豐田。
關於學習態度
學習嘛,在學習的過程中自然會遇到一些問題,遇到問題自然會想到求助。古人有云:禮下於人,必有所求,言下之意是有求於人,必要禮下於人。可是現在有些人不僅不禮下於人,反而還趾高氣揚,彷彿誰欠著他似的。我們老家有句俗話叫拜師學藝要吃二十四碗鼻涕,可見在學習過程中要受到多少的委屈。
吃得苦中苦,方為人上人,做技術尤是如此。我以前在學ASP的時候,同寢室有一哥們是學VB的,因為ASP也是用VBScript做為預設指令碼,所以有很多問題請教他,他當是也是給了我不少的嘲笑,像“這些簡單的問題都還要問”之類的話我倒是聽了不少。但到後我們一起學Delphi的時候,我就已經超過他了。
新人們碰到問題的時候,第一個想法就是想找人解決,當你去幫他解決的時候,他卻去做其它事了,好像這個問題是需要你來解決的,下次出現同樣的問題他還得找你。遇到問題最好的辦法是先排查問題,然後到互連網上尋找問題的原因,這樣你才不會忘記,不要忽略了互連網這個最好的老師。我以前在學ASP的時候,為了一個插入資料的問題,查了一個星期,但這個問題我永遠也忘記不了,再也不會範同樣的錯誤。
高手們一般都比較忙,雖然我不是高手,但我還是不原意在我寫代碼正酣的時候,有人打斷我的思路。先把問題記下來,趁機會問問高手,不要讓他為你解決問題,你要的是一種解決問題的思路。公司常常有新人問我,這個地方出問題了,怎麼辦?我便問他,你上網查了嗎?不是我不願意幫他,而是授人魚不如授人以漁,我直接告訴他怎麼做,那不是在幫他,那是我在害他,我只能是告訴他排錯的方法,解決問題的思路,否則他永遠也不知道這個問題是怎麼解決的,沒有人會珍惜輕易得到的東西的。
最後,我想給踏入這行的新人們一個忠告,編程沒有捷徑可言,如果一定要找出一個捷徑,那隻有六個字——多看、多問、多寫。