我眼中的軟件開發

          這篇文章是受啟發于要求我寫一些設計和spec的文檔的面試要求。趁這個機會整理整理自己的思路。

          什么是軟件開發呢,最常見的一種說法是,軟件開發是一門藝術。我覺得更現實的講,軟件開發應該是一種生產。跟其他所有的生產一樣。要考慮成本和收益。收益這塊,跟其他很多外部因素相關,對開發者或者說開發者的管理者來說無法控制,開發者從職業的角度出發更多需要考慮的是成本。這也是我們職業的目標。

          軟件這種產品的生產,材料本身的損耗也就是電腦,電費,基本屬于沉沒成本。不會因為咱們任何努力而改變。(也不是完全不能改變,只能是變多。。。。)那么,最大的成本損耗在時間上。一方面,程序員都屬于高薪人士(相對,相對)。每一天的損耗都意味著大量的錢打水漂了。另一方面,隨著時間的推移,商業價值在降低,風險卻在增加。

          對軟件開發來說,需求實現速度,應該說是很重要的,但是實現速度本身并不是考量的標準單位。作為最大成本考量標準的時間,從對她的消耗來看:除去簡單的功能點實現需要,需求的變化浪費的時間則更客觀。而無數實例證明,我們在需求分析階段投入時間誠然可以減少需求的變化,但是并不能達到我們滿意的高度,所以對需求變化的反應也是我們的重要標準。

          敏捷這個詞,我覺得非常好。做為一門方法學,從名字上就說明了軟件開發需要關注的兩個重要的點:需求實現速度和對于需求的反應速度。當然,說到這里有點虛了。我想,回歸到不太實際的本質,能更好的指導我們的實踐。Rails框架為什么這么火熱,恰恰因為它做到了這兩點。我們想想,為什么要設計?我讀過讓人舒爽的代碼,也讀過看著讓人想吐的代碼。拋掉個人的感情因素,這兩種代碼有什么區別呢?大部分讓我想吐的代碼里出現的是一些重復的代碼,看起來稍有不同,卻不肯費點心思除掉這些“壞味道”。重復代碼的問題在哪里呢?最大的問題就是隨著代碼量的增多,工作量的與日劇增。維護量也會增大。而且,復雜度絕對不是O(n)。其實我常常覺得,我們最早學程序的時候要學算法與數據結構。其實這個課程很早就告訴了我們編程最重要的兩塊:算法,結構。好的設計就是好的結構??蓴U展,可維護,最起碼,可以分工。

          好的設計可以大量的減少代碼。減少代碼就意味著成本的降低。也就是文初說的,我們職業的目標達到了。但是現實往往不是那么美好,雖然我們有很多OO的設計模式,我們有很多最佳實踐。但是在現實中,我們往往需要妥協。一般是三個原因:性能、穩定性、各種接口,在左右著我們。其實,很多時候,這也是最考驗一個程序員的功力的地方。如何在這三個沼澤上跳舞,才是軟件開發真正可以被稱之為藝術的地方。而怎么做,則只能靠一行一行的代碼鍛煉,一篇一篇文章和文檔整理經驗,沒法一句半句說得清楚的了。



          posted on 2010-04-15 16:38 咖啡屋的鼠標 閱讀(2100) 評論(3)  編輯  收藏 所屬分類: Agile 、隨筆

          評論

          # re: 我眼中的軟件開發 2010-04-15 19:42 路人甲

          "好的設計可以大量的減少代碼。減少代碼就意味著成本的降低。"
          對這句話不敢茍同,好的設計包括指可維護性、可擴展性,并不是說代碼量的減少。  回復  更多評論   

          # re: 我眼中的軟件開發 2010-04-15 22:02 咖啡屋的鼠標

          @路人甲
          可擴展,可維護。最終的判斷指標也是隨著擴展和維護,需要付出的時間。擴展時需要寫的代碼減少也是代碼減少。誠然代碼不能一概而論的作為時間的考量標準,因為一行代碼和一行代碼的價值并不同。除了不同的人,即便是同一個人,在不同的階段代表的時間占有量也不同??墒窃诿恳粋€單獨的時間點,我們可以把它做為一種單位去考慮我們的設計。比如我們需要擴展一個系統,好的設計可能只需要寫少量的代碼,不好的設計可能需要寫很多代碼。這也算是減少了代碼量。  回復  更多評論   

          # re: 我眼中的軟件開發 2010-04-19 13:34 Sefler

          Good~現在國內很多人還是認為代碼是軟件的全部,這真是悲哀!  回復  更多評論   

          <2010年4月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿(15)

          隨筆分類(52)

          隨筆檔案(76)

          文章分類(3)

          文章檔案(4)

          新聞檔案(1)

          收藏夾

          Flex

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 韶山市| 无棣县| 西安市| 北海市| 蛟河市| 桂平市| 石柱| 温泉县| 尖扎县| 深水埗区| 泾川县| 江达县| 怀来县| 道孚县| 合山市| 葫芦岛市| 永清县| 湖南省| 平和县| 平泉县| 珠海市| 辽阳市| 武冈市| 图木舒克市| 江源县| 盐津县| 霍林郭勒市| 鄯善县| 虎林市| 眉山市| 南川市| 万荣县| 余姚市| 崇义县| 通州市| 东乡县| 巴林左旗| 太仓市| 西乌| 桂阳县| 禹城市|