4個月的工作中對軟件設計開發的思考

                        Author : Gary Gao     

http://garyelephant.me

garygaowork[at]gmail.com 

關注自動化運維,軟件部署自動化

1. 運維監控平臺的設計:

集羣的運維監控,需要確保的是將發現問題,記錄問題,報告問題,定位問題緊密結合,尤其是對問題的準確定位。在運維監控平臺的設計、開發階段確立準確定位問題的機制,可使系統能夠記錄問題出現的原始點,不至於在實際運維的過程中,某個問題出現後卻很難排查,或者經過擴散傳播引發新的問題,增加了運維人員的操作難度。以目前主營電信增值業務的一些企業,其運維平臺的開發人員與運維人員重疊度較高,再者其運維人員與開發人員定義不明確,或者運維人員培訓不到位,或者兩者職責劃分不清,導致出現問題後運維人員僅僅起到了報告問題的作用,而實際的排查定位的工作全部落到了開發人員手中,嚴重影響了開發人員的正常工作。現在不少企業都是運維與開發結合,兩種職責不分人,不獨立,一個運維人員既開發,又運維。對於運維對象在地理位置上相近的,這種結合善於發揮其優勢。而對於運維對象之間地理位置較遠的,現場的複雜性將使發現定位問題更加困難,這時候更加需要將已有經驗及良好設計相結合,來開發一個好的運維監控平臺。


2.程序員與公司共同成長的原因

我想了想,決定說程序員(或者說是公司裏搞技術的人)與公司一起成長的因素,而不是程序員在公司裏越來越苦逼的原因,也許我講的不僅限於程序員。三流的公司做產品,二流的公司做人才,一流的公司做文化。一流的公司做的是什麼樣的文化?對於我們程序員來說,我們需要的是一種開放的、自由的、追求高效、注重員工利益的文化。公司應該鼓勵員工,開拓眼界,從外界輸入知識;有開放的心態,從自身輸出知識,將自身變成一灘活水。做項目的時候可以汲取其他優秀項目的思想,不要不斷地把糟糕的代碼和設計修改的更糟糕。鼓勵員工表達觀點,將好想法變成現實。鼓勵員工稍作無意義的勞動,想辦法改進工作,並給予豐厚獎勵。不要給員工形同虛設的獎勵福利(一般依靠削減員工利益來實現贏利的公司都是3流或3++流的公司),不要加班再加班,減少了員工學習思考的時間。


3.如何做更好的設計

什麼是不良的”設計”:

I.設計者能力有限,設計出了糟糕的項目,把訂票網站設計成了12306

II.設計本身是良好的,但設計沒有表達清楚,定義不明確。

一個項目最好從一開始就設計良好,定義明確。在團隊協作開發的過程中,每個模塊的負責人都有設計明確的文檔可遵循。

一個設計不好的文檔或規範導致的後果是模塊功能與實現之間,實現與設計之間的矛盾越來越深,可能是堅持現有糟糕的設計,不斷修改代碼,也可能是設計向代碼妥協,將設計做的更爛。但無論是誰的堅持與妥協,都會使整個項目變得更糟糕。修改項目的複雜度難以預測,項目的工期難以預測。


如何做良好的“設計”:

(1)對於I.設計者應提高設計能力,可以借鑑牛人的設計思路,優秀項目的設計思想,學習他人的思路,開拓自己的思維;提高自己的抽象思維能力。同時將工作中的設計經驗總結成可供參考的設計思路。

(2)對於II.設計者應使表達語言更嚴謹、簡潔。設計者還應及時跟進設計的實際實現過程,及早發現問題。


“The pragmatic programmer”《程序員修煉之道》在“靠巧合編程中”,討論了靠巧合編程的癥結弊病,其中一點是“隱含的假定”——“人們都在頭腦裏帶着許多假定工作,但這些假定很少被記入文檔,而且在不同的開發者之間常常是衝突的。並非以明確的事實爲基礎的假定是所有項目的禍害。”

所以,實在有必要找到那些還不錯的隱含的假定和設計,把它們作爲規範寫入文檔,作爲明確的事實確立下。


轉載本文請註明作者和出處[Gary的影響力]http://garyelephant.me,請勿用於任何商業用途!

Author: Gary Gao 關注互聯網、分佈式、高併發、自動化、軟件團隊
支持我的工作:  https://me.alipay.com/garygao



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章