論“技術(shù)QA”的必要性
技術(shù)QA是我造出來(lái)的詞,指的是團(tuán)隊(duì)中的自由人,他沒有特定的編碼任務(wù),只是檢查程序代碼,并優(yōu)化代碼結(jié)構(gòu)或提出優(yōu)化代碼結(jié)構(gòu)的合理性建議,幫助成員重構(gòu)其中重復(fù)的或低效的代碼。
我的建議(包括以前提過的)可以分為三類,一是團(tuán)隊(duì)的架構(gòu)和運(yùn)營(yíng)、二是具體技術(shù)、三是用人法則。前兩個(gè)我以前都提過很多,這次我主要提用人法則。
現(xiàn)在項(xiàng)目出現(xiàn)了不少狀況,有人員流失,有軟件成型困難等,我認(rèn)為跟用人法則有很大關(guān)系。當(dāng)領(lǐng)導(dǎo)能夠因人的不同而賦予不同的角色時(shí),團(tuán)隊(duì)的效率、活力、成員的成就感、團(tuán)隊(duì)的凝聚力,產(chǎn)品的質(zhì)量都會(huì)很高,反之如果把每個(gè)人都當(dāng)成相同的人來(lái)用,所有人都是寫代碼的程序員,都平均被分配一塊任務(wù),我認(rèn)為會(huì)出現(xiàn)成員在接到只能發(fā)揮自己三分之一能力的任務(wù)時(shí)會(huì)很沒成就感,接到超過自己能力的任務(wù)時(shí)會(huì)很有挫敗感,沒有成就感的工作會(huì)使成員失去向心力,進(jìn)而流失。我覺得Tony的辭職有這方面的原因,每個(gè)人都是不一樣的,平均主義行不通,差異化很重要。
微軟之所以能夠取得今天的成就,我認(rèn)為有兩方面原因,一方面是商業(yè)策略的成功,一方面是在軟件開發(fā)過程中形成了一套合理高效的團(tuán)隊(duì)文化,這些經(jīng)過實(shí)踐檢驗(yàn)的模型和準(zhǔn)則統(tǒng)稱為MSF(Microsoft Solution Framework)。里面的團(tuán)隊(duì)模型包括了開發(fā)、測(cè)試、用戶體驗(yàn)、產(chǎn)品管理、程序管理、發(fā)布管理、后勤等如此多截然不同的角色,而各角色間同等重要,因?yàn)槿魏我粋€(gè)出了問題,都會(huì)影響到產(chǎn)品的進(jìn)度和質(zhì)量。也就是說我想當(dāng)“技術(shù)QA”這個(gè)角色并非是想要個(gè)官兒當(dāng)當(dāng),因?yàn)檫@個(gè)角色并不高人一等,而是跟其它角色平等的,只是分工不同,專業(yè)的分工產(chǎn)生高效和優(yōu)質(zhì)的勞動(dòng)。我的意圖是做自己擅長(zhǎng)的,團(tuán)隊(duì)會(huì)有更好的成果,自己也能獲取成就感,我不是最聰明的,我的自信建立在寫過的代碼量上,在技術(shù)的追求上,以及自我否定精神方面,現(xiàn)有團(tuán)隊(duì)中沒人比得過我,我達(dá)到了俯視現(xiàn)有項(xiàng)目中代碼的水平,我能推翻別人,也樂意推翻自己。我擔(dān)當(dāng)這個(gè)角色,通過讀代碼,與其他人結(jié)隊(duì)編程等方式,可以在模塊劃分,接口設(shè)計(jì)和編碼風(fēng)格方面指導(dǎo)團(tuán)隊(duì)成員,編寫出健壯的代碼,減少Bug,提高質(zhì)量。這樣用于測(cè)試的時(shí)間將會(huì)縮短,成本便會(huì)降低,客戶滿意度會(huì)提高, 我覺得你跟Michal和Dawn把道理講清楚,他們沒有理由不支持。
我想當(dāng)這個(gè)角色的第二個(gè)原因是,更好的傳播知識(shí)和應(yīng)用知識(shí)。我以前提過的很多建議基本上在剛開始被否定,但經(jīng)過解釋都被認(rèn)可,卻最終束之高閣無(wú)人問津,沒有得到貫徹落實(shí)。我反省自己,出現(xiàn)這個(gè)現(xiàn)象的原因是,“僅僅大概知道”一個(gè)新的好的方法,等于0,因?yàn)閮H僅大概知道,無(wú)代碼審核機(jī)制,人員自己追求技術(shù)的主動(dòng)性又不足(意思不是說大家一點(diǎn)都不重視質(zhì)量,而是沒有達(dá)到渴望的程度),最終結(jié)果就是不用。知道不重要,做很重要。要能夠把好的方法用起來(lái),需要領(lǐng)導(dǎo)的“強(qiáng)力”推廣和“深度”的技術(shù)溝通,養(yǎng)成代碼重構(gòu)的習(xí)慣,當(dāng)遇到一個(gè)新問題時(shí),不是“勤奮”的堆砌,僅僅讓代碼跑起來(lái)完成任務(wù),而是積極研究最佳解決方案,用最少的代碼去實(shí)現(xiàn)它,“懶惰”的追求“簡(jiǎn)單性”。研究完后向團(tuán)隊(duì)做講解,經(jīng)過質(zhì)疑和完善,得到一個(gè)成熟的方案。當(dāng)遇到一個(gè)舊問題時(shí),不是“耐心”的用自己的“笨”方法去實(shí)現(xiàn),而是學(xué)習(xí)別人已經(jīng)研究過的成果,用“浮躁”的方式實(shí)現(xiàn)它。總之一句話,讓質(zhì)量管理落在實(shí)處。
測(cè)試的作用只是檢查程序的正確性。
一般QA的作用是從管理角度提高產(chǎn)品質(zhì)量。
技術(shù)QA的作用是深入代碼內(nèi)部,在開發(fā)的過程中,從技術(shù)上提高產(chǎn)品質(zhì)量,降低Bug率。
所以我認(rèn)為我們的團(tuán)隊(duì)需要技術(shù)QA的迫切程度和重要程度超過測(cè)試。我們不應(yīng)該被傳統(tǒng)思想所禁錮,應(yīng)該學(xué)會(huì)創(chuàng)新思維,積極開創(chuàng)工作新局面。
最后我想說一下代碼的問題,我認(rèn)為如果把軟件比做大廈,那么程序員就是地基,軟件的架構(gòu)是柱子,一行行代碼是磚瓦。人的作用最重要,起到地基的作用,樓的高度不但決定于人的數(shù)量,更決定于人的質(zhì)量(By the way,質(zhì)量是可以改進(jìn)的,但是也是難以改進(jìn)的,一方面是人的追求不同,他的觀念很難被改變,另一方面是智商的限制,比如我再怎么努力也達(dá)不到微軟的錄用標(biāo)準(zhǔn),成為操作系統(tǒng)的地基)。你所說的用了某種模式可以被認(rèn)為是某些柱子,但并非所有的柱子,缺少另外一些柱子顯然不能支撐起大廈。最重要的是,不能因?yàn)橐恍┲釉旌昧耍驼J(rèn)為磚瓦也是好的。柱子也是代碼,從量上說,柱子只是大廈的百分之一,沒有柱子就沒有大廈沒錯(cuò),但沒有磚瓦的大廈只是亭子,只能看不能住。柱子好是必須的,沒什么值得炫耀,真正的難點(diǎn)是每塊磚瓦都是好的。用破磚爛瓦蓋出的只能是危樓,實(shí)踐證明,它連表面都不會(huì)風(fēng)光。所以我認(rèn)為,最佳做法是用較少的精力搭出初始架構(gòu),之后必須把大多數(shù)精力集中在磚瓦上,在開發(fā)過程中不斷的前進(jìn)——反省和否定自我——對(duì)代碼和架構(gòu)做必要的重構(gòu)——再前進(jìn)……周而復(fù)始。這種小步快跑的策略也被用于企業(yè)的發(fā)展。
總結(jié):雖然我不是牛人(牛人都去微軟了),但在這個(gè)團(tuán)隊(duì)中,我有能力當(dāng)“技術(shù)QA”,團(tuán)隊(duì)中也急需這個(gè)角色。另外,我的心態(tài)很好,當(dāng)不上也不會(huì)辭職。
posted on 2013-04-10 09:52 順其自然EVO 閱讀(198) 評(píng)論(0) 編輯 收藏