認(rèn)清它,承認(rèn)它,然后改變它。
1. 前言
在上一篇 傳統(tǒng)軟件行業(yè)中技術(shù)團(tuán)隊(duì)的發(fā)展(現(xiàn)狀篇) 中,我們介紹了傳統(tǒng)軟件行業(yè)公司中技術(shù)團(tuán)隊(duì)的形成淵源,以及特點(diǎn)。
本篇在上一篇的基礎(chǔ)上,嘗試探索傳統(tǒng)軟件行業(yè)公司中,技術(shù)團(tuán)隊(duì)如何破局,遏止住團(tuán)隊(duì)下滑趨勢(shì)。
2. 先說結(jié)論
本篇我們反轉(zhuǎn)敘述順序,先說結(jié)論,再解釋其中的細(xì)節(jié)。
至于原因嘛?主要考慮到現(xiàn)在很少有人會(huì)從頭到尾地將一篇文章看完,但我又特別希望這篇文章的關(guān)鍵信息能夠被潛在受眾看到。
對(duì)于傳統(tǒng)軟件行業(yè)中的技術(shù)團(tuán)隊(duì)發(fā)展,我們需要立足于公司實(shí)際情況,建立完善的快速人才培養(yǎng)體系,以及科學(xué)高效的工作流程,以不斷降低的培訓(xùn)成本和不斷完善的協(xié)作流程,化被動(dòng)為主動(dòng),助推公司的業(yè)務(wù)發(fā)展,實(shí)現(xiàn)技術(shù)與業(yè)務(wù)的相互驅(qū)動(dòng)。
以上,就是我們個(gè)人思考總結(jié)出來的,傳統(tǒng)軟件行業(yè)中技術(shù)團(tuán)隊(duì)實(shí)現(xiàn)良好發(fā)展的一條破局之路。
思路其實(shí)不難,稍微觀察過一段時(shí)間,說出其中的一兩點(diǎn)其實(shí)很簡(jiǎn)單,所以重點(diǎn)還是方法論 —— 如何實(shí)施?
接下來就讓我們逐一解釋,尤其是其中被顯式標(biāo)注的三句話。
3. 完善的快速人才培養(yǎng)體系
“一切問題,最終看來都是人的問題”。在軟件開發(fā)這種人類腦力勞動(dòng)占據(jù)主要比例的人類活動(dòng)中,尤其顯得明顯。
前文已經(jīng)提到的,傳統(tǒng)軟件行業(yè)公司對(duì)于技術(shù)的要求不高,相較于技術(shù)創(chuàng)新對(duì)于業(yè)務(wù)的支撐,如何實(shí)現(xiàn)對(duì)常見問題解決方案的快速?gòu)?fù)用,快速組合來進(jìn)一步解決各類新的業(yè)務(wù)需求問題,才是公司所看重的。
而要實(shí)現(xiàn)技術(shù)解決方案的低成本快速?gòu)?fù)用:
- 首先當(dāng)然是要有這樣的解決方案的歸納,收集和整理的執(zhí)行者;
- 然后就是更重要的,如何讓這些解決方案能夠以不斷降低的成本,更快的速度傳遞給團(tuán)隊(duì)內(nèi)的技術(shù)人員知曉,避免他們的重復(fù)創(chuàng)造。
關(guān)于第一點(diǎn),不是本小節(jié)的重心,這一點(diǎn)是每個(gè)技術(shù)人員的追求,只要引導(dǎo)得當(dāng),很容易找到能夠承擔(dān)這項(xiàng)職責(zé)的技術(shù)人員。(畢竟稍微有點(diǎn)技術(shù)追求的研發(fā)人員都會(huì)有一個(gè)自己的工具集,里面放著過往遇到問題的快速解決方案)
第二點(diǎn)則是本小節(jié)所要討論 —— 通過建立完善的快速人才培養(yǎng)體系,實(shí)現(xiàn)技術(shù)解決方案的低成本復(fù)用。
3.1 初中高級(jí)人才的定義
以上面這一條為中心點(diǎn),我們需要重新明確對(duì)于初中高級(jí)人才的定義。
| 層級(jí) | 主要職責(zé) | 工作內(nèi)容 |
|---|---|---|
| 初級(jí) | 完成單一業(yè)務(wù)功能開發(fā) | 1. 學(xué)習(xí)公司的技術(shù)棧體系,知曉公司針對(duì)不同的業(yè)務(wù)場(chǎng)景下沉淀的各類技術(shù)解決方案。 2. 將理解的業(yè)務(wù)需求,使用前面學(xué)習(xí)的技術(shù)解決方案,以類似搭積木的方式轉(zhuǎn)換為代碼。 |
| 中級(jí) | 項(xiàng)目技術(shù)負(fù)責(zé)人 | 獨(dú)立承擔(dān)一個(gè)產(chǎn)品或項(xiàng)目的技術(shù)負(fù)責(zé)人,帶領(lǐng)初級(jí)研發(fā)人員,與產(chǎn)品/項(xiàng)目經(jīng)理協(xié)作,保質(zhì)保量完成研發(fā)工作。 |
| 高級(jí) | 技術(shù)解決方案收集沉淀和普及,流程完善 | 本文所設(shè)想體系下的關(guān)鍵。他們是經(jīng)過考驗(yàn),有專業(yè)性,主動(dòng)性,行動(dòng)力的一批人。他們的主要工作是對(duì)團(tuán)隊(duì)技術(shù)棧進(jìn)行迭代,實(shí)現(xiàn)開發(fā)效率的穩(wěn)步提升;做好技術(shù)棧的培訓(xùn)方案并實(shí)施;收集各類業(yè)務(wù)場(chǎng)景下的解決方案,沉淀之后并推廣下去;觀察找出現(xiàn)有研發(fā)協(xié)作流程的效率桎梏點(diǎn),提出改進(jìn)方案并落地實(shí)施。 |
3.2 人才定義再細(xì)化
以上三個(gè)級(jí)別又可以細(xì)分為初中高。這樣就可以進(jìn)一步覆蓋實(shí)際環(huán)境。
- 對(duì)于招聘來的人員,因?yàn)槠鋵?duì)于公司技術(shù)棧和現(xiàn)有業(yè)務(wù)場(chǎng)景解決方案不熟悉,所以一律以當(dāng)前級(jí)別的初級(jí)起步;待試用期結(jié)束時(shí)再根據(jù)其對(duì)于公司技術(shù)棧的熟悉程度來確定對(duì)應(yīng)的級(jí)別。
- 進(jìn)一步細(xì)分也可以讓我們更靈活應(yīng)對(duì)熬年限所帶來的評(píng)級(jí)困境——你做再多的項(xiàng)目,如果你無法培養(yǎng)出能夠接替你工作的人,如果你每次都必須通過手把手,口傳心授的方式,以極高的成本才能培養(yǎng)出一個(gè)能夠接替你當(dāng)前職責(zé)的人,那你就永遠(yuǎn)在中級(jí)待著吧。
3.3 中高級(jí)的分水嶺
誠(chéng)如上面已經(jīng)提及的,在傳統(tǒng)軟件公司,中高級(jí)的重要分水嶺,不會(huì)是技術(shù)深度這類的硬實(shí)力,而是能夠?qū)⒆陨淼募夹g(shù)能力以低成本復(fù)制出去的能力。
作為一個(gè)在傳統(tǒng)軟件多年,一直吃技術(shù)這碗飯的職員,多年的觀察下來,讓我一直有一個(gè)疑問:"為什么我們會(huì)有這么多’技術(shù)類問題‘?"
這么多年走過來,雖然筆者限于自身原因,一直在迭代自身的技術(shù)體系,但就實(shí)際工作中使用到的技術(shù),八成卻都是筆者在進(jìn)入這行頭一兩年所知曉的那些內(nèi)容。
這么多年項(xiàng)目下來,絕大部分時(shí)候的技術(shù)問題往往不是因?yàn)樯疃炔粔驅(qū)е聼o法解決造成的業(yè)務(wù)延期;而恰恰是因?yàn)?strong>一線研發(fā)人員的精力被投入到了重復(fù)性的問題解決上 。
這里我們先不談那些流程上的問題導(dǎo)致的重復(fù)工作,我們先單單討論常見問題的解決方案,總是A團(tuán)隊(duì)某個(gè)人率先遇到,可能因?yàn)楫?dāng)事人技術(shù)能力強(qiáng)一些,然后不聲不響地自己解決了,交差了事。過了幾天,團(tuán)隊(duì)里的另外一個(gè)人也遇到了類似的問題,他自己換了種方式又解決了一次,并且因?yàn)槟芰ι系牟罹?,其所消耗的時(shí)長(zhǎng)更多,而且因?yàn)樵緲I(yè)務(wù)壓力就大,加上前面在技術(shù)預(yù)演上消耗了較多時(shí)間,那接下來就別扯什么長(zhǎng)遠(yuǎn)的設(shè)計(jì),代碼可讀性了,趕緊把需求趕完的吧。
之后團(tuán)隊(duì)經(jīng)歷了數(shù)次人員迭代,類似的情況不斷上演,所以對(duì)于一些時(shí)間稍長(zhǎng)的項(xiàng)目,你會(huì)發(fā)現(xiàn)其中簡(jiǎn)直是技術(shù)大雜燴,開源組件集中營(yíng),同一類問題,有多種不同的開源組件被集成進(jìn)來。
同一個(gè)小組團(tuán)隊(duì)尚且會(huì)出現(xiàn)上述問題,當(dāng)范圍擴(kuò)大到整個(gè)部門,以上情況只會(huì)愈演愈烈,超出任何個(gè)人的控制范圍。
能夠意識(shí)到上面這個(gè)問題,并且愿意為之付出行動(dòng)謀求改變,這就是傳統(tǒng)軟件公司中,中級(jí)晉升為高級(jí)的關(guān)鍵所在。
不需要先達(dá)到終點(diǎn),只需要你走在了路上,你就已經(jīng)是事實(shí)上的高級(jí)人才。
3.4 既要TA待遇要求低,又要TA十項(xiàng)全能,想啥呢?
雖然嘴上承認(rèn)“既想馬跑得快,又想馬兒吃得少”不現(xiàn)實(shí),但不少傳統(tǒng)軟件公司的領(lǐng)導(dǎo)層身體倒是誠(chéng)實(shí)得很,恨不得招聘來的每個(gè)人都是十項(xiàng)全能,而給出的待遇卻始終在低位徘徊,美其名曰“物美價(jià)廉”。
哪那么多的物美價(jià)廉,你這企業(yè)是有著美名在外,讓業(yè)內(nèi)新人趨之若鶩嗎? 正是因?yàn)閿?shù)量少,所以才有“漏網(wǎng)之魚”的說法。
人員數(shù)量,人員質(zhì)量,人員成本的不可能三角,這一客觀規(guī)律,不論你口號(hào)喊得多響亮,打進(jìn)去多少雞血,它只會(huì)在那冷冷地看著你,看著你摔倒一次又一次,最終或者知道疼了被迫正視它,或者你帶著不甘走向墓地。
想要破除不斷增長(zhǎng)的人力成本困境,除了完善的人才培養(yǎng)體系外,流程則是最大的依憑。
4. 科學(xué)高效的工作流程
正式開始前,先讓我引用一下我在去年閱讀過的一篇獲益匪淺的極客時(shí)間專欄- 《10x程序員工作法》 里的一段話:
程序員解決的問題,大多不是程序問題。
軟件行業(yè)里有一本名著叫《人月神話》,其中提到兩個(gè)非常重要的概念:本質(zhì)復(fù)雜度(Essential Complexity)和偶然復(fù)雜度(Accident Complexity)。
簡(jiǎn)單來說:
- 本質(zhì)復(fù)雜度就是解決一個(gè)問題時(shí),無論怎么做都必須要做的事,
- 而偶然復(fù)雜度是因?yàn)檫x用的做事方法不當(dāng),而導(dǎo)致要多做的事。
比如你要做一個(gè)網(wǎng)站,網(wǎng)站的內(nèi)容是你無論如何都要寫的,這就是“本質(zhì)復(fù)雜度”。而如果今天你還在用匯編寫一個(gè)網(wǎng)站,效率是不可能高起來的,因?yàn)槟氵x錯(cuò)了工具。這類選錯(cuò)方法或工具而引發(fā)的問題就是“偶然復(fù)雜度”。
再比如類似打包,發(fā)布,配置管理這種事情本來應(yīng)該用自動(dòng)化和不斷優(yōu)化的流程來完成,但現(xiàn)在卻因?yàn)榇罅恳蕾囉谌斯げ僮鱽韴?zhí)行,導(dǎo)致各種"抄近路"橫行,最終造成溝通成本居高不下,大量的精力被浪費(fèi)在無盡的扯皮上,留給真正需要關(guān)心的業(yè)務(wù)實(shí)現(xiàn)上的精力捉襟見肘;那么項(xiàng)目延期,加班等等情況的發(fā)生也就不足為奇了。
上一篇文章中已經(jīng)總結(jié)了,天然形成的工作協(xié)作方式中勢(shì)必存在大量的抄近路人工操作,導(dǎo)致所謂的流程對(duì)人的倚賴非常重,尤其是在部分關(guān)鍵節(jié)點(diǎn)上,甚至可以直接癱瘓整個(gè)流程。
我們需要重構(gòu)當(dāng)下這過分依賴人治的工作流程,改變當(dāng)下人推著流程走的模式,最終實(shí)現(xiàn)流程推著人走的新工作流程。
而且,正如上文已經(jīng)論述的,傳統(tǒng)軟件公司涉及到的大部分技術(shù)問題特點(diǎn)也決定了自身更需要在流程上下功夫,找出突破口。
4.1 流程可以降低對(duì)人的依賴
科學(xué)高效的工作流程,最大的特點(diǎn)就是最大限度地降低對(duì)人的依賴,保住產(chǎn)品的下限。
“人決定產(chǎn)品的上限,而流程決定產(chǎn)品的下限"。過往我們將最終交付物的質(zhì)量基本完全寄托在當(dāng)事人的責(zé)任心和職業(yè)技能成熟度上,這種無奈的根源恰恰是因?yàn)槲覀兊恼麄€(gè)流程都是倚靠人治建立起來的。
科學(xué)高效的工作流程,將過往被關(guān)鍵節(jié)點(diǎn)所掌握的流程信息和操作固化到流程中,將原本飄忽不定的審核標(biāo)準(zhǔn)公開明確,借助機(jī)器鐵面無私的規(guī)范執(zhí)行特點(diǎn),以及一絲不茍,不打折扣的工作態(tài)度,顯著降低流程執(zhí)行過程的溝通交流成本,減少關(guān)鍵節(jié)點(diǎn)數(shù)量,降低對(duì)于流程節(jié)點(diǎn)人員的要求。
4.2 流程可以不斷進(jìn)化
相較于流程而言,人的能力提升之后,一來你要擔(dān)心他是否有二心,二來你這也得打鼓"老虎也有打盹的時(shí)候"??傊耸亲畲蟮淖償?shù)來源。
而對(duì)于流程你完全沒有這些擔(dān)心,忠誠(chéng)不二,一絲不茍地執(zhí)行指令外,我們對(duì)于流程的優(yōu)化會(huì)進(jìn)入 —— 發(fā)現(xiàn)問題,優(yōu)化流程,再發(fā)現(xiàn)新問題,再優(yōu)化流程的正向循環(huán)里面。
最終的效果是流程越來越智能,最終的目標(biāo):“人解決問題,流程負(fù)責(zé)執(zhí)行解決方案”。
4.3 流程可以讓人員精力集中
關(guān)于這一點(diǎn),直接舉個(gè)例子就清楚了。
當(dāng)下的項(xiàng)目團(tuán)隊(duì)里,為什么很多時(shí)候技術(shù)負(fù)責(zé)人忙成狗,卻又不讓新人上手,還不是因?yàn)楫?dāng)下流程里完全沒有度量系統(tǒng),沒有門禁,沒有檢查??蛻艟褪俏覀兊臏y(cè)試人員,測(cè)試周期長(zhǎng),反饋慢,可不得事事都自己上放心嗎? 萬一中間出點(diǎn)啥問題來回溝通更費(fèi)勁。
通過設(shè)置層層檢查關(guān)卡,將問題盡量消除在引入階段,除了大幅降低錯(cuò)誤修復(fù)成本外,也使得中高研發(fā)人員可以放心地將一些低級(jí)任務(wù)交給初級(jí)人員練手,一來可以減輕中高級(jí)人員的壓力,集中精力到更有價(jià)值的事情上,二來也是對(duì)于初級(jí)人員的鍛煉,讓他們快速成長(zhǎng)起來,從而讓團(tuán)隊(duì)進(jìn)行良性發(fā)展迭代之下。
5. 立足于公司實(shí)際情況
這一點(diǎn)可以算是前兩者的基礎(chǔ)了,再精煉一下其實(shí)就是教員的那句"實(shí)事求是"。
那么實(shí)際是什么?
- 人員技術(shù)能力差, 主觀意愿也不高,"just a work" 是常態(tài)。
- 公司業(yè)務(wù)特點(diǎn)決定了,相較于技術(shù)深度,公司更看中技術(shù)的可復(fù)制性,技術(shù)方案的快速性。
所有的一切改變,都必須以上面這些"實(shí)際"作為前提。
面對(duì)現(xiàn)實(shí)是解決問題的開始。
“能力太差”,“責(zé)任心太弱”;寄希望于這種短期內(nèi)不見效的變化來改變自己的境遇,甚至就是以此來解釋這件事情,很多事情都沒做好的原因。
這些理由錯(cuò)了嗎? 沒有。
但是你要的是什么?是解決問題?還是證明問題不是“我”導(dǎo)致的,與我無關(guān)?
6. 最后
本系列文章所描述的問題,屬于一個(gè)非常大的課題,一個(gè)只能無限接近,卻始終無法真正解決的問題,業(yè)界一直在為此努力。
這個(gè)問題的解決方案,是需要個(gè)人和公司共同努力才能實(shí)現(xiàn)的。
在這個(gè)過程中,成為參與者甚至是主導(dǎo)者,讓這個(gè)小世界按照你的意愿去發(fā)生你所希望的改變;還是作為冷眼旁觀的看客,最終只會(huì)是取決于你自己。
合作是共同選擇的結(jié)果,我們一直期望有更多的人走過來。
7. 作者其人
跌跌撞撞直到而立之年,才開悟如何才能追尋到心中的目標(biāo)。
曾經(jīng)也是憤世嫉俗:”我私下研究了這么久的技術(shù),為什么生活得還是這么慘,待遇還是這么差“,"為什么沒有伯樂慧眼識(shí)英才?”。最終被迫認(rèn)清:機(jī)會(huì)很難得,別人沒有義務(wù)和意愿給你。 信任是一件很稀缺的東西。
也不曾有過這樣的熱情:
在阿朱的會(huì)上,我問了他一個(gè)問題:為什么明明知道企業(yè)應(yīng)用軟件行業(yè)的利潤(rùn)率不高,還是會(huì)選擇做這個(gè)行業(yè)?
他說:“的確如此,金山的雷軍也這么說,這個(gè)行業(yè)會(huì)有發(fā)展的瓶頸。但是,他仍然相信,傳統(tǒng)的產(chǎn)業(yè)機(jī)會(huì)巨大,信息技術(shù)的創(chuàng)新只要應(yīng)用進(jìn)去,哪怕只有一點(diǎn)點(diǎn),帶來的改變和機(jī)遇都是巨大的。所以,他愿意做這樣的努力來看到這件事情的發(fā)生”。
我佩服這樣有理想的人。
筆者本人呢,只是一個(gè)報(bào)復(fù)心比較強(qiáng),對(duì)于沉淪時(shí)期的種種遭遇耿耿于懷的俗人。
只是因?yàn)椴桓市倪^于平庸,被迫面對(duì)現(xiàn)實(shí),在一個(gè)不高的起點(diǎn),思考如何切實(shí)有效地解決眼前的困境,以讓自己已經(jīng)足夠糟糕的生活能夠出現(xiàn)轉(zhuǎn)機(jī)。