近期的努力學(xué)習(xí),一直希望能突破一個(gè)瓶頸,就是熟練工,目前感覺(jué)到自己就是一個(gè)熟練工,對(duì)于工作中所接觸到的技術(shù),基本的API都知道,完成工作也比較順利,按照以前在華為外包做開(kāi)發(fā)的經(jīng)歷,有領(lǐng)導(dǎo)明言,開(kāi)發(fā)就是倒騰一堆API么。我想,開(kāi)發(fā)如果僅僅是倒騰一堆API的話,那么這種工作沒(méi)有任何意義,因?yàn)檫@一堆API的倒騰最終會(huì)實(shí)現(xiàn)自動(dòng)化,就算不能,我們開(kāi)發(fā)人員也只是倒騰API的工具,沒(méi)有任何價(jià)值而言,正因?yàn)槿绱耍诓艜?huì)有突破這個(gè)瓶頸的強(qiáng)烈欲望,希望通過(guò)擺脫對(duì)工具的依賴,找出技術(shù)的本質(zhì),達(dá)到進(jìn)一步的提高。
        今天無(wú)意間讀到林銳博士寫的一本書--<<軟件工程思想>>,隨便翻了一下,看到其中有一段關(guān)于軟件開(kāi)發(fā)的基本策略,現(xiàn)記錄如下。
        軟件開(kāi)發(fā)的基本策略有三種,復(fù)用,分而治之,優(yōu)化-折中。
        復(fù)用,就是我們可以利用前人開(kāi)發(fā)的成熟功能或模塊進(jìn)行組裝調(diào)用,來(lái)實(shí)現(xiàn)我們?cè)陂_(kāi)發(fā)工作中需要的功能,但是僅僅這么復(fù)用下去的話,那么我們也不會(huì)有進(jìn)步,也不會(huì)有創(chuàng)新,個(gè)人價(jià)值從何體現(xiàn)?所以我們需要在復(fù)用的同時(shí),對(duì)成熟模塊進(jìn)行優(yōu)化,理解它的工作原理,從而達(dá)到更好的使用,以及站在更高的層面來(lái)實(shí)現(xiàn)成熟模塊的功能,還有對(duì)現(xiàn)有系統(tǒng)也要進(jìn)行優(yōu)化。此外,復(fù)用還需要注意的是,復(fù)用是我們拿別人的東西,同樣,我們做的東西,也要方便別人來(lái)拿著用才可以。這樣才能實(shí)現(xiàn)最大價(jià)值。
        分而治之,好像很多地方都有提到這個(gè)名詞,我在算法書上也有見(jiàn)過(guò)類似的思想。將一個(gè)復(fù)雜的功能分解成很多個(gè)簡(jiǎn)單的功能,然后逐一擊破,最后將每個(gè)簡(jiǎn)單功能的實(shí)現(xiàn)組合起來(lái),就是這個(gè)復(fù)雜功能的實(shí)現(xiàn)了。但是分解問(wèn)題的過(guò)程需要注意的是,分解并不是簡(jiǎn)單的拆卸,要確保分解后的功能,最后歸并,還是原來(lái)的復(fù)雜問(wèn)題才可以。
        優(yōu)化-折中,優(yōu)化工作并不是可有可無(wú)的工作,而是我們必須要做的事情,當(dāng)優(yōu)化工作中遇到困難時(shí),我們可以選擇折中方案,但是該方案的前提是不能損失其他功能。