對工程師來說經常會有明顯的效率差異,有時一天能搞定好幾個模組,順帶加了好幾個新的技能點,而有時一個簡單的功能投入了兩三天還和之前沒什麼區別。雖然任務並不複雜,但忍不住會刷會微博,聊會 QQ,即使硬著頭皮去做,往往效率也不如意,甚至引入一些新的低階 Bug。這個差異與技能水平和工作態度無關,在絕大多數工程師身上都會看到。
效率的影響因素非常多,首先是焦慮。
1.焦慮,執行力崩潰,GTD
當任務單一時大家的效率往往很高,例如『今天下班前只提供一個使用者獲取介面就行,傳入城市編碼,分頁返回使用者』,這個對絕大多數同學沒什麼心理負擔。但現實情景不會這麼簡單,尤其是在創業型公司,每天會有各種任務,可能運營一會會要一份資料,產品一會報一個 Bug,或者老大又提了幾個新的優化點,這些任務單個來看工作量不大,但是持續而無序的任務到達一個工程師身上時,完全可以摧毀他一天的效率和心情。尤其是研發需要注意力集中,頻繁的任務切換會浪費大量的時間和精力。
在 GTD(Get Things Done)中對此有闡述『壓力不是來自於任務本身,而是任務在大腦中的堵塞,帶來的焦慮和心理的牴觸』。當一件任務還沒有完成時,持續到來的新任務會帶來很大的心理壓力,意志不夠強大時,很容易導致執行力崩潰,進入一種任務怎麼做都做不完的絕望狀態。
知道原因了,自然也有解決方案,GTD 提供了一套很可行的執行方案。簡化後如下:
- 把任務放在 『待歸類』『今日待辦』『日程』『等待』幾個盒子中
- 收集:每次收到新任務先做一個判斷,如果這個任務5min 可以搞定的話直接幹掉,否則都放在『待歸類』盒子裡。
- 整理:每天開始的時候從『待歸類』盒子中開始過濾任務,挑出來今天需要做的3件事,放進『今日待辦』。如果今天不需要做再根據有沒有明確的執行時間,放入日程或者等待盒子裡。
- 執行:只盯著『今日待辦』即可,再有新任務執行 收集步驟。
- 回顧:定期整理自己的『日程』『等待』盒子。
完整的流程圖:
這套解決方案能將雜亂地任務明確下來,一定程度上減輕心理壓力。
Tools:符合GTD 的時間管理工具很多,Doit.im 是其中的佼佼者,全平臺覆蓋,強烈推薦。 Omnifocus 則是功能最強大的,支援無限級目錄等功能,不過只支援 Mac/iPhone/iPad,且價格不菲。 也可以使用印象筆記/OneNote來自己規劃管理,這樣相對靈活。
Doit.im:
上面說到的是在任務壓力面前個人可以做什麼,那作為公司/專案經理/產品經理,也需要為避免『執行力崩潰』做一些事情,那就是保持開發的節奏。
2. 節奏,情緒的體力值
第一次聽到『開發的節奏』是在微博的Scrum專案流程培訓上,這個概念解釋了以前大學時我們學生外包團隊遇到的諸多問題。 簡而言已,可以給每個人的情緒量化出一個體力值)。每個開發任務/每個會議/每次報告 都會消耗這個體力值,當體力透支時,後面可能會需要幾天不等的時候來恢復體力(我們說的恢復幹勁也是這個東西),當透支次數過多時,可能會引發更惡劣的情緒問題。
所以一個健康的團隊需要維持開發的節奏,具體操作可以是 每1-2周為一個週期,進行大的專案規劃,研發任務佔用時間最好不高於80%,之後每個人能有休息/自我充電的時間,在下個週期開始時,團隊又能進入滿體力值的狀態。
具體到我現在的團隊,我們以一週為一個單位,每週一產品經理提完本週的需求,我們進行分工消化後,存進需求系統。這周的其他時間內,產品應最大量減少對開發的干擾,下週一的時候對上週的任務進行回顧和總結。 這套方案起到了一定的效果,團隊成員沒有明顯的疲憊感,每週能自由支配一些時間(任務能早早完成的話,自由適配時間更多)。
Tools:團隊的需求管理系統 我們先後試過 Onenote多人協作/ Teambition / Team.oschina /c禪道,但普遍不理想,或者功能太複雜,或者無法同時整合 Bug 系統,目前採用的是開源的 Cynthia,Cyntia也是我們團隊的Bug管理系統。 具體工具的選擇有時間單拉一篇 Blog 來講 #.#
Cynthia:
3. 情緒
影響效率的另一個問題是情緒,情緒問題危害很大,最直接的在於:
- 情緒很容易泛化:單一誘因導致的問題會影響各個方面:工作積極性,工作效率,工作質量等等
- 情緒很容易傳染:小圈子內,情緒很容易傳染(QQ 群功不可沒)
- 情緒不好消除:後面會看到,導致情緒的問題多是之前小問題的日積月累,或者就是現階段不好解決的問題。
情緒的影響因素很多,簡單列舉幾個很常見的:
- 研發節奏過於緊湊:在上一節中提到當開發的情緒體力持續透支時,會有惡劣的情緒問題。 這個在開發團隊中並不少見。當開發節奏太過緊湊,團隊不注意休整時,團隊很容易負面情緒瀰漫,而情緒一旦形成印象,便不會那麼好消散。
- 薪酬倒掛:這個也是大家詬病 HR/Leader的重要原因,當一個團隊薪酬內部增長太乏力時,內部人員會有流出,團隊需要再招聘新人,而市場上平均待遇已經和之前不同,所以新招來的人員待遇往往也會水漲船高。 這個是很致命而且不好消解的。HR 太過節約成本,往往會對團隊有致命的傷害。
- 與 Leader 理念/習慣 不合。
- 工作內容安排不當,太困難或太簡單,或者與職業發展規劃不符。
- 純粹發洩。
- ……
情緒問題暴露後,也不是不能解決,有明確的訴求時直接去解決問題本身。沒有明確訴求的可能是抱怨性格或者與公司方向不合,那也無法強求。
而真正可怕的是團隊 Leader(或者需要對這些問題負責的人) 對團隊本身情緒的不知情。當大傢俬密的 QQ 群/討論組 都沒有你,聚會也沒有參加,不會有什麼真心話交流,只有工作上例行的接觸時,就已經是挺危險的訊號, 成員離職時再去尋找原因已然太晚。
4. 糾結的Leader
Leader 這個詞並不是太貼切,這個職位的職責應該是服務團隊的開發同學,找到並解決大家開發不爽的地方,做好技術和業務的架構,保證整體研發輸出的質量和時間點。
而且 Leader 其實並不容易當. 要獲得工程師的尊重, 需要滿足下面一項或多項
- 技術過硬,能解決團隊遇到的各種技術問題。
- 情商逆天,有能力和意願感知團隊成員的情緒,並能不斷給積極的反饋, 團隊保持很強的凝聚力。
- 資歷深厚,業內有影響力或者披荊斬棘創下了公司的基業,能為團隊爭取到資源。
而在沒有得到工程師的充分尊重前,各種措施的執行都會收到影響,技術決策的討論更得充分尊重大家的意見。
5. 技術驅動
技術驅動業務是產生顛覆式創新的動力之一,工程師更清楚技術的邊界在哪裡,哪些情景已經可以被成熟(或者半成熟,但可駕馭)的技術方案來解決了,這些會把公司與競爭對手拉開一個或者半個技術時代,輸出更酷炫的產品。
這個時代對於工程師來說是最好的時代,Github等開源社群的興起,讓新技術的學習成本變得很低。資料探勘,自然語言分析,圖資料庫,資料視覺化,虛擬化,移動互聯等技術的發展更給業務帶來了無限的可能,而美國市場與中國市場還存在5-10年的時間差,也為我們提供了很多可以參照的模板。
技術驅動有更多實際可以做的事情,放到二手車行業,例如當其他產品靠使用者自己填購車需求時,你實現了通過使用者的行為軌跡挖掘使用者的需求;當其他產品還是幾張圖片來展示車況,你實現了低成本的全景照片,當其他產品還在要經銷商自己維護關係時,你通過圖資料庫計算出了他可能的朋友圈…
那麼問題來了,應該如何推動產生更多的技術推動型的產品呢
- 寬鬆的學習氛圍:技術驅動型一般藉助於相對前衛的技術,大多數同學對這些技術都沒有多少經驗,依賴於持續的學習,而學習就需要有學習的氛圍,尤其是時間的保障。
- 優秀的工程師:技術驅動對工程師的自我實現需求要求的更高,只想完成現有任務不想多事的工程師顯然不合適。
- 技術與業務的結合:最理想的是工程師本身有商業思維,能夠主動將新技術與業務結合起來,尋找最大價值的結合點;其次是工程師定期宣講技術成果,與產品同學共同討論。例如:『我們已經將20萬經銷商資料全部存入圖資料庫,支援寬度遍歷,深度遍歷這些查詢方式,他們的時間複雜度是O(n+e)』 『我們可以對這幾十萬條評論內容進行分析,分辨出褒義還是貶義,還可以匹配上我們資料庫中的品牌車系,準確率能有60%』
技術驅動也有一些硬傷,或者說工程師同學主導專案時都很容易出現的硬傷:優先順序,時間點,任務管理。
優先順序:醉心於技術的同學會被問題本身吸引,例如『MongoDB 還支援資料分片,那我搭個叢集試試』『我試試這裡能不能承載1w qps 的壓力』『雖然我正在看 iBeacon,但是 Ardunio 也好酷哇,我做個Demo先』等等, 在這種吸引下,工程師很難對套頁面,修資料這種任務感興趣,而這些對專案來說優先順序可能會更高。(心理學中也有類似結論,當難度降低到一定程度,動機的強度也會降低。)
時間控制:同時因為要使用的很多是大家沒用過的技術,技術本身可能不成熟,大家經驗也不多,有時候一些坑要好長時間才能埋上,這樣固定的時間點很難保證產出。
任務管理:許多熱衷於解決問題的同學同時也是挖坑小能手,他們能預見一種更優雅的解決方案,但是沒有時間和精力去完成,在這個過程中還挖了更多新的坑,於是這些坑一直沒有時間埋…
也因為以上幾個原因,我們會發現很多醉心於技術的同學在做專案時會出現虎頭蛇尾,總也結束不了的樣子。 這種情況需要技術同學自己注意每月確定團隊的大方向,定期彙報,發週報或者半月報。
如何提高個人與團隊的效率。是會伴隨行業發展長久存在的問題,每個團隊都要去尋找自己的答案,大家一起努力。