很多年來始終有一種聲音:編碼自身會逐漸消亡,軟體開發會越來越像一種組裝工作。
也就是說,程式員會越來越像IT工程師,他們很少自己從頭做什麼,而是靠搭配來達成各種目標。
我身邊就有持這種觀點的人。
而在《代碼整潔之道》一書中,Robert C Martin在開篇處加了這樣一段文字:
有人也許會以為,關於代碼的書將有點落後於時代---代碼不再是問題;我們應當關注的是模型和需求。
確實有人說過我們正在臨近代碼的終結點。很快,代碼就會自動產生出來,不需要再要人工編碼。
.... ...
這段文字告訴我們編碼會逐漸消亡這種觀點即使在國外也有一定的市場。
假使說這是真的,那程式員就必然是一個會逐漸消亡的職業。
現在的關鍵問題是,這究竟是不是真的?
為回答這一問題,需要對軟體開發內在的根本特質做一點考察。
只要靜下心來想一想,我們就會發現,持有上述觀點的人並非無的放矢,也還是有一定根據的。
在今天開發任何一款軟體的時候,很少會從頭開始開發。
大多時候會選定特定的架構:開發PC用戶端程式,可能是.net或MFC,開發網站可能要選LAMP,大資料處理則可能要用Hadoop等。
與此同時商用的各種組件或庫也是越來越豐富:圖形處理的,出圖的,並行運算的等等。
最差的也還可以選著重用很多現有的代碼:從codeproject或開源上借鑒合適的程式碼片段。
上述這些現實確實使軟體開發具備越來越多的“組裝”性質。
這意味著程式員並不能只關注自己可以幹什麼,還要關注別人幹了什麼,自己能不能拿過來用。
從這個角度看,如果上述趨勢不斷強化,編碼似乎真的是要逐漸消亡了。
但其實這是錯的。
這種觀點低估了世界變化的頻度,以及軟體在應對變化過程中所扮演的角色。
這事情其實並不複雜。
對各種已有問題,我們總是可以抽象出特定的模組來處理他們。
如果只是重複的處理已有的問題,那麼組裝就是本質特徵,編碼確實會消亡。
但反過來想如果處理新問題是主流和核心,那麼編碼就是本質,組裝就是一種輔助。
在商務世界裡,往往是只有領先一步,才能搶佔先機,所以在有軟體產品的軟體公司中編碼必然永遠是主流。
好比說A公司可以用Hadoop,B公司也可以用Hadoop,但如果沒有自己附加上去的東西,那麼兩個公司就會同質化,通常不會有誰能生存的很好。
即使誰好了,也馬上就會有C,D,E,F來湊熱鬧。而能造成差異,造成專屬附加值的則只能是創新加編碼。
但在目標是開發“能用就行”軟體的組織中,“組裝”佔上風的情形估計也是時有發生。
沒有具體考察過,但我個人很懷疑電商類網站,開發內部使用軟體的團隊,很可能會是這類情形。