軟件開發與牛頓三大定律
英文原文:software development and newtons laws
我不知道從何時起,速度(效率)這個詞在軟件開發領域安家落戶了,以前可從來沒有這么流行過。然而我非常確定的一點是如果你提到運動卻沒有提到三大定律的話,艾薩克·牛頓先生肯定會不高興。
第一定律
在一個慣性參考系里面來看的話,除非受到外力的作用,否則物體會保持靜止或者勻速運動。
外力簡直是太多了:
- 開發人員在解決 BUG
- 開發人員在增加新的特性
- 開發人員在產生新的 BUG
- 業務方要求降低操作成本
- 第三方競爭改變了市場格局
- 用戶在改變
- 未完待續 </ul>
- 想擁有的特性太多了
- 太多技術債要還了
- 太多的抽象,一層又一層,ORM,DAO,服務,控制器,視圖。從數據庫撈出一個簡單的{“userid”: 123}就需要這么多的東西。哦,我忘了提了,還有 SQL,NoSQl....
- 太多的進程
- 太多的模式,企業級的策略工廠構造器適配器監聽器攔截器。。
- 溝通的流程太長了,業務方——項目經理——業務分析——團隊主管——開發人員(你還可以加入更多的角色)
- 太多的框架,java EE ,Spring, Hibernate, Struts, Bootstrap, jQuery, Augular.js,Ember.js,你敢看下 Java EE 嗎?在 Java EE 7 下有 39 個 Java 規范請求!
- 太多的服務器。WEB 服務器,關系型數據庫,NoSQL 服務器,緩存服務器,消息隊列,第三方集成服務器。 </ul>
http://en.wikipedia.org/wiki/Velocity_(software_development)
http://en.wikipedia.org/wiki/Newton's_laws_of_motion
</ol>
來自: it.deepinmind.com
然而一個團隊或者產品要么是黃了(保持靜止狀態)要么是在進行勻速運動(每天都生產固定的利潤或者消耗一定的預算)。
現在我敢說,說起團隊的速度(效率)是違背第一定律的,因為要維持團隊的效率的話需要做什么?什么都不用做!
好吧,這會讓很多主管感覺反感,”我還是希望我的開發人員做點事情的“。
那么我們需要看一下下一條定律。
第二定律
F = ma。作用于物體的力的矢量等于物體的質量M乘以它的加速度矢量a。
加速度是改變速度的能力。F在這里可以看作一個常量,因為說實話,你的團隊的規模是固定的,除非你是在 Google。你的時間也幾乎是固定的,一天 24 個小時,除非你住在火星上,它可能會長點,也就是 24.622962 小時吧。好吧,我們完蛋了。。只剩一個變量是可以修改了。根據第二定律,對于一個給定的F,加速度和質量是成反比的。質量是一個負擔,它和加速度是相背 的。
下面列出了一些提升質量的方法:
第三定律
作用力和反作用力總是同時存在的:或者說兩個物體間的相互作用力總是相等的,并且作用于相反方向。
A:“我們能刪了 XYZ 特性嗎?這樣的話代碼會簡單很多”R:“還是不要了,這是投資人 ABC 想要的”A:“好吧,沒關系”
A:“我們能改成 git 嗎?”R:“別啊,我們最喜歡這些老古董了”A:”那下次再說吧“
A:“可以升級下 Java 1.4 嗎”R:“生產環境還有很多在服務器在用呢”A:“好吧,那我還是堅持手動進行類型轉化吧”
我還想多碼點字,不過現在有一股反作用力在阻止我這么做。。。那今天就先到這吧。
感謝你浪費了這么長時間來聽我啰嗦了這么多。
引用