從事軟件開發(fā)相關(guān)工作近八年,將自己形容成一名老兵。做開發(fā)幾年,帶團(tuán)隊(duì)幾年。頭幾年編碼量較大,后幾年斷斷續(xù)續(xù)寫點(diǎn)東西,大多時間以指導(dǎo)別人開發(fā)為主。究個人能力而言,不算特別出色的程序員。但因工作性質(zhì)等原因,對軟件系統(tǒng)產(chǎn)品整體的把握和產(chǎn)品設(shè)計(jì)工作還是有一些心得。這幾年的工作,既有項(xiàng)目管理,也有架構(gòu)設(shè)計(jì)與分析設(shè)計(jì),還有產(chǎn)品設(shè)計(jì)。對軟件開發(fā)的感覺相對比較宏觀,但也還是有一些方面有較為深入的了解。
今天談?wù)勡浖_發(fā)方法,主要原因在于最近觀察到新入行做外包開發(fā)的小伙子們,似乎都不太注重方法這類知識的積累。個人理解,軟件開發(fā)是一門技術(shù)活,其直觀特點(diǎn)應(yīng)是一門偏工程類的工作。既然為一門工程,必然有方法可循。整個行業(yè)發(fā)展至今,各個細(xì)分領(lǐng)域都有不少經(jīng)典的理論。如項(xiàng)目管理工程,架構(gòu)方法,產(chǎn)品設(shè)計(jì)方法等等。這些理論都是在工程實(shí)現(xiàn)的過程中可以借鑒和使用的方法學(xué)知識,是提升工程效率和質(zhì)量的武器裝備。軟件的實(shí)現(xiàn)過程,不僅僅是一個將計(jì)算機(jī)語言轉(zhuǎn)換為信息系統(tǒng)的過程。它不僅包含了一類信息流,數(shù)據(jù)流的抽象和組織工作和方法。還是一個用信息科技解決現(xiàn)實(shí)需求的過程。
在外包行業(yè),代碼的重復(fù)堆疊的時間遠(yuǎn)比創(chuàng)新的結(jié)構(gòu)設(shè)計(jì)工作要多得多。有時候?yàn)榱粟s工,大量的拷貝和復(fù)制成為現(xiàn)實(shí)的選擇。但隨著從業(yè)年齡的增長,繼續(xù)使用這類方法顯然不合時宜。這既不利于提高工作效率,也不利于提高軟件產(chǎn)品的質(zhì)量。大量的編碼實(shí)踐是提高軟件實(shí)現(xiàn)能力的不二選擇,但沒有軟件開發(fā)方法的思考與積累,再多的量變也無法發(fā)生質(zhì)變。軟件產(chǎn)品千千萬,但其組織結(jié)構(gòu)與設(shè)計(jì)方法卻是大同小異。更多的關(guān)注軟件產(chǎn)品的設(shè)計(jì)方法而非語言實(shí)現(xiàn)形式,才能不斷提高軟件開發(fā)水平。
一名資深的架構(gòu)師設(shè)計(jì)或分析師編寫代碼的速度不一定比從業(yè)兩三年的小伙子快,但其實(shí)現(xiàn)的軟件產(chǎn)品質(zhì)量絕對要比后者好得多!