「我們一直這樣做開發,時間做久了,便忘了當初的本意。」
有關軟體系統開發,我們談些什麼?
我們談過程,編碼規範、開發流程、同行評審、結對程式設計、持續內建,從瀑布到靈活再到極限程式設計。
我們談架構,企業級、J2EE、容器化、SOA(面向服務架構)、Microservices(微服務化)。
我們談規模,大容量、高并發、大資料。
我們還談可靠性、可用率、n個9、響應時間等等。。。
這一切的核心是什麼?
先講個電力行業的一個故事,電力的項目我沒做過,對電廠的原理雖有所了解,但看見那些大規模的電站還是感覺挺複雜的。 故事是這樣開始的:
記得有個給我們上教育訓練課的主講老師是個須發皆白的老先生,進門後掏出一堆零件放在講台上, 一盞酒精燈、一個小水壺、一個葉片、一個銅光閃閃的小電機、一盞小燈泡。 老先生往壺裡倒了些水,點燃酒精燈,不一會兒水開了,從壺嘴裡噴出了蒸汽,帶動葉片旋轉,然後小燈泡就亮了。
他說:這就是電廠。
他還說:如果燒的是煤炭,這就是燃煤電廠;如果燒的天然氣,這就是瓦斯電廠;
如果獲得熱能的方式是核裂變,這就是核電廠;如果帶動葉片的能量來自水從高處流向低處,這就是水電廠。
老先生說:你們或許會問 “那我們看到的電廠怎麼這麼複雜”,答案其實很簡單, 電力項目需要複雜系統的目的,一是為了確定安全(Safety),二是為了提高效率(Efficiency)。
安全和效率的平衡,是所有工程技術的核心。
看完這個故事,我就感覺到所謂 “大道至簡” 大概就是這樣的。
開發軟體系統的根本在于滿足需求,不能滿足需求的系統本身是沒有意義的。 就像一個再安全、有效率的電廠不能發電又有什麼意義呢。 是以軟體系統開發也就是圍繞根本的基礎上確定安全與提高效率。
需求作為軟體的根本差異很大,需求是多樣,需求也是複雜的。 一個大型 ERP 系統,一個大型倉儲系統,一個大型網站系統,到底誰更複雜,沒有一個定量标準,甚至都不好定性分析。 是以前面我們談軟體系統開發那麼多内容都是關于 “安全” 和 “效率” 這兩個圍繞根本的核心。