經(jīng)過幾年的工作,也擔任過幾個團隊的的負責人,想總結下技術管理探索的思考。
技術管理的主要工作
0. 取得上級信任
無信任,不成行
看到過很多有想法的管理,最終的成果都不太好。也見過很多管理水平低的技術管理,下面人老有不滿,卻小有成績。究其原因,我覺得就是一點,有能力的人大多容易一意孤行。而沒能力的人,卻更懂得借力。
舉個例子,你認為當前團隊的中心是構建出一套開發(fā)體系,進而后續(xù)開發(fā)工作進展更快。而領導認為當前的開發(fā)重點是趕緊實現(xiàn)某些功能。這個時候就會出現(xiàn)一些分歧,一意孤行的后果就是,而在關鍵時候得不到領導的支持,進而什么事情都沒做好。
所以,我的技術管理很重要的一件工作就是取得上級的信任。在一個組織內(nèi),公司資源一般由上級掌握。在這個時候,做出成果的一個前提條件就是爭取到足夠多的資源。而要爭取資源,首先得取得上級的信任。達成信任可以粗略認為有一下幾個目標:
- 團隊當前首要目標一致
- 對于產(chǎn)品戰(zhàn)略的思路一致
- 對于團隊人員配備的想法一致
- 對于團隊發(fā)展階段的理解一致
- 對于技術棧和工具鏈的重視度一致
總結起來就是,需要讓上級對你管理的團隊能做成事情有信心,與這個整體目標一致的相關事情都是工作的主要內(nèi)容。
那么怎么做到呢,我覺得就是多溝通+做扎實。工作中多溝通,事情做扎實。不知道怎么做就可以采用一個原則:事前做計劃、傳到到意圖、溝通后執(zhí)行、進度多匯報、出事商策略、原則要堅持、事后需總結。
很多年輕的技術人員,第一次做技術管理時都不知道怎么取得領導的信任,往往各行其是。其實,對于上級領導來說,他需要思考的是大的方向,考慮的是全局。他并不關心你的細節(jié)問題,但是對于你們團隊當前的狀態(tài)他需要明確知道。對于出現(xiàn)了情況,他比你還需要知道事情的影響范圍。而他最擔心的也就是你容易各行其是,往往這種情況就會被限制,反倒無法施展手腳。
1. 產(chǎn)品戰(zhàn)略
對于任何一個技術團隊,都需要對產(chǎn)品進行長期規(guī)劃。這里的產(chǎn)品不是狹義的軟件產(chǎn)品的意思,它代表著技術的可持續(xù)性和團隊在某一特定應用領域的積累。就需要技術管理根據(jù)不同團隊情況,通過行為去支撐公司在商業(yè)行為上的收益,用好的規(guī)劃去降低在開發(fā)投入上的成本。
技術管理就需要注意的是不斷的思考和積累技術的可持續(xù)性,在特定應用領域進行積累,讓技術團隊在應對可能面對的軟件類型(如:項目開發(fā)、產(chǎn)品研發(fā)、合作研發(fā)、DevOps開發(fā))有足夠的技術積累,讓團隊擅長某個應用方向(如:電商、ERP、管理系統(tǒng)、云計算等)。這樣,在持續(xù)面對這些方面的問題的時候,我們就會越來越得心應手。
我在兩個團隊中做過這方面的工作。
第一個團隊中,我和老板溝通后認為產(chǎn)品發(fā)展的方向必然是:交互簡單化、功能場景化、數(shù)據(jù)可視化,就像瑞士軍刀一樣多樣功能,每個功能都能應對不同的場景。以產(chǎn)品為核,項目作為主的收益模式。所以這時的技術管理需要的就是怎么樣去調(diào)整團隊工作中心有效減少項目周期(不是通過大量加班哈,這個毫無能力),并且積累產(chǎn)品能力。所以,我從幾個角度去改變現(xiàn)有團隊:
- 在工作中通過職責明確界定人員分工:產(chǎn)品經(jīng)理、研發(fā)人員、項目開發(fā)。由產(chǎn)品經(jīng)理和前端研發(fā)負責交互的簡化設計,技術管理和產(chǎn)品經(jīng)理一起規(guī)劃主要的應用場景并映射其對應的功能,改變思維從應用場景上思考功能。
- 剝離項目需求為產(chǎn)品需求和定制化需求。有產(chǎn)品人員開發(fā)共性功能,項目開發(fā)人員基于產(chǎn)品基礎之上編寫客戶的定制化需求。
- 帶領研發(fā)人員構建一個小但是滿足需求的產(chǎn)品框架,通過行業(yè)業(yè)務理解來設計框架功能,多份需求只干一份事,減少重復開發(fā)工作量
- 組織研發(fā)攻關客戶關注的功能的優(yōu)化,如:提升數(shù)據(jù)可視化的幀率、分辨率,降低程序性能、優(yōu)化穩(wěn)定性,更新新的圖形控件
- 改變瀑布式的開發(fā)模式為敏捷迭代,用于快速響應客戶的意見,提供可用的版本,進而通過反饋快速調(diào)整
- 構建開發(fā)工具集,制定簡化的使用規(guī)范,減少開發(fā)人員的一些流程制度化操作對于狀態(tài)的干擾
- 制定測試的的流程和最簡原則,減少開發(fā)與測試人員扯皮的時間,讓測試回到幫助提升開發(fā)質(zhì)量發(fā)現(xiàn)問題的軌道上
第二個團隊中,我以設計人員的身份入職,負責一個項目,實際干著軟件開發(fā)技術管理的職責。面對CTO的技術管理體系和行政管理體系。兩個頂頭上司不懂技術,所以我和CTO溝通后認為,我們當前的戰(zhàn)略方向是,從無到有構建產(chǎn)品團隊,形成一定的能力,結合硬件打造一個系統(tǒng)級別產(chǎn)品。所以這時的技術管理的工作重點就是,如何在沒有軟件開發(fā)經(jīng)驗的組織中構建起一個團建團隊,并制定規(guī)則,構建技術生態(tài),并開發(fā)完成棘手的項目。所以,我從幾個事情上去入手:
- 進行系統(tǒng)架構設計,明確出軟件未來的工作內(nèi)容
- 分析團隊所需工種,提交招聘名額申請,并自己參與招聘
- 分析項目的需求,剝離共性和定制化需求,對于共性需求進行模塊化設計,定制化需求進行框架上的兼容設計
- 構建開發(fā)環(huán)境,并結合環(huán)境制定開發(fā)流程
- 制定開發(fā)的規(guī)章制度,用以規(guī)范開發(fā)人員行為
- 構建迭代開發(fā)模式,用以在初期階段快速產(chǎn)出功能
- 和客戶溝通開發(fā)節(jié)點(其實就是討價還價),并在有一定小成果后向客戶演示,讓他們對我們這個新團隊放心
通過以上內(nèi)容其實可以看出,我們整個團隊的工作,其實都是圍繞我們的產(chǎn)品戰(zhàn)略來的,服務于當前階段我們要奔向的目標。所以,作為技術管理,產(chǎn)品戰(zhàn)略的工作很重要。
2. 人才管理
做任何事情,人是根本。依靠人才能做好事情。
有很多管理者認為人才管理都是HR的事情,實則是一種誤解。對于任何團隊的管理者,團隊內(nèi)的人才管理永遠都是他的主要工作內(nèi)容。HR是幫助我們進行這項管理的專業(yè)人才,不是招人和開人的白手套。
對于一個團隊來說,人員的活力和氛圍是前進的引擎,發(fā)展空間和人才梯隊是團隊的保鮮劑。所以,依靠人才梯隊找人,根據(jù)團隊氛圍選人,通過老帶新留人,通過規(guī)章制度取信于人,通過發(fā)展空間凝聚人,好聚好散留情于人。應該足夠總結起來了。
3. 提升團隊開發(fā)效率
很多管理者認為團發(fā)進度過慢,進而責怪具體的開發(fā)人員。固然有可能存在有人會懈怠的問題,但在大家都是職場人的環(huán)境中,做出這種事情是不合理的。所以,不管怎么樣,當你意識到出現(xiàn)問題了,其實都是你自己的問題。
我認為團隊的開發(fā)效率緊關聯(lián)著大家的幸福指數(shù),呈正相關。而開發(fā)效率中,個人只占比一半不到。而通過團隊互信、開發(fā)設施的構建、知識的積累、合理的流程、明確的目標等等都會成為另一半提升效率的武器。作為技術管理者,需要處處為團隊的方便做考慮,與人方便,與己方便。這樣效率自然就會提升,不用你強制大家加班。
我認為大部分導致效率底下的原因反而是管理者人為制造的,比如:
- 將整塊時間中插入事件,讓團隊成員碎片化
- 目標在執(zhí)行過程中輕易改變
- 開發(fā)過程中需要使用很多上古系統(tǒng)才能完成一件工作
- 根據(jù)自己喜好將需要頻繁溝通的工種位置分開
- 遇到任務延遲,不解決問題,反而進行諷刺
- 性格反復無常
- 不能以身作則,言行不一
- etc.
其實很多看似只是個人修養(yǎng)的小問題,卻容易因為你是管理者在團隊中放大它的影響,進而影響到團隊的效率。我認為堅持一個事情就可以做到不因為自己的原因降低效率:
君子行事以直,人必信之
上句翻譯過來就是,就事論事,言行一致,就能得到團隊成員的信任。
解決了因為管理者自身帶來的問題,接下來就要考慮的是,如何通過一些基礎的開發(fā)設施來提升效率,我覺得可以做以下嘗試:
- 構建簡便的代碼管理和版本管理,方便合作開發(fā),避免開發(fā)中的大量問題
- 構建BUG管理系統(tǒng),降低測試與開發(fā)的溝通成本,必須輔助適合當前團隊的最簡使用規(guī)范
- 持續(xù)集成系統(tǒng),減少集成,打包等無技術含量的工作時間
- 構建開發(fā)環(huán)境,測試環(huán)境,模擬生產(chǎn)環(huán)境,用于開發(fā)工作的實際驗證
- 開放的WIKI系統(tǒng),用于積累專業(yè)知識,提升技術受,培養(yǎng)貢獻的習慣
- 包管理系統(tǒng),用于一些組件、框架、模塊的版本發(fā)布和開發(fā)集成
- 思考如何豐富面對面溝通模式,增加溝通場所,減少聊天工具的使用
- 思考如何減少工作流中的割裂,盡量少的使用不同工具
4. 保證產(chǎn)品質(zhì)量
作為技術管理者,產(chǎn)品質(zhì)量是我們很應該重視的點,這里的產(chǎn)品與產(chǎn)品戰(zhàn)略的產(chǎn)品含義相同,并不是指的狹義的軟件產(chǎn)品。其實,有時候一個好的技術團隊也是一件產(chǎn)品,需要長時間耐心的打磨。
那么產(chǎn)品質(zhì)量中我認為有幾點是作為技術管理必須要保證的:
- 代碼質(zhì)量(簡潔性、魯棒性、耦合性、可讀性、一致性)
- 架構的工程質(zhì)量(架構落地是否符合預期)
- 功能實現(xiàn)的過程節(jié)點質(zhì)量(把控過程中關鍵節(jié)點的質(zhì)量自然產(chǎn)出質(zhì)量就高)
- 項目計劃的質(zhì)量(合理的周期劃分、技術實現(xiàn)的時間、存在風險和難點的技術)
- 開發(fā)自測和測試驗證的質(zhì)量(回歸測試、性能測試、穩(wěn)定性測試、功能性測試)
- 產(chǎn)品打包發(fā)布質(zhì)量(安裝包測試、完善的版本管理、配套文檔測試、開發(fā)過程文檔歸檔)
- 售后客戶服務質(zhì)量(如何便捷獲取客戶的問題反饋、解決問題的計劃反饋)
能保證以上幾點,基本上就覆蓋了技術團隊整個開發(fā)周期中的各點質(zhì)量,更優(yōu)秀的人就是在這些的基礎之上進行細化、提煉得到一套符合自己團隊的最簡實踐原則。我覺得可以通過以下方式來做到這些點的保證:
- 選擇合適節(jié)點組織代碼評審(一定注意別弄成批斗大會,追究責任)
- 與架構師定期一起評估架構工程質(zhì)量,將改進工作放入后續(xù)工作計劃中
- 細化開發(fā)流程,必要的環(huán)節(jié)需要輸出簡單文檔(保證一致性),在功能完成后需要自測并輸出報告、迭代完成進行內(nèi)部演示(很容易發(fā)現(xiàn)問題)
- 每次計劃開始前,需要經(jīng)過關鍵角色的整體評估,它的合理性和風險應該是評估的主要內(nèi)容
- 注重如何減少開發(fā)與測試人員在測試中的無意義工作,如何增加他們的溝通效率是保證質(zhì)量的標準,且需要保證他們的理解一致性,需要在功能開發(fā)前管理好他們的預期。
- 制定產(chǎn)品發(fā)布流程規(guī)范,有專職人員負責執(zhí)行和檢查,需要反復強調(diào)其遵守規(guī)范的重要性
- 向客戶提供多種便捷售后反饋渠道,并制定售后處理流程,開發(fā)流程保留導入售后需求的入口
5. 制定規(guī)則&監(jiān)督執(zhí)行
任何人都有憑個人想法做出決斷的情況,而按照規(guī)則執(zhí)行能夠避免大部分問題。
在開發(fā)團隊中,存在一個很重要的點:保證一致性。保證不同成員的理解一致性,目標一致性,期望一致性是很重要的點。
在與時俱進的現(xiàn)代思潮下,管理思維必須與時俱進,適應當下的新生代人群的主流三觀。所以,自覺高人一等,管理就是管制人的落后想法一定要摒棄。建議將技術管理理解為團隊領頭人,你需要把握方向幫助團隊向前向前。作為人的角度大家是平等的,只是擁有不同的分工而已,這樣才能避免官僚主義的滋生。
那么排除人治的情況下以什么為準呢?——規(guī)則。
在制定規(guī)則前就需要明確的一點是,規(guī)則天然的非人性,存在明顯的缺點,就是不近人情。所以作為技術管理,制定規(guī)則是用來解決大部分一致性問題,保證大家遵循同一標準,不會出現(xiàn)不公正的情況。另外一部分人情,就需要通過人為協(xié)調(diào)來實現(xiàn),兼顧團隊目標和個人價值。這也就是很多公司價值觀中,以人為本的體現(xiàn)之處。
可以見的,規(guī)則在這其中扮演者重要的角色,那么制定出覆蓋常見問題和關鍵問題的規(guī)則就顯得很重要。我認為,需要制定規(guī)則的方面有以下幾點:
- 設計規(guī)范(代碼設計、UI設計、文檔設計)
- 項目流程規(guī)范(需求導入、需求變更、迭代模式、協(xié)作方式等)
- 編碼規(guī)范
- 版本管理規(guī)范
- 測試基本原則
- 開發(fā)工具最簡使用規(guī)范
- 產(chǎn)品發(fā)布規(guī)范
- 團隊資源管理規(guī)范
- 會議制度
- 考核制度(非硬性考核比扣績效工資更有效,采取不同維度投票制決定考核結果,考核結果不合格但下次合格補發(fā)績效)
在逐步制定出各項適合當下情況的規(guī)則后,監(jiān)督執(zhí)行就是一項重要的規(guī)則。說是監(jiān)督執(zhí)行,我認為最重要的就是以身作則,從技術管理者本身做起,在實際日常工作中以現(xiàn)有規(guī)則作為統(tǒng)一的評判標準,自然大家就會效仿。
技術管理的核心原則
0. 明確目標
團隊開發(fā)周期大量延長,成員效率低下。大部分情況都還沒優(yōu)化管理,增加配套設施等操作的時候?;径际且驗槟繕瞬幻鞔_,或者目標不一致。導致這種情況的原因有幾種,需要結合當前的情況進行分析:
- 負責人自己都不知道具體要做什么效果
- 負責人搞不清楚當前階段事情的優(yōu)先級
- 事前沒有反復向成員傳達目標
- 每天沒有回顧和檢驗成員的工作是否偏離目標
- 缺少對成果的檢驗機制
一般來說,按照PDCA來執(zhí)行就能行,但是要解決問題還看技術管理者在過程中所做的工作。
1. 通暢信息&保證溝通
團隊存在不同的角色分工,每個分工又有不止一個人,所以在組內(nèi)與組與組見的溝通交流就顯得極為重要。畢竟,千人千面,每個人都有自己的想法。特別是,你的團隊成員都普遍優(yōu)秀的情況下,管理優(yōu)秀的人更加需要保證溝通,不然他們各行其是帶來的后果可能會更加嚴重。
首先,需要注意的幾個溝通陷阱:
- 使用聊天工具,聊天工具即時性強,但是溯源能力差,且沒有確定感,確定一致的東西容易隨著時間改變
- 產(chǎn)生約定后不發(fā)送郵件存檔公示,久而久之出現(xiàn)矛盾契約精神就會蕩然無存,習慣性甩鍋
- 不愿意面對面溝通,會增加團隊成員間的隔閡,也會導致傾向于不溝通
- 溝通過于正式化,容易演化成責任、職權邊界的劃分討論,無益于工作
- 溝通只通過嘴巴,沒有紙面、文檔、白板等的書面化、形象化、圖形化表達,效率低下,限制大家想象力
- 私下做決定結果不透明,滋生辦公室政治
作為技術管理者要讓溝通變得更加的通暢可以通過一些辦法來實現(xiàn):
- 限制聊天工具的使用內(nèi)容,原則上不允許討論重要事情
- 厘清不同場景下的溝通情形,思考能夠通過具體開發(fā)設施解決
- 在辦公室中設置溝通場所(小塊空地、公共桌子、小會議室、陽臺茶幾等)
- 在辦公室中設置公共白板
- 在辦公室中添置公共投屏
- 構建公共共享文件、文檔協(xié)作、WIKI等文檔共享工具
- 在辦公室中部署公共打印機
- 讓你的辦公場所不明顯區(qū)別于團隊成員,使它便于隨時接待溝通并做好隨時工作中斷的準備
- 重要決定需要透明過程,并公示結果
2. 承擔決策責任
團隊成員出現(xiàn)問題,都是管理者的問題。你有這個責任去糾正問題,而不是馬上追究責任。
作為技術管理者,必須要面對的一點就是當無人能夠做出決策時,你就是那個要做出決策的人。當出現(xiàn)問題需要承擔責任并解決問題時,你就是那個承擔責任和解決問題的人。
有很多人會納悶,有的時候又不是我的工作、責任和我的問題,為什么要我來做出決策和承擔責任。其實這里涉及一個能力層級和壓力模型的問題,技術管理者的能力層級高于團隊成員,必然需要承擔更大的壓力。如果當團隊成員無法做到某些事情時,就需要從下至上冒泡傳導到合適的人的那里。而出現(xiàn)責任需要承擔時,一般是從上向下傳導,壓力會越傳導越大,但是具體到某個人身上時他并不能夠承擔起這個責任。所以,作為技術管理者,必然需要以代表整個團隊的身份承擔起這個責任。然后以團隊的角度,來解決掉問題,讓團隊能夠繼續(xù)正常運轉(zhuǎn),而不至于大家各自擔驚受怕。
3. 服務成就他人
技術管理者其實就是個服務員,團隊重要的工作都是由具體的分工來完成,而讓整個團隊良好運轉(zhuǎn)的工作由你來完成。所以,要加快運轉(zhuǎn)效率,成就每個成員,讓他們成長為能力更強效率更高的人之后,團隊的運轉(zhuǎn)自然高了起來。技術管理的最高境界,就是在成員個人成就和團隊成就間求同存異,實現(xiàn)雙贏。
4. 做好團隊成員工作
技術管理實際上還是進行著人的管理,所以人的特性就需要考慮進來。人不像機器,是有著情緒,狀態(tài)有著起伏,心態(tài)也會收到外界的影響。所以,團隊過程中會存在激動時刻、乏味時刻、厭惡時刻、難過時刻等等。那么在每個成員遇到難事,遇到狀態(tài)低迷的時候,如何去幫助他們渡過,如何鼓勵他們是每個技術管理者需要思考的??梢酝ㄟ^一些方式來幫助團隊成員:
- 鼓勵同事間互相談心幫助
- 和具體的同事單獨朋友間談一談
- 建議同事心情不好時可以出去走走
- 聽取工作中的意見并做出改進
- 狀態(tài)不好時組織一些游玩、散心、發(fā)泄活動
- 組織辦公室小活動(觀影、評比、演講、吃東西、八卦會等)活動活躍氣氛
5. 明確評價體系
在現(xiàn)代社會下,作為職場人,自我實現(xiàn)的渠道單一。很多人還是需要通過工作成就來證明自己的,所以,明確的評價體系對于團隊的成長和公正客觀的評價很重要。這方面網(wǎng)絡上很多資源可以參考。
6. 處理好上下級矛盾
作為技術管理需要執(zhí)行上級的戰(zhàn)略要求,還需要平衡下級的工作體驗。這兩方面都是決定事情可不可為的重要部分,建議對上管理預期,對下明確目標標注核心內(nèi)容。在其中平衡好不同的立場雙方,需要在具體的工作中保持敏銳的洞察力和執(zhí)行力,結合具體的情況做出決定。
7. 不加班的態(tài)度
不加班不是說真的不加班,而是一種愿景一種態(tài)度。實現(xiàn)不加班,是為了實現(xiàn)團隊成員的福祉,平衡個人價值于團隊價值。要注意的地方就是,加班其實是對精力的一種低效運用。如果過于透支每個人的精力后,長此以往后的每天團隊都會被弱執(zhí)行力所籠罩。只在需要時加班,合理拒絕過量的工作,產(chǎn)出優(yōu)質(zhì)產(chǎn)品是優(yōu)秀技術管理者的檢驗標準。
8. 好的成果是結果,不是目的
扎實做好生產(chǎn)的過程,好的成果自然會產(chǎn)生。面朝著好的結果走過去,肯定會走入看似捷徑的羊腸小道。