軟件開發與牛頓三大定律

jopen 10年前發布 | 5K 次閱讀 軟件開發

  英文原文:software development and newtons laws

  我不知道從何時起,速度(效率)這個詞在軟件開發領域安家落戶了,以前可從來沒有這么流行過。然而我非常確定的一點是如果你提到運動卻沒有提到三大定律的話,艾薩克·牛頓先生肯定會不高興。

  第一定律

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

  外力簡直是太多了:

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

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

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

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

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

      第二定律

    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 服務器,緩存服務器,消息隊列,第三方集成服務器。
    • </ul>

        第三定律

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

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

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

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

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

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

        引用

      1. http://en.wikipedia.org/wiki/Velocity_(software_development)
      2. http://en.wikipedia.org/wiki/Newton's_laws_of_motion
      3. </ol> 來自: it.deepinmind.com

         本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
         轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
         本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!