軟體開發與牛頓三大定律

edithfang發表於2014-05-28

第一定律

在一個慣性參考系裡面來看的話,除非受到外力的作用,否則物體會保持靜止或者勻速運動。

外力簡直是太多了:


  • 開發人員在解決BUG
  • 開發人員在增加新的特性
  • 開發人員在產生新的BUG
  • 業務方要求降低操作成本
  • 第三方競爭改變了市場格局
  • 使用者在改變
  • 未完待續


然而一個團隊或者產品要麼是黃了(保持靜止狀態)要麼是在進行勻速運動(每天都生產固定的利潤或者消耗一定的預算)。

現在我敢說,說起團隊的速度(效率)是違背第一定律的,因為要維持團隊的效率的話需要做什麼?什麼都不用做!

好吧,這會讓很多主管感覺反感,”我還是希望我的開發人員做點事情的“。

那麼我們需要看一下下一條定律。

第二定律

F = ma。作用於物體的力的向量等於物體的質量M乘以它的加速度向量a。

加速度是改變速度的能力。F在這裡可以看作一個常量,因為說實話,你的團隊的規模是固定的,除非你是在Google。你的時間也幾乎是固定的,一天24個小時,除非你住在火星上,它可能會長點,也就是

24.622962小時吧。好吧,我們完蛋了。。只剩一個變數是可以修改了。根據第二定律,對於一個給定的F,加速度和質量是成反比的。質量是一個負擔,它和加速度是相背的。

下面列出了一些提升質量的方法:


  • 想擁有的特性太多了
  • 太多技術債要還了
  • 太多的抽象,一層又一層,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伺服器,快取伺服器,訊息佇列,第三方整合伺服器。


第三定律

作用力和反作用力總是同時存在的:或者說兩個物體間的相互作用力總是相等的,並且作用於相反方向。

A:“我們能刪了XYZ特性嗎?這樣的話程式碼會簡單很多” R:“還是不要了,這是投資人ABC想要的” A:“好吧,沒關係”

A:“我們能改成git嗎?” R:“別啊,我們最喜歡這些老古董了” A:”那下次再說吧“

A:“可以升級下Java 1.4嗎” R:“生產環境還有很多在伺服器在用呢” A:“好吧,那我還是堅持手動進行型別轉化吧”

我還想多碼點字,不過現在有一股反作用力在阻止我這麼做。。。那今天就先到這吧。

感謝你浪費了這麼長時間來聽我囉嗦了這麼多。

引用

* http://en.wikipedia.org/wiki/Velocity_(software_development)

* http://en.wikipedia.org/wiki/Newton's_laws_of_motion

本文轉載自:it.deepinmind




相關閱讀
評論(1)

相關文章