如何在技術和業務中保持平衡?
- 2020 年 2 月 21 日
- 筆記
以下文章來源於張鐵蕾 ,作者鐵蕾
如果時間退回到十多年以前,新興互聯網公司的技術人員幾乎都是從「業務開發」開始自己的職業生涯的。然而到了今天,不知道你有沒有發現,業務開發和純技術的開發已經有了明顯的分野。
最開始,互聯網業務的出現,讓人們第一次從用戶需求和用戶體驗的角度來設計產品。正是這種與傳統生意的不同,造就了很多互聯網早期的傳奇故事。而互聯網公司的技術人員,作為這些用戶產品的真正實現者,他們的目標就是用技術來解決產品實現問題。也就是說,程式碼是直接服務於產品需求的(典型的業務開發)。在這個過程中,技術人員逢山開路,遇水架橋,遇到什麼樣的技術問題就解決什麼樣的技術問題。遇到存儲問題,他們就調試和擴容資料庫;遇到系統問題,他們就升級系統軟體,做基本的運維工作;遇到架構問題,他們就設計技術架構,直接支撐業務。總之,對業務邏輯的開發和對技術問題的解決,這兩件事是很難分開的。
正是在這樣的業務驅動的過程中,豐富的公用組件、技術體系或框架被設計出來,並逐漸從業務中抽離。搜索引擎產品,將資訊檢索(Information Retrieval)技術的工程化推向了前所未有的高度;社交網路對於資訊流的需求,催生了基於寫擴散和讀擴散的整套資訊流分發的技術架構(也包括存儲架構);隨著移動互聯網的興起,前後端分離的技術比以往走得更遠,同時也出現了眾多以客戶端邊緣計算為核心的專業編程技術。
在這樣的大背景下,絕大多數能從業務中剝離的技術,都已經形成了開源項目。從MVC基礎編程框架,到各種分散式資料庫技術,到微服務調用和非同步消息隊列,再到大數據處理的整個技術棧,開源世界已經應有盡有,且不止一種選擇。如今,新成立的創業公司,面對新的業務需求,技術人員在技術選型上的空間已經相當豐富,基本可以像搭積木一樣把產品搭建出來。技術人員可以把更多精力放在業務開發上,從而大大提高了產品迭代的效率。但是,隨著業務的做大,技術團隊肯定也會不斷碰到一些「純技術問題」的困擾,需要對某些底層技術架構更專業的人員才能解決。於是,有一定規模的公司,或者基於開源項目進行二次開發,或者自研自己的底層架構,希望在長遠的業務競爭中跑得更持久。
為了下文討論清晰,我們將這些負責開發和維護底層技術架構的技術人員,稱為「專業技術開發」人員;而將主要精力放在業務邏輯開發上的技術人員,稱為「業務開發」人員。
各自的要求
在有些時候,「業務開發」和「專業技術開發」之間的區分並不是那麼明顯,特別是在一些初創的公司內部。這兩類技術人員,他們都需要和業務人員(產品經理、運營人員、市場人員等)打交道。畢竟,所有的技術需求,源頭都是來源於業務層面,兩者只是「度」上的區別。對於一些剛進入職場的技術同學來說,他們甚至很難意識到自己的工作到底屬於哪一類。但是,無論如何,你需要審視一下自己當前的工作,並結合自己的技術特點,看一下到底偏向哪一個方面。這關係到長遠的規劃。
我們先看一下對這兩種開發人員各自的要求是怎樣的。
先說「專業技術開發」,技術上的要求主要在於深度上,要能層層進階,逐步逼近技術的本質。不同的階段就猶如孤獨求敗的三柄長劍。
第一柄劍,乃是利劍,「凌厲剛猛,無堅不摧」。就好比一個初入職場,躊躇滿志的年輕人,渾身充滿鬥志且技術精湛。他面對再複雜的系統,都能像一柄「利劍」一樣,刺開迷霧,抽絲剝繭,深入到背後的原理。僅僅「會用」,遠不是他的目標。
第二柄劍,是重劍,所謂「重劍無鋒,大巧不工」。就好比一個資深的架構師,不僅深諳現有系統和框架的特性,也同樣知曉它們的優點和缺陷,更能夠憑藉一己之力設計出更好的系統。種種繁複的技術細節,都是表象;再龐大的系統,也盡在掌握之中。花哨的技巧,早就不是他追求的目標。
第三柄劍,卻是一柄木劍。到了這個階段,已經達到了「不滯於物,草木竹石均可為劍」的狀態。在他眼裡,眾多不同的上層技術,不同的開發語言,不同的技術棧,在底層都能看到相同的技術本質。本來繁雜的各路技術思想逐步歸一,並對它們之間可能產生的融合與變化瞭然於胸。
再看一下「業務開發」人員。他們的工作不像前一種那麼單純,而是需要面對整個世界的複雜度。對這一類技術人員的要求,除了技術本身之外,還需看重兩點:一個是要有業務Sense;另一個是要對業務數據敏感。
所謂業務Sense,又要從兩方面來看:用戶價值和商業價值。首先,他應該對創造更好的用戶體驗興趣濃厚,他能夠從用戶的視角看待問題,有一定的「共情」能力。他應該對於產品所帶來的用戶價值有自己的判斷,而不僅僅是被動接收產品經理的需求。其次,他應該對商業模式有一定的認識。他知道以LTV(用戶的終身價值)和CAC(用戶獲取成本)為基礎的產品標尺;他能認識到,一個好的產品必須在市場、產品、渠道、模型這四者之間達到契合。
所謂業務數據敏感,首先,他應該很明確地了解到業務的數據目標是什麼,並能夠清醒地意識到這個目標是整個團隊的事情,而不僅僅是產品經理或運營人員的KPI。其次,他應該知道這個業務目標如何拆解到技術層面,能意識到技術事項和數據指標之間的邏輯關係。更進一步,他可能還需要對事物之間真實的因果關係有一定的分析能力,能夠推斷出哪一些產品或技術的改動可能對數據指標產生影響,並能夠對如何通過AB實驗來探索改進產品有系統的思維方法;他對於數據敏感,知道所維護的產品在AARRR整個用戶生命周期(拉新、激活、留存、推薦、變現)上的特點,並能推斷出哪些行為可能會對各個漏斗的轉化率產生影響。
有些讀者會說,這看起來更像是對業務人員的要求,而不是對技術人員的要求。但「業務開發」人員的工作,每天都與業務緊密相關,所以業務人員的思維方式他也需要有所了解。當然,最後還有最重要的一項要求——技術本身。一位「業務開發」人員,他應該知道什麼樣的產品方案適合用怎樣的技術方案來支撐,這是最基本的要求。除此之外,他還應該提前做好技術布局,為業務的未來發展掃清障礙;同時,他能清醒地計算ROI(投入產出比),用較小的技術投入換取最大的業務價值。沒錯,「業務開發」最終就是這樣,領著程式設計師的工資,操著CEO的心。
總之,對比一下「專業技術開發」和「業務開發」:前一種是專才,追求大道至簡;後一種是全才,講究學識淵博,包羅萬象。
各自的困境
社會分工本質上是生產力發展的結果。就像我們在前面分析的一樣,「專業技術開發」和「業務開發」這兩種技術人員,是從互聯網業務的不斷繁榮中逐漸分化出來的。首先,分化意味著專業化;但在某種程度上說,也意味著「無趣」。早期初創企業中那種「光著膀子聽著歌,一邊盯著用戶回饋,一邊直接修改線上產品」的粗放的快樂時刻,現在的技術人員很難體會到了。粗放的做法被專業化的方案所替代,技術的「上古田園時期」已經一去不復返了。
專業化分工對於技術人員的成長所帶來的影響是深遠的。我們就來看一下這兩種技術人員在成長過程中各自可能碰到的困境。對於兩者來說,這些困境有些相同,有些不同。
首先第一點,他們都會遭遇到成長的邊際效用遞減法則。邊際效用遞減法則,本來是一個經濟學概念,通俗地解釋就是,對於同樣的一件事情,開始投入的時候,收益值很高,越到後來,同樣的投入量能換取的收益值就越少。大到國家和企業,小到一個團隊和個人,這個原則都適用。
具體到技術人員的成長上來說,對於「業務開發」,最開始進入一個業務領域的時候,也是成長最快的時候。他通常要在短時間內掌握很多專業的「領域知識」,這個過程就好像一塊干海綿一下子吸滿了水。等到他能夠嫻熟地駕馭這些「領域知識」之後,業務邏輯的開發就變成了枯燥的、重複性的工作。而對於「專業技術開發」來說,這個過程發生在技術深度的拓展上。一個技術精湛的、像一柄「利劍」一樣的技術同學,他能夠在短時間內摸清一個底層架構的百分之八十,這個過程也是他最有收穫的過程。但當他能夠應付大部分技術需求的時候,變化也變得越來越少,他會感覺到翻來覆去還是那麼些東西;而在技術深度上要想再深入一層,也是千難萬難。
第二點是業務價值和技術亮點的衝突。對於「業務開發」來說,技術亮點通常很難提煉。他每天可能會花費90%的時間都在做業務邏輯的開發,但「業務邏輯開發」這件事情本身卻不一定能體現出技術亮點。他需要不斷地去概括、去抽象,去挖掘業務背後更深層的技術問題。而對於「專業技術開發」來說,則經常面臨重複造輪子的風險。由於底層架構的復用性通常都比較強,他需要考慮所造的「輪子」對於業務的獨特價值到底是什麼,到底有沒有必要性,到底是不是技術的自high。
最後,「業務開發」會更多地受到業務興衰的影響。業務經常面臨著試錯風險,業務由盛轉衰,或者自始至終就沒有成功過,不管哪一種情況,最後的結果都是大部分寫過的程式碼被拋到一邊,一切從頭開始。「專業技術開發」當然也會受到影響,但影響程度會小一點。
尋找平衡點
隨著業務的繁榮和技術的發展,整個知識庫變得愈發龐大了,而人的精力有限。既關注技術,又關注業務,經常讓人力不從心。所以需要尋找平衡點。
這個平衡點,對於不同的人不一樣,對於不同的具體職位,也不一樣。
這就好比金庸小說中逍遙派里的人物,蘇星河除了跟無崖子學武功之外,還學琴、學弈、學書法、學繪畫,結果耽誤了武學,最後敗給了丁春秋。而另一個武學人物——黃藥師,就平衡地很好,不但奇門遁甲、琴棋書畫、天文地理都有涉獵,而且武功卓絕,屬於宗師的級別,還能自創出「落英神劍掌」之類的武功來。當然,金庸小說中也有成功的「專才」,比如喬峰,比如郭靖,都堪稱「戰神」級別。
所以說,每個人都有適合自己的策略。有些人喜歡心無旁騖,持續鑽研,始終如一;有些人則比較愛折騰,喜歡經常換個領域,比如專業技術干久了,就換到業務方向嘗試,或者反過來。
不過有一個現實的情況可能需要考慮,對於「專業技術開發」和「業務開發」,社會的職位需求量肯定是後者比前者多得多。這個也很好理解,業務是公司的核心,業務也發展變化更快。所以通常情況下,技術人員比較理想的狀態是「一專多能」。首先能夠精通某一個專業領域的技術(由於精力有限,能夠精通一個專業領域已經非常不錯了),比如搜索技術,比如推薦技術,比如分散式架構,然後還能對業務有所了解,能夠從業務的視角去思考問題。
在「專業技術開發」和「業務開發」兩者之中,不存在哪個更好、哪個更壞的問題;如何把握兩者之間的「度」和平衡點,也沒有一個絕對的答案。但不管是偏向哪一個方向,重要的是搞清自己當前的現狀和未來的定位,以及從「現在」到「未來」的路線是什麼。
平衡點對每個人都不一樣,而且對同一個人的不同時期來說,也是一個動態的平衡。持續關注新的領域,給自己找到下個階段應該了解和深入研究的領域(技術領域或業務領域),才是不斷成長的關鍵。在不斷成長的動態的過程中,你才有機會總結出一套結構化的思維方式,甚至逐漸走出常規,開拓不一樣的人生。
總之,時間有限,不要浪費太多。因為,青春很快就會逝去。
(正文完)