一天一天,一年又一年,我們到底都做什麼,為自己留下了什麼,收穫了什麼,成長了多少,讓你記憶深刻的事是什麼,讓你最興奮的事是什麼,讓你最想扇自己的事情是什麼,他們的原因是什麼。你是否思考的時間比寫代碼的時間長,每次開發的時候你的功能分析到什麼程度你就開始寫代碼,你修改和重寫的次數多嗎,是否曾經因為將功能分析得非常透徹而讓你很快的把功能搞定。是否經常在沒有搞清楚狀況的時候就開始寫代碼,到現在為止你認真看了多少本很好的書籍。你的工作讓你興奮嗎?興奮嗎?興奮嗎?
Follow me。C#搞了這麼久(快3年了),怎麼就是沒有成為C#高手,3年了,怎麼就沒有相對的掌握一門語言,我都做了什麼,每天都在幹嘛,難道真的是個碼農,整天忙碌的對著電腦我到底在幹嘛,寫重複的代碼,按照別人的思路來完成功能,什麼時候能對自己說,我要先認真的思考分析,至少要在搞清楚狀況的情形下開始寫代碼,什麼時候對別人說:FUCK,我想按照自己的思路來,我已經想了很久了,現在思路非常清晰,而且覺得還不錯。
你是否總是在跟著別人的思路走,有意思嗎,你有先思考過嗎,什麼時候能因為你早就知道怎麼實現一個功能,且能很快的表達出來,而你的聽眾告訴你:請說慢點,你那個是什麼意思,我還沒有搞懂。總做一個執行者我受夠了,我有我自己的頭腦,我會思考。
多想一下,你會有更好的解決方案。很多時候我們都用了第一個想到的解決方案,他並不那麼完美,雖然能滿足基本的需求,他可能存在機率很小的BUG,他可能沒有很好的擴充性。是的它讓你完成了任務,但是你可能少了一次嘗試新方案的機會,可能少了一次提高自己的機會,少了一次讓自己興奮和快感的機會,因為我們的大部分編碼工作並不是那麼的讓人興奮。當你一次次的不滿足於第一解決方案時,你會發現:哦,原來,我不僅僅是一個碼農,而是碼農中碼農。
學習當然就離不開書。書是人類進步的階梯,有了梯子就可搭建第二層第三層。順便推薦幾本書:《代碼大全2》(你能看懂,並且收穫很多),《Effective C++》(有C/C++基礎的C#程式員可以看看,這本書講的都是寫C++代碼的準則,通過這本書你會明白++i的效率高於i++,字串相加到底分配了幾次記憶體,和C#有點不一樣,多維陣列是怎麼實現的,還有記憶體管理和物件導向設計的一些理念),《CLR via C#》(C#程式員必看書籍,有家大公司公司用行動證明了這句話,除了演算法題其他的都是這本書上的)。
屬於自己的實戰。很多東西我們是學來的,有時候真的不確定是否正確,但有一句話我認為一定是對的:盡信書,不如無書;紙上得來終覺淺,絕知此事要躬行。有些時候有必要自己去證實一下,比如有人說《軟體隨想錄》這本書是陳太漢寫的;有人說if else的效率比if高;有人說lambda的效率低,我就覺得lambda的效率比我自己寫的代碼效率高啊。那到底lambda的效率高不高呢,你用Reflector看一下源碼不就知道了,寫一些代碼PK一下不就知道了。Reflector還真是個好東西,通過它你可以知道你一直在用的類和函數是怎麼實現的,你可以知道微軟的程式員是怎麼寫代碼的,有了源碼你還怕你學不會一個新特性嗎,你還會怕有一段時間沒有用了而忘記嗎,你還怕別人問題你會不會用XXX嗎,你還怕你不鄙視別人這樣問你嗎,你還怕你會進入這麼問題的面試官所在的公司嗎?你還真把我當碼農啊,會不會用!(媽的,為什麼高中作文的最後一段非要寫這麼爛的排比句才能拿高分,別問我為什麼,實戰證明的確如此)。
受夠了實踐,我要理論一下。為什麼在我沒有實踐的情況下老師要教我那麼多理論,他們在教我們空中花園是怎麼回事,它是多麼的美麗,會為我們帶來什麼好處便利。天啊,我不會飛,連梯子都不會搭,你總跟我說些雲裡霧裡的東西,你到底有什麼企圖。現在我有自己蹩腳的梯子了,我想上一層,我要做第二層,第三層。。。誰來教我。我現在會用工具了,我有實踐的經驗了,我想把房子做得更好點,我更需要的是經過實戰的理論。由于思考得比較少,總是在碼代碼,自己完全感覺不到,至少在一兩個月內很難感覺到自己在進步,但是如果你有足夠的實戰,然後在看看一些經典的書籍,你就會有豁然開朗的感覺,在感覺書很好的同時,高興的心情也讓自己覺得自己進步了。
沒有搞清楚狀況按兵不動。你是否經常在沒有搞清楚狀況的時候就開始寫代碼,你是否經常在沒有搞清楚狀況的時候就發表言論,我會,但我很不喜歡這樣的自己。我很欣賞林彪,要麼不開口,一開口1,2,3,4,5,6,7,8;說得你目瞪口呆,服服帖帖,哦!原來是這樣的啊。當你發現“哦,原來是這樣的時候,你是修改你的代碼還是重來一遍”。愛因斯坦有句名言是“思考,思考,再思考”。難道他真的是用一支筆搞出相對論的嗎,NO,NO,NO,是思考。當然我們也不是用電腦搞出程式的,你懂的。
360度轉彎,委婉待續……
以上僅代表陳太漢個人觀點
作者:陳太漢
部落格:http://www.cnblogs.com/hlxs/