不知不覺中,來博客園寫博已經二年了。
經過二年時間的積累,人氣提高了許多,或許正因為這個原因,最近一年中經常會收到一些朋友的提問。
在所有的提問中,有些問題被多次問過了,還有部分問題是沒有結果的。
對於一些沒有結果的問題,Fish Li也表示遺憾。
趁着3月12日這個對於我來說特殊的日子里,我也想談談另一個問題:Fish Li 該如何幫助您呢?
下面我將對一些無結果的問題再次給予回答,雖然今天可能還是沒有答案,但我要告訴您沒有答案的原因。
如何提問?
不管是網上,還是周圍的同事,我發現有人喜歡在反饋錯誤時,只說二個字:報錯!
說實話,您也太不專業了!
您想想人家根據“報錯”二個字,就能找到報錯的原因嗎?
還有些人會將異常消息或者異常的截屏發出來,但是,有些異常消息是含糊不清的。
您能不能多提供一些線索?
我相信您確實是遇到程序異常了,但是我不知道您遇到了什么樣的異常,尤其是在什么樣的情況下發生了異常。
如果您不肯多花點時間描述異常或者不肯多提供一些線索的話,可能任何人都幫不了您。
尤其是有些異常在正常情況下並不會出現,那您就有必要告訴人家重現異常的方法。
如果在別人那里不能重現異常,您叫別人怎么幫您解決?
還有些屬於代碼的問題,調用同樣的某個方法,我沒有遇到異常,而您遇到了。
遇到這種情況,如果您提供的線索讓我無法解決時,我建議您新建一個項目,並把那段代碼復制到新的項目中, 保證它們能重現問題,最后將新的項目發給我來分析。
所以,當您給我提問時,希望您能多花點時間來描述問題, 不要想偷懶,偷懶解決不了問題。
說實話:您不想花時間,我也不想花時間。
當遇到一些復雜問題時,低效的反饋可能會導致來來回回幾封郵件,最后還是沒有答案, 此時就會問我同樣的問題:您QQ號多少?
我不用QQ!
每次當被問到QQ號時,我不知道您是否相信我的回答:我不用QQ!
在新蛋讓我養成一個好習慣:不用任何聊天工具。
由於已經是習慣,所以現在我還是不用任何聊天工具,包括QQ。
我不用QQ還有一個原因是:的確沒那個空閑時間用QQ。
Fish Li 的工作確實比較忙,確實沒有時間聊QQ,所以我也只好不用QQ了。
有些人喜歡用QQ交流技術,但我認為用QQ交流技術,這種溝通效率也太低了吧?
我不太喜歡打字,太慢了。所以,我不會選擇這種交流方式。
武漢的朋友如果想找我聊技術,可以來光谷軟件園找我。
相反,郵件是一種離線溝通方式,我可以選擇在空閑時候回復各類問題,
所以,歡迎大家用郵件找我,我的郵箱:liqifeng0503@163.com
或許有些人會想:QQ的交互比郵件要快,說不清楚的問題,可以馬上補充說明。
何必要反復補充呢,如果您能一次性把問題說清楚了,我也只需要回復一次就可以了。
最后我還想奉勸一些喜歡在工作時間聊QQ的人:
當您還有正事情沒有做完時,還是別開QQ了,您的進度可能會影響整個團隊!
新手如何學習
已經有很多人問過我:您是如何學習的?沒有好的學習方法?能不能推薦一些書給我?
每次看到這類問題,我都感覺很難回答:因為很難給您一個滿意的答案。
對於這類問題的提問人,我還真分析過,主要有二群:
1. 即將畢業,或者畢業不久的新人。
2. 做了多年技術,但發現自己能力沒有明顯提高的某些人。
既然是二個不同的群體,我想答案也應該是不同的。
對於新人來說,他或許也認為技術領域范圍太大了,希望能找人指點一下方向。 其實我很能理解這個想法,然而,您有沒有想過:學習是沒有捷徑的,您不投入,哪里來的收獲?
您今天看到我能寫出很多您不懂,或者沒見過的東西出來,但您有沒有想過: 我,Fish Li 能寫出這些東西又花了多少時間呢?
我不是搞教學研究的,對學習方法沒有思考過,因此,我只能給您一些建議:
1. 挑選自己感興趣的技術領域。 既然技術領域太大了,那您就選擇一個自己有興趣的領域吧,選擇 .net, C++, java 其實都無所謂。 當然了,.net 也太大了,您還要繼續細分,選擇.net領域的一部分。 我博客頁面左上角的那句話您看到了嗎? 吾生也有涯,而知也無涯。以有涯隨無涯,殆已。 您一生的精力是有限的,而技術領域不僅多,而且還在不斷進步,它根本就是無止盡的,如果您真希望在您的簡歷上寫着: 精通.net, 精通C++, 精通java,精通JavaScript, 精通HTML, 精通CSS, 精通SQL SERVER, 精通ORACEL,精通...的話,您肯定會累死的!
2. 要有一顆堅持的心。這其實是一種心態:不要指望能速成。 目前好像除了速成雞之外,好像我還沒有聽到什么比較成功的速成事物。 很多技術並非只有幾個命令、函數,或者幾個結論, 因此,只有不斷地去學習和領悟每個技術點,您的整體技能才會得到提高。 所以,這也注定了技術學習是一個長期的過程,在這個過程中,興趣和心態是二個能決定您能不能堅持的關鍵因素。 也正因為這個原因,我才建議您首先要選擇一個自己感興趣的技術領域, 或許在這個漫長的階段,興趣會一直給您動力,當您遇到困難時,興趣也會激勵您去克服它們。
3. 總結也很重要。 新手和老手,一聊就能區分他們。為什么會這樣呢? 原因在於:從老手的談吐中我們可以感覺出他們有較多的技術沉淀。 這些技術沉淀來源於他們的總結。 當然了,總結的形式是多樣化的:像我這樣寫博客可以,自己把一些技術特性寫個DEMO或者lab也行, 再或者找張白紙把自己理解的東西畫一畫也行。 形式不是目的,目的是幫您把一些混亂的或者還沒有清楚理解的東西梳理清楚, 對於一些遺漏的東西,也能在梳理過程中暴露出來,這樣還可以提醒您還需要學習什么。 總結還有二個好處是:增強記憶,以后可參考。
如果是做了多年技術的開發人員又該如何學習呢?
做一個有追求的技術人員
經常聽有人在抱怨:公司的代碼太爛了!公司技術太老土了,根本學不到什么東西!
在這里,我想問問您:業余時間您都在做什么? 是在玩游戲還是閑聊QQ,還是其它與技術無關的事情?
其實IT男還是比較宅的,絕大多數喜歡呆在家里閑玩,然而卻不會想起技術。
因此,當他們面對爛代碼時,也只能是抱怨了!
但是抱怨有用嗎?當然了,您可以離職,換份工作,面對一份新代碼。 不過,情況可能還是一樣。 據我見過的情況,以及身邊的同事的說法,幾乎可以確定的是:國內的軟件公司的代碼【大多數】都很爛。 所以,即使您換家公司,您還是要面對那樣的爛代碼。為什么會是這樣,我不想在這里分析,因為沒有意義,我們改變不了,這是現實!
我還想問問這些人:當您面對那些爛代碼時,您有沒有想過如何改進它們呢?
注意:我並不是要您去把它們都改過來,我知道那是不現實的,我只問您有沒有想過? 如果您沒有想過這些問題,那您的確是沒法進步!
很多爛代碼通常有二種成因:
1. 由於代碼存在較多重復部分,改起來很費力。
2. 代碼結構本身存在較多耦合之后混亂在一起,不知道改哪里。
如果我假設的原因是正確,那您現在的問題就是:
1. 用什么方法可以解決大量的代碼重復問題?
2. 如何讓代碼保持較好的結構?
我還是告訴您的答案吧:
1. 反射,委托都可以用來解決代碼重復問題,封裝也是一種方法。
2. 設計模式可以解決代碼結構混亂問題,《重構》這本書也是值得您學習的。
“學不到新技術”,這個抱怨估計來自於許多做產品的公司,或者需要持續改進的項目。 您想想:就算今天讓您重做項目,讓您全用最新的技術,幾年之后,您還會不會有這樣的抱怨呢? 我承認新的技術或者新的框架,確實可以提高開發效率,但是引入這些新技術框架是不夠的。 您有沒有想過:人家的技術在改進,您寫的代碼是否也需要改進呢? 或者說:您平時有沒有關注過您的代碼的質量呢?例如:安全性,可維護性,可擴展性,性能。
人家的技術(代碼)一直在改進,您為什么就不想想如何改進一下您的代碼呢?
很多人不僅沒想過如何改進自己的代碼,而且還很喜歡復制粘貼。 您有沒有想過:為什么人家的新框架可以可以減少開發的代碼量呢? 那是因為人家做了封裝。 要是您也經常考慮封裝呢?那是不是在創造自己的技術呢? 在您不斷封裝過程中,我敢保證您會主動去學習一些新的技術,因為封裝也是需要技術的。
所以,對於工作了多年的開發人員,您就別再問我學習方法或者學什么了,想想您有沒有技術追求吧。