談?wù)劶夹g(shù)學(xué)習(xí)方法和個(gè)人總結(jié)的范文
一、選用技術(shù)的原則
比較規(guī)范的軟件開(kāi)發(fā)過(guò)程要到有限的幾個(gè)公司才能學(xué)到。偶現(xiàn)在所采用的方法都是圡方法,主程序員,測(cè)試驅(qū)動(dòng),文檔和代碼寫在一起,原型。但基本上堅(jiān)持幾個(gè)原則:
在工作上以實(shí)用為主導(dǎo),哪個(gè)實(shí)用學(xué)哪個(gè),要以最小的努力獲取最大的成效。
偶寫過(guò)的第一個(gè)實(shí)用程序是把一個(gè)法律光盤導(dǎo)入到數(shù)據(jù)庫(kù)中,光盤源文件格式需要分析。數(shù)據(jù)大概幾萬(wàn)條。一種方法是寫程序直接導(dǎo)入,另一種方法是寫一個(gè)界面,手工導(dǎo)入。偶選擇的是后者。程序界面如下:有一個(gè)文本框,有一個(gè)大按鈕,按鈕有一本書那么大,這樣設(shè)計(jì)的原則是讓閉著眼睛就能夠點(diǎn)中。讓一個(gè)會(huì)灌水的哥們,ctrl+c,ctrl+v,不停的灌。文本貼過(guò)去,自動(dòng)解析,放入數(shù)據(jù)庫(kù)。左手alt+tabctrl+c/v,右手點(diǎn)鼠標(biāo),這樣有節(jié)奏的運(yùn)動(dòng)。很快,幾個(gè)小時(shí)就把數(shù)據(jù)弄完了。最初設(shè)計(jì)的一個(gè)文本框,一個(gè)按鈕,很pp,但是老點(diǎn)不中。隨即偶才把那個(gè)按鈕做成老大的,就這一個(gè)改變,生產(chǎn)力提高了1倍以上。
工作,就要堅(jiān)持這樣的原則。要能夠分辨出價(jià)值,找能夠提高價(jià)值的去做。即使這樣違背一般規(guī)律,違背技術(shù)教條。
學(xué)習(xí)上以簡(jiǎn)單,核心的東東為主?蓪W(xué)可不學(xué)的不要學(xué)。復(fù)雜的東西除非你想要成為這方面的專家,就不要學(xué)。偶還是舉自己的一個(gè)例子,前一陣做GIS有需求,具體實(shí)現(xiàn)偶負(fù)責(zé)。預(yù)算很少。偶就定了開(kāi)源GIS軟件這條路,本來(lái)想用C#的,但沒(méi)有好用的開(kāi)源GIS軟件,偶決定用java寫。偶手下還沒(méi)會(huì)java的。偶選擇了一個(gè)開(kāi)源lib,讓一個(gè)哥們運(yùn)行一個(gè)Demo,然后讓他從那個(gè)Demo的main函數(shù)畫函數(shù)調(diào)用圖一直畫到數(shù)據(jù)庫(kù)調(diào)用。偶呢,跑去看GIS規(guī)范,然后他的圖,結(jié)合偶的規(guī)范知識(shí),很快就知道這個(gè)軟件中間分了多少層,每個(gè)層每個(gè)接口是干什么用的,怎么調(diào)用。這個(gè)軟件的優(yōu)點(diǎn)缺點(diǎn)。然后體系結(jié)構(gòu),設(shè)計(jì)就出來(lái)了,然后2個(gè)java程序員,很快就做出來(lái)了。
二、技術(shù)學(xué)習(xí)的技巧
借著上面例子說(shuō)說(shuō)學(xué)習(xí)軟件的技巧
要學(xué)一個(gè)東西,要學(xué)習(xí)該東西的兩類知識(shí):結(jié)構(gòu)和細(xì)節(jié)。
結(jié)構(gòu)性的東東非常重要.學(xué)習(xí)結(jié)構(gòu),就可以開(kāi)始干事了,學(xué)習(xí)細(xì)節(jié),能夠把這件事情干好。結(jié)構(gòu)不清楚,細(xì)節(jié)再好都不算了解。結(jié)構(gòu)很簡(jiǎn)單,就是縱,橫兩條線。縱的來(lái)說(shuō),就是一個(gè)程序的執(zhí)行,你得知道哪一步在做什么。以ASP.Net來(lái)說(shuō),就是從收到Request到返回一個(gè)頁(yè)面,中間的調(diào)用過(guò)程,這是主線,再進(jìn)一步,程序的加載->接收Request(->緩存,Session機(jī)制)->返回一個(gè)Page,這個(gè)過(guò)程清楚,Asp.Net也就差不多了。縱向一般是通過(guò)接口調(diào)用的,看源代碼很快就可以搞定。
橫向就是看看重要的接口,重要的抽象類有哪些實(shí)現(xiàn),知道哪個(gè)實(shí)現(xiàn)用于什么地方,有什么優(yōu)缺點(diǎn)。那么就算在結(jié)構(gòu)上學(xué)好了。剩下的就是細(xì)節(jié)問(wèn)題了。細(xì)節(jié)問(wèn)題熟練自然很好,不熟練google都能google到,只是要花很多時(shí)間。這樣學(xué)習(xí)我覺(jué)得是最有效的學(xué)習(xí),不必去跟蹤技術(shù)前沿,當(dāng)一個(gè)技術(shù)在你眼前你很快就可以看出它的骨架,優(yōu)點(diǎn)缺點(diǎn),性能,至少能估計(jì)到大致的范圍。這樣慢慢培養(yǎng)對(duì)一個(gè)技術(shù)的.悟性,做到舉重若輕,知道什么地方可能有陷阱,什么地方可能有創(chuàng)新。把握住重點(diǎn)和脈絡(luò)。
細(xì)節(jié)上就是不斷實(shí)踐,不斷重構(gòu)。一個(gè)有用的軟件,不斷提出更高的要求,不斷重構(gòu),用不了幾遍,幾種重要的設(shè)計(jì)模式就了熟于心了。單為學(xué)習(xí)模式而去學(xué)習(xí)模式是不可取的。每個(gè)模式都針對(duì)一定的問(wèn)題。深入理解這些問(wèn)題才是學(xué)習(xí)的關(guān)鍵!技術(shù)是多種多樣的,是變化非?斓,但是技術(shù)所要解決的問(wèn)題卻并不多。
從架構(gòu)級(jí)別來(lái)說(shuō),所面臨的問(wèn)題主要有:(1)解決復(fù)雜性--如何把復(fù)雜變得簡(jiǎn)單?這里的觀點(diǎn)就是封裝,OO是一種封裝,還有別的封裝方式!吨貥(gòu)》書中講了很關(guān)鍵的一點(diǎn),就是要使你的類名,方法名能清晰表明它的身份和功能。(2)解決程序演化與擴(kuò)展的問(wèn)題--組合優(yōu)先繼承,怎么暴露API,怎么寫文檔,總之,讓程序演化與擴(kuò)展越簡(jiǎn)單越好;(3)性能問(wèn)題--80/20原則,性能測(cè)試怎么測(cè)試,怎么評(píng)估,不同使用場(chǎng)景中的性能,緩存機(jī)制;(4)功能問(wèn)題--主要功能總得實(shí)現(xiàn)吧,這個(gè)和業(yè)務(wù)有關(guān);(5)易用性;(6)縱向擴(kuò)展,橫向擴(kuò)展,并發(fā)......(7)自己開(kāi)發(fā)還是采用第三方插件還是外包以及選擇問(wèn)題。
具體的學(xué)習(xí),偶推薦問(wèn)題導(dǎo)向,案例為基礎(chǔ)的學(xué)習(xí),不要拘泥于語(yǔ)言,要學(xué)習(xí)能學(xué)習(xí)到的最好的東東。比如,性能的關(guān)鍵在調(diào)度,這時(shí)候可以看看資源調(diào)度模式,hibernate算是把資源調(diào)度玩到了極致。基于事件的調(diào)度(如.net中的webcache),進(jìn)程調(diào)度,線程調(diào)度,工作流,這些都算是行為調(diào)度,要是把這些東東融會(huì)貫通,掌握每一種實(shí)現(xiàn)的優(yōu)點(diǎn)缺點(diǎn)。那么軟件設(shè)計(jì)中所有和時(shí)間、并發(fā)、資源相關(guān)的東東都不在話下了。行為調(diào)度可以看看.net中的cache實(shí)現(xiàn),找一個(gè)工作流軟件看看,找找?guī)讉(gè)線程框架看看,看看幾個(gè)典型操作系統(tǒng)的進(jìn)程調(diào)度機(jī)制。
具體到實(shí)現(xiàn)上,所面臨的問(wèn)題無(wú)非是:
。1)對(duì)象的創(chuàng)建及銷毀;(2)對(duì)象的封裝和繼承體系;(3)對(duì)象的粒度和語(yǔ)義劃分;(4)對(duì)象的復(fù)用;(5)對(duì)象的測(cè)試;(6)對(duì)象的持久化;(7)具體的API暴露;(8)常用Collections;(9)算法問(wèn)題;(10)性能問(wèn)題;(11)回調(diào);(12)消滅語(yǔ)義溝;(13)我想要和你一起變懶......;(14)我能采用哪些API(15)對(duì)象的管理;(16)異步調(diào)用;(17)遠(yuǎn)程調(diào)用
【談?wù)劶夹g(shù)學(xué)習(xí)方法和個(gè)人總結(jié)的范文】相關(guān)文章:
熱風(fēng)爐和高爐技術(shù)個(gè)人工作總結(jié)01-17
信息技術(shù)研修個(gè)人學(xué)習(xí)總結(jié)范文-學(xué)習(xí)總結(jié)12-21
學(xué)習(xí)方法總結(jié)01-27
技術(shù)人員個(gè)人的述職報(bào)告范文01-30