一個工程師的工程文化

ali-frank發表於2014-06-30

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

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

Do the right thing

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

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

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

Do the thing right

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

– 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給老闆看

Record it

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

– Reference  

– Communication

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

Continuous Improvement

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

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

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

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

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

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

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


相關文章