谈谈技术规范的制定
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
談?wù)劶夹g(shù)規(guī)范的制定
幾乎所有的技術(shù)企業(yè)都會重視技術(shù)規(guī)范,但這些規(guī)范起到的實質(zhì)作用就好比“請保持室內(nèi)衛(wèi)生,不準亂團垃圾,禁止隨地吐痰”。
筆者工作15年,這是15年經(jīng)歷了很多,也在不同的公司任職過。幾乎每到一家公司都會遇到各種規(guī)范,隨著職業(yè)發(fā)展最后我也成為了規(guī)范的制定者,也曾經(jīng)主持制定過開發(fā)規(guī)范,運維規(guī)范,測試規(guī)范等等。
我做過很多規(guī)范,文檔無數(shù),技術(shù)人員根本不會去看,通過開會向下傳達,開會的人根本沒有心思理會你的規(guī)范,規(guī)范執(zhí)行阻力是很大的,效果也差。
終于有一天我意識問題的存在,開始反思,企業(yè)是否需要制定這些規(guī)范。我發(fā)現(xiàn)這與現(xiàn)環(huán)境有很大關(guān)系,與企業(yè)文化有很大關(guān)系。http://netkiller.github.io/
有些強制的規(guī)范可以通過一些技術(shù)手段,避免出現(xiàn)。不會出現(xiàn)也就無需規(guī)范!
故事一
例如下面一個小故事,公司某部因為將開發(fā)數(shù)月的代碼丟失了,導(dǎo)致測試無法進行,領(lǐng)導(dǎo)打發(fā)雷霆,某管理層制定了下面的規(guī)范,大意為。
我認為源碼管理主要有兩種手段,技術(shù)手段與管理手段。
我先談?wù)劰芾硎侄?#xff1a; 例如通常通過規(guī)章制度,責任追究等等手段,要求員工達到規(guī)范標準,但通常執(zhí)行力都會打折,無法達到預(yù)期,人的不穩(wěn)定性因素太多。往往發(fā)現(xiàn)員工沒有按照規(guī)范操作為時已晚,將該員工辭退也無法挽回公司的損失。http://netkiller.github.io/
就如公司規(guī)章制度寫的清清楚楚,要求員工提交代碼到版本庫,但各種原因沒有被執(zhí)行,當代碼丟失,從上至下追究責任,公司的損失無法挽回。 在舉一個例子,運維工作要求備份數(shù)據(jù),A員工負責備份,B 員工負責檢查A員工的備份,結(jié)果兩年以后出事了,需要恢復(fù)數(shù)據(jù),發(fā)現(xiàn)A沒有備份,而B在一年前就再沒有檢查A的工作。起初前一年還是按流程備份,后來A發(fā)現(xiàn)B不再嚴格檢查工作,備份工作逐漸減少,最后停止了備份,一直相安無事,直到事發(fā)。
所以我主張技術(shù)手段: 例如源碼如果發(fā)布到線上,必須經(jīng)過版本庫,只能使用自動部署,不允許程序員私自將代碼交給運維手工部署。另外發(fā)布代碼的同事,可以不提供生產(chǎn)服務(wù)器登陸權(quán)限,他只能通過工具發(fā)布代碼。 部署流程如下: 源碼(程序員) 提交到development 分支UAT階段 ----> 合并到 testing 分支Beta階段(主管合并,程序員沒有權(quán)限)------> master 分支(主管合并) -----> 自動部署系統(tǒng)(運維) ----> 生產(chǎn)服務(wù)器。 這樣通過技術(shù)手段防止了代碼因員工離職,硬盤損壞等等原因,導(dǎo)致代碼丟失的可能。 代碼發(fā)布者也無需對照部署文檔,手動登陸服務(wù)器逐條按照部署說明書操作,防止了人員誤操作,也提高了部署效率,節(jié)省了人力成本,通常在5分鐘之內(nèi)可以完成所有部署。
故事二
我再來舉另外一個例子,就是開發(fā)中的編碼規(guī)范,很多軟件企業(yè)都有是不是?
例如要求程序員: if (){} 要寫成 if () { ... } 等等要求不一一列舉,甚至組織代碼評審解決編碼規(guī)范問題。
我的建議為什么不在IDE上設(shè)置自動格式化,或者在svn/git提交的時候通過hook調(diào)用格式化程序。http://netkiller.github.io/
故事三
管理層要求運維每天發(fā)送服務(wù)器狀態(tài)報告,運維人員需要登錄每個服務(wù)器或者從cacti等工具中獲得服務(wù)器運行狀態(tài)數(shù)據(jù),然后制作一個報告文檔,每天給各位發(fā)送一次。
運維需要一個專職人員做這個報告,這種報告幾乎沒有人看,就像“人民日報” 人民從來不看。
當運維事故該出現(xiàn)的時候還是會出現(xiàn),老板一個一個罵,扣工資,扣獎金,運維覺得委屈,公司受到損失。平日里的這些工作并不能避免運維事故,也不能改善運維工作。
我覺得很多規(guī)范是形式主義。我一向主張實用主義。
通過技術(shù)手段可能避免很多沒有意義規(guī)范,開發(fā)自動化,測試自動化,運維自動化,這是趨勢也是我的努力的目標。
上面僅僅舉了幾個例子,較片面,不能完全表達我的想法,需要更多的溝通,歡迎提出您的意見與建議。
出處?http://netkiller.github.io/
轉(zhuǎn)載于:https://my.oschina.net/neochen/blog/392762
總結(jié)
- 上一篇: Windows Server 2008
- 下一篇: LINQ to Entities 不支持