作者:賀科學
技術一号位不是崗位,更多的是技術人員在公司中做事的一種心态,這個系列的文章适合所有想要對日常工作“知其然更知其是以然”的技術人,借助理論工具的指引,結合自己的實踐經曆,悟到自己的收獲,進而加速成長的過程。大道理千千萬萬,有緣者得之真谛踐于其行而非流于其表。
未來一段時間,阿裡巴巴中間件公衆号會持續釋出系列文章,歡迎關注。
往期技術一号位方法論系列文章:
https://developer.aliyun.com/article/783910 「技術人生」專題第1篇:什麼是技術一号位?背景
生活中每時每刻都在發生着各種各樣的事情,有些與己相關,有些看似毫無瓜葛,不論事情大小,總需要分出一部分精力,或多或少,對事情進行處了解決。在處理這些事情的過程中,在和某些人接觸時,總能感覺到他們對事物的認知要更深刻,更全面,聽其言如同醍醐灌頂,觀其行勝讀十年書。這樣的人解決問題往往一針見血,事半功倍;而在和另外一些人溝通時,則可能會感到對方對某個事情的認知其實流于表面,解決問題往往抓不住重點,做的很辛苦卻多是無用功。那麼究竟是什麼造成了兩種人對事物認知的差異?是否有什麼途徑或者方式能夠消除這種差異?
作為技術研發人員,總面臨着各種各樣的需求,總會有前人不斷強調技術的複用,強調代碼的重構,可是往往是倒排的截止日期逼迫研發更快上線臨時需求,造成線上揀不幹淨的滿地雞毛,同時留下一身還不完的技術債務。為什麼面對一定會變的業務需求,研發人員似乎永遠跟不上需求變化的節奏?很多時候大家本能的會怪罪産品經理沒有想清楚,那麼有沒有人思考過,和我們每天配合的産品經理或者營運人員,究竟是什麼東西沒想清楚,進而導緻了我們研發同學自己不斷地返工?他們沒想清楚的事情,我們是不是從來就沒想過?這些事情,我們該不該想,能不能想清楚,有沒有好處?研發人員需要掌握什麼技能來應對永遠都在變化的業務需求?
作為系統架構師,在面對複雜業務系統時,開局往往操作猛如虎,三年規劃五年演進,可是經過若幹年的建設,往往隻是遺留下衆多見招拆招的祖傳代碼,新的需求需要在舊的業務邏輯的縫隙裡面找“解法”,一線開發人員不僅要避開“牽一發動全身”的各種彎彎繞繞,可能連架構本身也已經變得模糊不清了,更不用提架構的演進。這一切都會逐漸失控下去直到某一天達到臨界點再來一次推翻式的重構,讓混亂重新回到原點,開始新一輪的技術債務周期,當然,系統一定是 2.0 或者 3.0了(目前還沒見過 4.0 的系統)。可是當年說好的架構可擴充性呢,說好的抽象程度高呢?架構本身究竟和業務有什麼關系,架構的演進又和業務的發展有什麼關系,如何才能讓架構師打破“架構設計和演進過程被現實反複打臉”的魔咒?
作為研發團隊 leader,帶着自己的人做需求傳遞,一邊忍住親自下場寫代碼的沖動不得不做着項目管理的事情,一邊又可能被下面的人懷疑技術能力;各種倒排的截止日期仿佛一條條排着隊催債的紅線,眼看着這些紅線圈着自己團隊的黑着眼圈的兄弟,在一個又一個的坑裡面像炮灰一樣摸爬滾打,而自己隻能像一個大号的外包資源經理一樣對這種局面在實際行動上束手無策,在思想上除了覺得要不斷加人之外感覺無力回天。如何才能讓團隊成員在做業務的過程中不再是資源一樣被消耗而是像資産一樣自我增值?如何才能利用對業務發展趨勢的預測打破規律提前布局,在戰略上掌握主動性,進而在戰役上既能先于對手做出穩定的産品,又能有足夠的時間打磨産品進而提升使用者的使用體驗?
不同角色的技術人,不論在工作還是在生活中,面臨的這一系列老生常談的問題時,或許都希望能有一抹就靈的萬金油,打一發銀彈出去,就能夠留下廣為業内傳唱的人月神話。可是在現有的生産力條件下,技術人員既沒有萬金油,更不存在銀彈,而且人月神話永遠都是神話。所有的事情,所有的問題,想要被解決,都要回到最初的原點:這件事情的本質是什麼?也就是說,我們日常工作中的事情的起點不是使用什麼工具解決問題,而是先認清這件事情 —— 認清一件事情的本質,是所有後續行動的前提和基礎。做業務需求分析也好,做架構設計畫架構圖也罷,計算機語言和技術棧的選擇以及相關整體解決方案的建構是一方面,而“基于對業務本質的了解進行的業務模組化并結合業務發展持續演進”是極其重要的、卻往往被忽視的另外一個方面。
日常工作中,很多研發人員往往把注意力集中在各種計算機語言及其技術棧上,大家會花時間翻看各種技術書籍,探究各種技術方案背後的原理,然後通過業務實踐提升個人技術能力,所有的促進個人成長的事情幾乎都是圍繞着“技術”兩個字展開,但是,特别是對于常年從事業務研發的同學而言,大家是否意識到,除了“技術”以外,還需要掌握“業務”相關的知識,而其中,探究事物的本質,是最基礎最核心最先需要被掌握的技能,沒有之一。它是戰略層面建構業務大圖的基礎,是排兵布陣發起關鍵戰役的基礎;也是戰術層面分析業務需求的基礎,做架構設計的基礎,做業務領域模組化的基礎。技術一号位需要掌握的所有工具和方法論,所有的起點都是它,所有的理論工具和方法論最終都是它在某個領域内的應用、投射和簡化。
什麼是事物的本質
事物本質的哲學定義
抽象地探讨事物的本質,涉及到了哲學層面,目前本人不具備相關的能力來進行詳細的理論論證,這裡就直接摘抄馬克思主義哲學關于事物本質和現象的對立統一的論述,來看哲學層面的事物的本質是什麼:
- 本質是事物的根本性質,是事物自身組成要素之間相對穩定的内在聯系。—— 《馬克思主義哲學原理》(第五版,陳先達、楊耕著)
- 本質是事物的根本性質,是事物自身組成要素之間相對穩定的内在聯系,是由事物本身所具有的特殊沖突構成的。—— 百度百科
- 唯物辯證法的宇宙觀主張從事物的内部、從一事物對他事物的關系去研究事物的發展,即把事物的發展看做是事物内部的必然的自己的運動,而每一事物的運動都和它的周圍其它事物互相聯系着和互相影響着。事物發展的根本原因,不是在事物的外部而是在事物的内部,在于事物内部的沖突性。任何事物内部都有這種沖突性,是以引起了事物的運動和發展。事物内部的這種沖突性是事物發展的根本原因,事物和事物的互相聯系和互相影響則是事物發展的第二位的原因。—— 《沖突論》毛澤東
- 研究問題,忌帶主觀性、片面性和表面性。所謂主觀性,就是不知道客觀地看問題,也就是不知道用唯物的觀點去看問題。這一點,我在《實踐論》一文中已經說過了。所謂片面性,就是不知道全面地看問題。—— 《沖突論》毛澤東
事物本質與現象的對立統一分析
1、本質和現象是對立統一關系。任何事物都有本質和現象兩個方面。世界上不存在不表現為現象的本質,也沒有離開本質而存在的現象。本質和現象是統一的,但二者又有差别和沖突。本質從整體上規定事物的性質及其基本發展方向,現象從各個不同側面表現本質;本質由事物内部沖突構成,是比較單一、穩定、深刻的東西,靠思維才能把握;現象是豐富、多變、表面的東西,用感官即能感覺。假象從否定方面表現事物的本質,給人一種與事物完全相反的印象,掩蓋着本質。假象的存在明顯表現出本質和現象的沖突。是以不能簡單地把現象與本質等同起來。—— 百度百科
2、事物的本質與現象是對立統一的,這是客觀辯證法,把這種辯證法運用于人的認知過程,就要求人們既不能脫離現象去空談事物的本質,也不能停留在事物的現象上,而要透過現象抓住事物的本質。(本文作者批注:透過現象看本質,這句話誰都懂,但是究竟怎麼才能做到,是本文嘗試給出的。)
為此,要在實踐的基礎上觀察大量的現象,盡可能多地占有感性材料,這是認知透過現象抓住本質的前提條件。(本文作者批注:這就是“沒有調查就沒有發言權”的理論依據。)在觀察社會問題時,一定要學會區分本質與現象,要抓住本質與主流,這是其一。
其二,有了觀察到的大量現象,占有了真實的感性材料,并不等于抓住了事物的本質,要透過現象抓住本質,就必須對大量的現象、真實的感性材料,以及它們之間的關系進行分析和研究,這就需要掌握科學的方法。(本文作者批注:《馬克思主義哲學原理》中并沒有講明需要掌握的科學的方法究竟是什麼,而這一點,恰恰是本文作者結合實際實踐經驗嘗試給出的,同上一個批注。)
其三,事物的現象錯綜複雜,而且事物的本質有一個逐漸暴露,逐漸展開的過程,是以人們對事物本質的認知不是一次完成的,而是一個不斷深化的過程,是一個由片面到全面、由不太深刻到深刻的過程。—— 《馬克思主義哲學原理》(第五版,陳先達、楊耕著)
了解了哲學層面的本質與現象的對立統一關系,有的讀者可能會問,這和業務研發有什麼關系?我這裡隻舉一個看起來非常小但是實際上問題很大的例子:我們所做的新零售業務,整個流程涵蓋了供應商、平台、管道客戶、合作夥伴和消費者這些不同的業務參與方,整個業務可以讓供應商入駐平台,給平台上的管道客戶供貨,進而讓管道客戶自己的使用者能夠以積分或者積分加現金的方式購買商品。
某天産品經理提了一個需求,說要“在供應商控制台中增加一個删除按鈕,删掉供應商不想看到的商品”。看似非常簡單的一個需求,在商品清單裡面增加一個删除按鈕,應該很快就能上線,但是實際上,删除商品這個動作背後真正的業務含義和場景并不是簡單的技術上的把商品資料軟删除,而是“停止供貨”——供應商要删除的商品很大機率已經簽過線上協定,以某個價格供貨給某個管道客戶,這個時候研發人員如果按照需求無腦删除商品資料,就會造成已經在售賣甚至在參加營運活動的商品突然無法購買,造成管道客戶的損失或引發輿情。
是以,研發人員溝通完需求要進行技術方案評審時,被我駁回,要求相關的同學完成業務場景的分析和讨論,補全删除按鈕背後的完整業務流程,将“删除”按鈕的名稱修改為“停止供貨”按鈕,并且針對已經不在任何管道銷售的商品單獨提供篩選項,而不再在供應商商品管理清單裡面預設展示。是以整個需求原本就是一個删除按鈕1天的工作量,實際上分析清楚産品需求背後的業務場景和真正的業務含義以後,就變成了一個涉及到了停止供貨的線上審批流程、供貨協定更新、管道在售商品下架等等一系列關聯的複雜業務需求,技術方案的複雜度和原來相比更複雜,排期更長。
作為業務的技術負責人,如果不能把握業務需求背後的本質,類似這種情況會層出不窮,所有快速上線的臨時方案最後都要随着需求的深入而重新投入人力和精力進行重做,這方面的成本往往會轉嫁在一線研發同學身上。
探究事物本質的方法
抽象的哲學定義并不能給我們提供透過現象看本質的實際操作方法,但是卻指明了事物本質的組成和關鍵點。我們可以基于哲學上的定義和《沖突論》全文以及本文中特别引用内容可知,如果想要分析清楚一個事情的本質,就是要客觀地去分析事物,梳理它内在的主要沖突和次要沖突,同時需要梳理外在的它和它所處環境内其他事物的互相聯系和互相影響。
内在要分析研究目标事物的組成部分和對應的對立統一關系,進而得出對應的主要沖突次要沖突,理清沖突的主要方面和次要方面。需要注意的是,相關的分析是建立在事物的某一次元上,在事物發展的某一階段上的,随着事物的發展,相關的分析可能會出現變化。事物的内在決定了事物的本質。如下圖所示:
外在要分析在一定環境下,研究目标事物和其他事物之間的互相關聯關系和互相影響。事物的外在通過事物的内在關系和影響來影響事物的發展。這一點可以簡單思考一個問題:一把普通的錘子可以打破一面普通的玻璃,根本原因在錘子還是在玻璃?如果覺得根本原因在錘子的讀者,可以繼續思考:一把普通的錘子可以打破鋼化玻璃麼,可以打破防彈玻璃麼,可以打破鋼鐵麼?如下圖所示:

通過以上的示意圖和對應的分析說明,我們可以了解到在分析問題本質的過程中的所有關鍵因素,關于詳細操作步驟和說明指引,在本文第四章節會給出模闆,友善大家在實際工作生活中使用。
分析事物本質對技術一号位的必要性
業務研發,特别是複雜業務系統的研發,實作産品經理提出的業務需求僅僅是其表象,其真正本質内涵,是使用技術手段将解決某一特定問題的邏輯數字化,利用計算機技術對客觀事物做數字化的模組化,以盡可能貼近事物本質的方式進行邏輯和資料的運轉,進而完成現實和虛拟的映射,解決對應的問題。
作為研發團隊的技術負責人,如果對業務的認知的起點是産品經理輸出的産品功能文檔,對業務的了解來源于源源不斷的業務需求,不能認清業務的本質,不能看到未來的一些可能的發展趨勢,那麼這樣的技術負責人其實隻能做到了響應業務的需求,永遠無法真正的在技術架構和解決方案上支撐業務的發展,更遑論使用技術驅動業務發展了。
這也是“技術一号位” 和 “研發團隊 TeamLeader”的最大的差別,前者是業務的共建者,利用技術背景和專業技能輔助業務一号位推進業務的發展,本質上是在扮演決策者的角色,而後者隻是研發資源的協調者和項目進度的把控者,本質上是在扮演執行者的角色。
面對非常複雜的事情的時候,我們需要能夠有合理的理論工具來支撐自己,将複雜的情況主幹脈絡理清楚,然後分析它為什麼現在會是這樣,過去是什麼樣的,在什麼條件下,未來會發展成什麼樣,然後再分析哪些關鍵部分是我們可以通過實際行動影響的,進而通過影響關鍵部分來引導事物未來的發展方向。
以下内容就是面對複雜問題的時候,基本的分析操作流程。
分析事物本質的操作步驟
事物内在分析
1、明确事物讨論的範圍
明确問題讨論的範圍非常重要,同一件事情,在不同的範圍内讨論,得出的結論可能完全相反,原因并不是我們使用的理論工具有問題,而是随着讨論範圍的擴大,讨論的事物本身的組成和外界的互相聯系和互相影響都會變化,是以就會有不同的,甚至是相反的結論出來。是以為了解決某個固定的問題,我們首先要确定的就是這個問題的範圍是什麼,它所處的環境是什麼,讨論的問題的場景是什麼。這些是展開所有的分析的基礎,如果多人讨論的情況下,不把這部分内容對齊,就會非常容易導緻讨論的時候各方論點風馬牛不相及。
2、分析事物内部組成及其存在形式
在明确好事物的範圍以後,我們需要分析清楚這個事情中的各個組成部分,每個組成部分是以什麼樣的形式存在的。
3、分析事物内部各組成成分所扮演的角色及其職責
事物的每個部分,在這個事物中,都扮演了某種角色,這個角色是某個部分的職責和行為的抽象,所有的行為都展現着該部分的核心利益訴求。
4、分析各角色在職責限定下的核心利益訴求
在分析完事務内部各組成的角色以後,接下來就是分析該事物内部組成在對應角色的要求下的核心利益訴求了。需要注意的是,在讨論核心利益訴求的時候,需要結合場景,明确讨論範圍,否則所很多事物最終的核心利益訴求都會被過渡抽象化,但是很多時候一個問題是一個具體的、有範圍的利益訴求展開的。隻泛化地讨論經過抽象後的利益訴求,既不友善分析沖突點,又不能具體的解決實際問題,是以在讨論對立統一的時候,明确核心利益訴求要限定範圍和場景,不能一味隻做抽象,隻去看沖突的普遍性而不看沖突的特殊性。
事物組成 1
- 核心利益訴求
講清楚該事物組成 1 的核心利益訴求是什麼
- 核心利益訴求的由來分析
講清楚該事物 1 的核心利益訴求為什麼是這樣的
事物組成 2
講清楚該事物組成2的核心利益訴求是什麼
講清楚該事物 2 的核心利益訴求為什麼是這樣的
事物與外界互相關聯互相影響的分析
以毛澤東的《沖突論》中的理論為依據,我們要想分析清楚事物的本質,還需要分析清楚它和外界其他事物的關系,是以我們會針對這部分内容作簡要分析。
事物所處的大環境是什麼
從影響事物本身的多個次元去分别梳理,進而能夠建立起來一個多元度的大環境的畫像。
事物所處的大環境内的關鍵事件是什麼
分析每個次元發生的關鍵事件,這些事件可能和事物内部有各種關系。
事物所處的大環境内的關鍵事件對事物内的影響是什麼
分析每個關鍵事件對事物内部的影響是什麼。
事物所處的大環境未來可能有哪些變化
簡單預測大環境中每個關鍵事件未來可能演變的走向,進而分析未來可能對事物本身的影響。
事物内部對立統一分析
明确讨論範圍和場景
再次明确讨論事物内部對立統一的範圍。
基于事物各方核心利益訴求,分析各方之間的對立統一關系
基于之前分析的事物各方的核心利益訴求,進行兩兩分析,分析每2個組成事物時間的對立統一關系,在必要的時候,可以繼續分析三方、四方的對立統一關系。我們需要明确的是,所有的對立統一都是在圍繞着核心利益訴求展開的,核心利益訴求的滿足有低級的方式,也有進階的方式,如果各方的核心利益訴求是通過低級的方式滿足的,那麼說明各方的“統一”處于低水準的狀态;如果各方的核心利益訴求是通過進階的方式滿足的,那麼說明各方的“統一”處于高水準的狀态。
基于分析出來的對立統一關系,确定目前階段主要沖突次要沖突
基于已經分析清楚的對立統一關系,明确目前事物現階段的主要沖突次要沖突。
基于目前階段的主要沖突次要沖突,分析沖突主要方面次要方面
明确主要沖突和次要沖突以後,就要看下,沖突主要方面是什麼,次要方面是什麼,分别給出解決辦法即可。并且确定沖突主要方面以後,就要優先解決沖突主要方面,而不是哪個簡單先解決哪個,或者最起碼要講清楚在主要沖突方面做了哪些事情來緩解,否則就會給人造成一種感覺:解決問題隔靴搔癢,不切中重點。
1、沖突的主要方面的分析和解法
2、沖突的次要方面的分析和解法
事物發展規律的預測和幹預
我們面對非常複雜的事物的時候,為什麼要費很大的力氣去分析它的組成,分析它的主次沖突?就是為了能夠在非常複雜的局面下看清它未來可能的走向,進而提前做好一些準備,甚至主動做一些事情,進而讓事情按照我們的預期來發展。
1、基于目前主次沖突的分析,分析主次沖突的解決辦法
分析解決辦法,确定如何解決主要沖突,次要沖突。在解決主要沖突和次要沖突的時候,要遵守至少一個非常明确的原則:目前事物的主要沖突和次要沖突需要遵循其所在環境的主要沖突和次要沖突的演變規律。
2、預測演化軌迹和事物發展趨勢,尋找可以影響事物發展趨勢的關鍵點,利用規律打破規律
就一般的規律來看,對于任何一個事情而言,如果我們期望統一大于對立,把對立的激烈程度降低,那麼整個事務的對立統一情況應該從低水準狀态向高水準狀态發展,即從可能傷害某一方的核心利益的狀态,逐漸演變為不損害任一方的核心利益訴求,在此基礎上尋找合理的方法和模式,滿足各方核心利益訴求。在整個演進過程中,開始是統一的模式或形式會起到決定性作用,但是随着統一的水準逐漸變高,模式起到的作用釋放殆盡以後,往往就需要從生産力來着手,利用生産力的提升來解決模式無法解決的問題,或者是讓模式更精細化,或者是催生出新的模式基于更高生産力的模式,進而繼續推動統一朝着更高的水準演變。
就我們日常具體的事情來看,主要做到以下幾點進行分析即可:
- 預測事物在主次沖突不被幹預的情況下的發展趨勢,判斷趨勢是否有利于我們的預期的達成。
- 尋找事物的關鍵點,判斷改變關鍵點對事物發展趨勢的影響,進而讓事情向我們期望的方向演變。
分析事物本質的案例分享
以下内容,是本人利用該方式進行複雜業務的分析的案例。
1、在沒有做任何調研,隻依靠 “流量變現” 幾個字,結合自己做的電商業務,進行脫離實際業務的單純的理論分析,這個分析主要的作用就是讓毫無任何業務背景和經驗的我,能夠在理論上看到業務和技術演進的大脈絡,進而為後續的調研、架構設計和最終的系統落地提供整體方向性的支撐。為什麼要這樣做,因為未來很可能接手的業務是毫無經驗的,如何能夠把業務做好,這是基礎之一。
2、在做了大量的調研的基礎上,繼續按照該方式分析流量變現中的某一個業務參與者他的核心利益訴求,并根據核心利益訴求進行關鍵業務名額的拆解,進而在業務開展過程中以此名額及其拆解後的名額指引業務的發展。
案例詳情,請大家在 阿裡巴巴中間件 公衆号背景回複“一号位”,擷取詳細資訊。
掃碼檢視更多中間件技術幹貨和案例: