平凡是一種態(tài)度笙什,平庸是個人能力,平凡之人豈可平庸F谙拧(工作篇)
程序員的現(xiàn)狀俱恶,以體力勞動者的身份參與軟件生產(chǎn)活動。作為一軟件工程師竿屹,或程序員,或碼農(nóng),在工作n久后意系,多數(shù)會轉崗。若堅持這個崗位饺汹,個人思考的路線包含三方面的提升:
技術維度:某方向技術深度提升蛔添、基于深度基礎的技術廣度認知
協(xié)同維度:周邊崗位的部署與職責(如:集成、測試兜辞、資料迎瞧、SE、其他開發(fā))
組織維度:項目管理逸吵、技術管理凶硅、團隊建設等
構建以技術為中心的個人信服力,以全面的視角扫皱、理解共贏的思維足绅、協(xié)同運轉的方式,影響甚至引導組織和周邊的運轉方式韩脑。達成穩(wěn)定氢妈、完整、快速的產(chǎn)品發(fā)布段多,同時首量,技術能力、周邊協(xié)同能力持續(xù)提升进苍。
閱讀《Google軟件測試之道》正是基于此想法加缘,學習并認知測試崗位。但這本書遠遠的超出了我的預期琅捏,它講述了Google的測試定位生百、測試技術、測試思想柄延、測試運營蚀浆、測試組織等等缀程,講述的不僅僅是個崗位,是個測試系統(tǒng)案例市俊。
收獲1:崗位職責
之前杨凑,個人對于崗位的理解停留在招聘啟事中,對應聘人員列出的各項崗位要求摆昧,而最終因為某些莫名其妙的原因被選中撩满,干著和崗位要求不搭嘎的事情。在Google軟件測試之道中绅你,有“軟件開發(fā)工程師SWE”伺帘、“軟件測試開發(fā)工程師SET”、“測試工程師TE”
- SWE負責功能代碼開發(fā)忌锯,但也需要編寫測試代碼伪嫁,包括測試驅動的設計、單元測試偶垮、參與構建各種大小規(guī)模的測試
- SET負責提供測試支持张咳,其重心在可測試性和通用測試基礎框架上,編寫單元測試框架和自動化測試框架似舵,關注質量提升和測試覆蓋率的增加
- TE負責用戶角度的測試脚猾,部分從事模擬用戶的使用場景和自動化腳本或代碼的編寫上,是代表用戶利益的產(chǎn)品專家
這里可以看到的是崗位職責明晰砚哗、角色關系明確龙助,在實際工作中,因為崗位邊界的原因频祝,確實吃過不少苦頭泌参。一人身兼多職、職位變動是常有的事兒常空,梳理清楚每個點是個非常不錯的方法沽一,譬如:
- 責任田主:負責某功能的規(guī)格解答、代碼BUG處理漓糙、代碼質量提升铣缠、新訴求分析
- Story Owner:負責整體需求的分析與設計、分解任務昆禽、跟蹤子任務的達成蝗蛙、負責整體交付
- AR Owner:負責需求的實現(xiàn)設計與代碼開發(fā)
- MDE:跟蹤部門技術動向、參加技術會議醉鳖、提升團隊技術能力捡硅、指導團隊技術活動、幫助團隊成員達成開發(fā)任務
- ...
明確的崗位定義與職責盗棵、多崗位的配合方式壮韭,更有利于崗位的執(zhí)行北发、崗位之間的交流、人崗匹配的技術能力的提升等喷屋。
收獲2:基礎設施
對于公開的模塊琳拨,本人有個原則:要讓他人使用某項技術,那這個技術必須唾手可得屯曹。
UT是個好東西狱庇,部門大力推崇,然而每次到C++ UT的時候恶耽,總會吃一鼻子灰密任。本為質量提升,但由于業(yè)務現(xiàn)有代碼不具備可測試性驳棱,只落得個政治任務批什∨┣《Google軟件測試之道》此書中有很多理念與我之前的思考不謀而合社搅,UT上便有一個點“SWE需要負責測試驅動設計、SET重心在可測試性并編寫單元測試框架”乳规,我認為這是代碼可UT化的精髓形葬,用我的語言來描述,要寫UT暮的,那必須:
- 明確UT的作用與意義笙以,梳理不同場景可UT的代碼設計思路,寫可UT的代碼冻辩,測值得UT的函數(shù)
- 存在項目組猖腕,提供基于產(chǎn)品的UT框架,并指導開發(fā)接入
盲目跟風而不考慮基礎恨闪,不去經(jīng)營基礎設施倘感,無論是對于個人還是對于團隊,都有可能是畫虎類犬的結果咙咽。
收獲3:開發(fā)測試
在我們的組織中老玛,有開發(fā)人員和測試人員之分,組織形態(tài)的劃分使大家很容易誤解钧敞,測試的事情應由測試管蜡豹、開發(fā)的事情應由開發(fā)管,測試就應該點點點溉苛,開發(fā)就應該寫寫寫镜廉,開發(fā)與測試形似交付與簽收的關系。即使在全功能團隊中愚战,開發(fā)與測試也停留在交付與簽收的關系中娇唯。這帶來了兩個方面的問題:
- 團隊角度:開發(fā)與測試間有組織墻威根,從業(yè)務理解、組織利益的角度兩者都存在著隔閡视乐,溝通效率洛搀、產(chǎn)品質量等都不是很好
- 個人角度:開發(fā)不了解測試技術、能力佑淀,代碼處于低質狀態(tài)留美,難以成長;測試不了解編碼伸刃,測試很容易陷入TE的部分角色活動谎砾,效率難以提升。若一個只會寫寫寫捧颅,一個只會點點點景图,哪來的勇氣去追求一份更好的工作
個人理解Google的角度,開發(fā)與測試(SWE碉哑、SET)最大的區(qū)別挚币,通俗來說,開發(fā)關注開發(fā)框架扣典、測試關注測試框架妆毕,代碼設計、編寫等能力無差贮尖;而業(yè)務測試(TE)笛粘,是具備高度業(yè)務能力的產(chǎn)品專家,也需要具有一定的編碼能力湿硝,業(yè)務測試是面向用戶業(yè)務行為的測試薪前,而不是代碼bug或既定基礎能力的測試。
在很多國內(nèi)企業(yè)关斜,沒有這樣的條件示括,但我覺著大家應該達到這樣的程度:
- 開發(fā):在擁有一定編程能力的基礎上,熟知常用的測試框架蚤吹、測試理念例诀、測試技巧,并掌握幾例測試框架裁着,與代碼設計與編寫相互印證繁涂。
- 測試:掌握并熟練使用測試框架、測試理念二驰、測試技巧扔罪,至少掌握一門腳本語言,可編程嵌入已有測試框架桶雀,并開發(fā)有自己的工具庫
預期矿酵,在未來的很多領域唬复,基礎編程將會像打字一樣,成為非軟件崗位的招聘指標全肮,因為獨立定制敞咧、非核心、輕量級工具的開發(fā)與維護可能會給中小型企業(yè)帶來極大的效率提升辜腺。而專業(yè)的程序員依然存在休建,但需要更高的技術水準或特定的技術領域。
收獲4:預防bug而非檢測bug
雖不知道在Google這句話的實施程度有多高评疗,但其理念非常有意義测砂。所以mark下。
收獲5:活力
《Google軟件測試之道》中提到Google人擁有20%的自由時間百匆,可以參與自由項目砌些,去嘗試失敗,而其中有部分項目給公司帶來了巨大的價值加匈。雖然我理解高層的言辭存璃,從其崗位的角度只有50%的可信范圍,而其中只有50%的人去真正實施了矩动,但即使有1/4的員工去試錯有巧,也非常震撼。至少可以看到這個公司的韌性悲没,相比公司間的借鑒和學習方式,這種方式給公司帶來的最契合的成果男图,從而保持公司的活力與領先地位示姿。
此處對于個人的收獲,若職業(yè)中未能提供自由的試錯空間逊笆,那需要攫取自由時間栈戳,去學習與試錯。很多事情看到結果的時候就已經(jīng)晚了难裆。