閱讀401 返回首頁    go 阿裏雲 go 技術社區[雲棲]


一個工程師的工程文化

軟件作為一本新興學科,隻有短短幾十年的曆史,相比較於土木工程這樣有悠久曆史的工程學,說軟件工程還處在嗷嗷待哺的嬰兒期,或是幼兒期一點也不為過,要真正形成一套理論完善,又能在實踐上運用成功的軟件工程學,我相信還有很長的路要走。正因為如此,軟件工程作為一本學科,其發展也是相當迅速的,從學校課本裏的正統的符合CMMI流程的瀑布模型,到實際接受度更高的敏捷開發,各種工程學和方法論可以說是百家爭鳴、各有千秋。

作為一個有理想的猿類,在接受這些理論碰撞的同時,內心深處,應該要慢慢滋生出自己的工程文化,自己的最佳實踐。今天在一個內部討論中,有幸接觸到這樣一套文化,個人覺得還是言之有物的,故記錄於此。

Do the right thing

在錯誤的道路上,越努力隻會越錯。

- 要具備挑戰領導的勇氣 (把握度,過之會自負)

- 要相信合理的,在可掌控範圍之內的衝突是有益的


Do the thing right

具體就是軟件工程的方法學

- Design review
- Code review
- Unit Test (Functional Unit Test) https://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給老板看


Record it

好記性不如爛筆頭,做記錄,有時候也叫寫文檔(猿類對寫文檔這個詞有抵觸感),但以一個工程師的信譽擔保,必要的設計文檔和工程記錄真的是非常重要,主要體現在

- Reference  

- Communication

當然在CSDN寫博文也是一種記錄,如果說在公司寫項目的記錄,是為了公司和同事,那麼這裏的記錄更多的是為了自己,如果有幸這些文字能夠幫助到其他朋友,那更是開心了。 所以勤做記錄,於己於人都是一件功德無量的事。


Continuous Improvement

我們對這個世界的認識,有兩種方法論體係,即構建論和擴展論。

-構建論, 是相信個人英雄主義,相信一個很牛B的人,可以構建出人類的伊甸園,構建出一個和諧社會。

-擴展論,是相信個人的才能和所能領悟的知識是有限的,對世界的認知應該是站在巨人的肩膀上,一點一點向前推進。

法國人相信構建論,所以攻占了巴士底獄,革命了封建王朝。

英國人相信擴展論,對舊的製度進行持續改良,從而形成了現今的君主立憲製。


在軟件工程裏,麵對不斷腐朽的舊係統,同樣純在兩種不同的選擇,是全部推翻重新構建呢,還是循序漸進一點一點改良重構呢,我相信這要視具體情況而定了,要做權衡,如果推翻重來的代價比重構的代價還要小,也不是不可以考慮,但總體來說,我們還是倡導擴展方法論,通過代碼重構,可持續集成,對係統進行一點一點循序漸進的改良。

所以Continuous Improvement是軟件保持生命力的重要手段,如果你不希望自己的係統淪落到要被別人革命的下場,那就持續的對其進行改良吧




最後更新:2017-04-03 06:03:05

  上一篇:go Spark技術內幕:一個圖搞定Spark到底有多少行代碼
  下一篇:go 貪吃蛇,自己編