最近《火星人敏捷開發(fā)管理工具》接近發(fā)版了,回憶起一年半以前剛利用業(yè)余時(shí)間開工的時(shí)候,編程已經(jīng)中斷了7年(03年最后一次用VC++6.0編碼),開發(fā)所需的C#、Html、asp.net、MVC2(現(xiàn)在用的是3)、LINQ、JS、JQuery、Ajax一個(gè)也沒用過,反倒是在03年最后一個(gè)4個(gè)月項(xiàng)目中用到過的SQL Server算是唯一可以直接拿來用的技術(shù)了。
一年的時(shí)間里邊基本上自己一個(gè)人編程也沒師傅可問,書只買了一本只看了1/10,剩下的全部兩本電子書(等等會(huì)講到)+Google+StatckOverflow,現(xiàn)在說不上來學(xué)會(huì)這些技術(shù)沒有,但是的確“會(huì)使用這些技術(shù)編程”了,而且還有正式的商業(yè)產(chǎn)品問世。
下面會(huì)總結(jié)一下學(xué)習(xí)新語言的一些技法和心法,很多不完全來自于這一年半的經(jīng)驗(yàn),也包含很多接觸其他開發(fā)人員時(shí)候聽到想到的東西。
一定要從一個(gè)實(shí)際的項(xiàng)目開始,一定要從模仿一個(gè)完整的例子開始。
本人學(xué)過匯編、BASIC、FORTRAN、VAX C、Turbo C、TurboC++、C++Builder、VC++、asp.net/C#這九種語言或者說開發(fā)環(huán)境,用的最好的TC/VC/C#都是遵循這個(gè)過程來的,其他的都不是,所以也沒學(xué)成。
這次面臨這么多沒見過的技術(shù),如果面前拿起10本書,都不知道從哪看起,因?yàn)樗麄儽P根錯(cuò)節(jié),沒有太強(qiáng)的先后順序。你編寫mvc2不懂C#不行,懂C#不懂a(chǎn)sp.net不行,編寫asp.net不懂Html不行,光懂Html不會(huì) JQuery太傻,光耍JQuery不玩JS太淺……但是,也總不能從JS倒著開始學(xué)吧。怎么辦呢?
當(dāng)時(shí),找了一本電子書就是這個(gè)http://blog.csdn.net/cheny_com/article/details/5443661 提到的Scutt Gu的Nerddinner(現(xiàn)在太老舊了別讀了),里邊介紹如何用asp.net的MVC框架編程,有一個(gè)實(shí)際的完整例子。不過,如果連C#、ASP.net、Html都不懂,怎么學(xué)MVC呢?
這就涉及到一個(gè)學(xué)習(xí)心法:技術(shù)上不求甚解,業(yè)務(wù)上精益求精。(日后會(huì)有詳細(xì)解釋,這里先這么擺著,肯定有人有不同意見)
大致意思是說:一定要知道,外國小孩在一歲的時(shí)候?qū)W外語不是從音標(biāo)、單詞這些東西開始學(xué)的,之后也沒有“深入、扎實(shí)、系統(tǒng)”地學(xué)習(xí)過外語,而是直指要解決的問題(吃喝拉撒)。這個(gè)樣子學(xué)習(xí)外語我們可能沒有這個(gè)條件,但是學(xué)習(xí)語言卻能。
我們的最終目的不是要研究語言,而是要用它做我們要做的事情,所以顯然的一種方法,是去“生硬”地模仿別人的做法,就像小孩模仿大人說話一樣。
當(dāng)時(shí)差不多用了一個(gè)月把nerddinner這個(gè)完整的例子一步一步抄寫、編譯、運(yùn)行了一遍,這本書最大的好處就在于他假設(shè)你就差MVC不懂了,所以一句廢話都沒有,我也就一句廢話沒學(xué)過。
如果有一個(gè)實(shí)際的項(xiàng)目,就比一個(gè)完整的例子更好,當(dāng)然多數(shù)時(shí)候很難。
很多時(shí)候我們都希望身邊有個(gè)人肉百度,問什么答什么,把問題解決掉。本人也力推139團(tuán)隊(duì)和松結(jié)對編程(參考博客欄目),幫助新手成長。
但是如果就是沒人在,怎么辦呢?大致總結(jié)了這幾點(diǎn)。
1. Google+百度+StackOverflow
一年半前還沒離職的時(shí)候,我經(jīng)常轉(zhuǎn)到研發(fā)部找他們的技術(shù)大拿問問題(就是這位:http://blog.csdn.net/lihonggen0),發(fā)現(xiàn)他也不是什么都懂,但是也從來沒有問住過他,原因是他差不多等我一問,就打開了Google或百度開搜,憑借一種“主動(dòng)搜索能力”,他能迅速定位答案。
所以逐漸意識到自己OUT了,03年這些東西還沒有,所以習(xí)慣了看書、問人了。于是后來除了“C#和ASP.Net到底是什么關(guān)系”這些比較模糊的問題,就再也不去找他了。
為什么提倡搜索而不是找人問呢?因?yàn)樗阉鬟^程本身很長見識,還會(huì)產(chǎn)生很多副產(chǎn)品,帶著自己的思考觀察和思考別人的眾多答案,培養(yǎng)“主動(dòng)搜索能力”,是一個(gè)非常重要的思考方式。