【課程背景】
軟件質(zhì)量,不但依賴于架構(gòu),設(shè)計(jì)以及項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān).這一點(diǎn),無論你使用什么開發(fā)技術(shù),都不得不承認(rèn). 代碼是程序員溝通直接的手段,代碼是技術(shù)交流的手段,代碼是需求交流的途徑。重視代碼,回歸本源,曾經(jīng)我們遠(yuǎn)離代碼,談架構(gòu)設(shè)計(jì),談UML,談開發(fā)流程。如今我們落地,找回軟件的本源,看清代碼、深入思考代碼。那些研發(fā)中心非常重視代碼,Facebook就有典型的Code wins arguments(代碼贏得爭論)。在Facebook 做 code review時(shí)間大約占50%,管理者對(duì)代碼質(zhì)量負(fù)有一定責(zé)任 。甚至代碼質(zhì)量高于一切:Facebook Code review是KPI考核的對(duì)象,實(shí)行連坐制,如果因?yàn)榇a質(zhì)量問題,那么產(chǎn)生的KPI責(zé)任包括領(lǐng)導(dǎo)30%、程序員50%、審核人員20%。
但是我們的管理者經(jīng)常聽到開發(fā)人員這樣抱怨:“不能再增加功能了!我們得停下來重寫代碼。軟件代碼一團(tuán)糟,就像紙糊的老虎,根本應(yīng)付不了持續(xù)增加的用戶需求。我們實(shí)在維護(hù)不下去了!可以推倒重寫吧”
這一幕在很多公司上演過,現(xiàn)在依然在不斷重演。一旦公司陷入這種困境,以前版本的開發(fā)者往往淪為替罪羊。新的開發(fā)者一般就會(huì)罵前人怎么寫這么爛的代碼。他們準(zhǔn)備推倒重來,準(zhǔn)備重寫系統(tǒng)。在重寫代碼的過程中,用戶無法看到產(chǎn)品的任何改進(jìn)。你可能認(rèn)為重寫代碼至多也就幾個(gè)月,但是實(shí)際花費(fèi)的時(shí)間無一例外要多得多。你只能坐在一旁,眼睜睜看著用戶投奔競爭對(duì)手,而這個(gè)時(shí)候,競爭對(duì)手恰恰在不斷地改進(jìn)產(chǎn)品。
我們研發(fā)中心有一個(gè)理念”代碼是債務(wù)而不是資產(chǎn)”。開始,團(tuán)隊(duì)會(huì)編寫代碼,做出產(chǎn)品,并用它來賺錢,但是,之后團(tuán)隊(duì)?wèi)?yīng)該盡可能地尋找減少代碼的方法和使代碼盡量整潔,從而降低成本。軟件界有一個(gè)真理,你擁有的代碼越多,維護(hù)代碼所要付出的成本就越高。如果你的代碼結(jié)構(gòu)越好,你做了越多的單元測試,你的代碼質(zhì)量越好、越小、耦合越松,那么添加新代碼所需要付出的成本就越少。因此大師 Craig Larman說: “好維護(hù)的代碼就是沒有代碼,好的程序員的代碼產(chǎn)量是負(fù)的,因?yàn)樗ㄟ^減少代碼來增加功能”。對(duì)比現(xiàn)實(shí)中,很多人以為,LOC(line of code)越多的feature越大,寫LOC越多的程序員越牛。這其實(shí)是很錯(cuò)誤的觀念.
因此我們必須有全面的管理制度讓我們保持代碼少而整潔。所以Michael Feathers認(rèn)為"未來屬于知道如何有策略地刪除代碼的公司”。持有代碼的成本要比我們想象的大。意識(shí)到這一點(diǎn)的公司更具有競爭優(yōu)勢。
為了切實(shí)幫助軟件企業(yè)降低企業(yè)項(xiàng)目開發(fā)成本,大面積提高軟件工程師編程能力和代碼質(zhì)量管理能力,我們特別推出實(shí)戰(zhàn)訓(xùn)練營,分享多家大型研發(fā)中心代碼管理經(jīng)驗(yàn)給大家.
該課程適應(yīng)于各個(gè)階段的技術(shù)人員.初級(jí)工程師能夠透過大師的眼睛來看待編程,了解編程的價(jià)值觀和原則;具有豐富經(jīng)驗(yàn)的設(shè)計(jì)師和架構(gòu)師可以通過實(shí)現(xiàn)模式進(jìn)行反思,探究成功實(shí)踐背后的意義.把價(jià)值觀,原則和開發(fā)實(shí)踐結(jié)合;管理者通過學(xué)習(xí)業(yè)界典型研發(fā)中心的管理經(jīng)驗(yàn)和失敗的教訓(xùn),來制定自己公司的代碼管理策略.質(zhì)量管理相關(guān)人員學(xué)習(xí)如何定制代碼質(zhì)量指標(biāo),通過哪些工具進(jìn)行監(jiān)控,怎樣管理代碼質(zhì)量。
【培訓(xùn)特色】
我們已經(jīng)為幾十家企業(yè)提供了多次培訓(xùn)和咨詢服務(wù),以下企業(yè)已經(jīng)選擇了我們的內(nèi)訓(xùn)課程
互聯(lián)網(wǎng)研發(fā)企業(yè),比如百度研發(fā)中心4次 ,阿里巴巴6次, 騰訊 ,暢唐科技, 獵豹移動(dòng)(原金山移動(dòng))
電信研發(fā)企業(yè),比如思科研發(fā)中心5次,阿爾卡特-朗訊研發(fā)中心,華為研發(fā)中心13次,摩托羅拉研發(fā)中心 1次,大唐電信研發(fā) 1次,廣州從興電子,億陽通信 1次, 愛立信研發(fā)中心8次,鼎橋通信技術(shù)5次, 艾默生深圳研發(fā)中心 4次, 中興通信, 中興軟創(chuàng)
廣電行業(yè):廣州誠毅科技研發(fā)中心,
企業(yè)軟件研發(fā)企業(yè),比如Adobe中國研發(fā)中心,北京久其研發(fā)中心,博古中國研發(fā)中心,金蝶深圳研發(fā)中心, EMC中國研發(fā)中心(北京和上海), VMware(北京與上海研發(fā)中心), Intel中國研發(fā)中心(上海), AutoDesk上海研發(fā)中心
嵌入式軟件企業(yè),比如阿爾卑斯中國研發(fā)中心,德國M&M Software,西門子研發(fā)中心, Sony研發(fā)中心,金立智能研究院,南車研發(fā)中心,德塞西威,霍尼韋爾研發(fā)中心, 東芝中國研發(fā)中心, 匯川科技,
外包類企業(yè),聯(lián)盟計(jì)算機(jī)服務(wù)(天津)有限公司ACS 3次。
金融行業(yè):恒生電子,華騰,中國人民銀行研發(fā)中心,工商行研發(fā)中心,平安科技研發(fā)中心,建行研發(fā)中心,深圳登記結(jié)算研發(fā)中心,花旗銀行中國研發(fā)中心
我們已經(jīng)為幾十期公開課,已經(jīng)有100多家企業(yè)已經(jīng)選擇了我們的公開課程
騰訊(深圳)有限公司, EMC中國研發(fā)中心,華為終端有限公司、 斯倫貝謝技術(shù),通用電氣醫(yī)療系統(tǒng)(中國)有限公司,華為技術(shù)有限公司,廣州從興電子開發(fā)有限公司、福建星網(wǎng)銳捷股份有限公司,廣州菲特網(wǎng)絡(luò)科技有限公司,盛立金融(杭州)軟件公司 ,索尼中國研發(fā)中心, 愛德萬,上海金慧軟件有限公司,珠海世紀(jì)鼎利通信科技股份,蘭吉爾儀表系統(tǒng)有限公司,珠海飛企軟件有限公司,廣東佳和通信技術(shù)有限公司,珠海一多監(jiān)測科技有限公司,遠(yuǎn)光軟件股份有限公司
【目標(biāo)收益】
課程根據(jù)編程大師的理論:
編程是一種態(tài)度,編程是一種技藝,編程是一種習(xí)慣。
面向以下不同的人群,有不同收獲。
角色 |
收獲 |
技術(shù)負(fù)責(zé)人/技術(shù)總監(jiān) |
了解業(yè)內(nèi)代碼審查的形式、技術(shù)、技巧和流程的成功經(jīng)驗(yàn),優(yōu)化現(xiàn)有開發(fā)中心代碼審核方法; 掌握業(yè)內(nèi)成熟的自動(dòng)化審核審查工具及方法,提升開發(fā)人員在代碼結(jié)構(gòu)分析、代碼質(zhì)量度量、代碼覆蓋率分析等方面的能力,并有效運(yùn)用到項(xiàng)目研發(fā)工作中。 |
項(xiàng)目經(jīng)理/項(xiàng)目管理人員/架構(gòu)師/ |
學(xué)習(xí)其他研發(fā)機(jī)構(gòu)的代碼管理思想 代碼管理手段 代碼管理相關(guān)流程和相關(guān)工具 代碼監(jiān)控 |
測試部門/質(zhì)量管理部門 |
代碼審查 代碼檢查列表 代碼管理手段 代碼管理制度的建立 |
經(jīng)驗(yàn)豐富的開發(fā)人員 |
掌握代碼編碼規(guī)范、代碼評(píng)審要點(diǎn)等知識(shí),引導(dǎo)開發(fā)人員養(yǎng)成正確的代碼編寫習(xí)慣; 編程技藝和相關(guān)編程實(shí)踐 重構(gòu)手段 |
一般開發(fā)人員 |
編程技藝和相關(guān)編程實(shí)踐 重構(gòu)手段 代碼壞味道 |
【培訓(xùn)對(duì)象】
各類軟件企業(yè)和研發(fā)中心的程序員、軟件設(shè)計(jì)師、架構(gòu)師, 項(xiàng)目經(jīng)理,質(zhì)量部門員工。
如果你不重視代碼質(zhì)量, 請(qǐng)不要參加. 本課程面向重視代碼質(zhì)量的管理者.?
如果你不認(rèn)為寫好代碼是一件重要,困難并且有趣的事情,請(qǐng)你不要參加. 本課程面向追求卓越的程序員,我們認(rèn)為編程是一種態(tài)度.
如果你已經(jīng)多年不寫代碼,建議不要參加,本課程面向一線還在編程的程序員/設(shè)計(jì)師/架構(gòu)師
【培訓(xùn)時(shí)長】
5天
【課程大綱】