軟件做爲一本新興學科,只有短短几十年的歷史,相比較於土木工程這樣有悠久歷史的工程學,說軟件工程還處在嗷嗷待哺的嬰兒期,或是幼兒期一點也不爲過,要真正造成一套理論完善,又能在實踐上運用成功的軟件工程學,我相信還有很長的路要走。正由於如此,軟件工程做爲一本學科,其發展也是至關迅速的,從學校課本里的正統的符合CMMI流程的瀑布模型,到實際接受度更高的敏捷開發,各類工程學和方法論能夠說是百家爭鳴、各有千秋。運維
做爲一個有理想的猿類,在接受這些理論碰撞的同時,心裏深處,應該要慢慢滋生出本身的工程文化,本身的最佳實踐。今天在一個內部討論中,有幸接觸到這樣一套文化,我的以爲仍是言之有物的,故記錄於此。spa
在錯誤的道路上,越努力只會越錯。設計
- 要具有挑戰領導的勇氣 (把握度,過之會自負)開發
- 要相信合理的,在可掌控範圍以內的衝突是有益的rem
具體就是軟件工程的方法學文檔
- Design review
- Code review
- Unit Test (Functional Unit Test) http://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests
- CI/CD (Continuous Integration, Continuous Deployment)
- Measurement & Monitoring ( 推薦閱讀 《How to measure everything》) - 系統運維和系統提高的必備良藥
- Visualize your result (dashboard) - show給老闆看get
好記性不如爛筆頭,作記錄,有時候也叫寫文檔(猿類對寫文檔這個詞有抵觸感),但以一個工程師的信譽擔保,必要的設計文檔和工程記錄真的是很是重要,主要體如今it
- Reference io
- Communication持續集成
固然在CSDN寫博文也是一種記錄,若是說在公司寫項目的記錄,是爲了公司和同事,那麼這裏的記錄更多的是爲了本身,若是有幸這些文字可以幫助到其餘朋友,那更是開心了。 因此勤作記錄,於己於人都是一件功德無量的事。
咱們對這個世界的認識,有兩種方法論體系,即構建論和擴展論。
-構建論, 是相信我的英雄主義,相信一個很牛B的人,能夠構建出人類的伊甸園,構建出一個和諧社會。
-擴展論,是相信我的的才能和所能領悟的知識是有限的,對世界的認知應該是站在巨人的肩膀上,一點一點向前推動。
法國人相信構建論,因此攻佔了巴士底獄,革命了封建王朝。
英國人相信擴展論,對舊的制度進行持續改良,從而造成了現今的君主立憲制。
在軟件工程裏,面對不斷腐朽的舊系統,一樣純在兩種不一樣的選擇,是所有推翻從新構建呢,仍是按部就班一點一點改良重構呢,我相信這要視具體狀況而定了,要作權衡,若是推翻重來的代價比重構的代價還要小,也不是不能夠考慮,但整體來講,咱們仍是倡導擴展方法論,經過代碼重構,可持續集成,對系統進行一點一點按部就班的改良。
因此Continuous Improvement是軟件保持生命力的重要手段,若是你不但願本身的系統淪落到要被別人革命的下場,那就持續的對其進行改良吧