版本 | 日期 | 備註 | |
---|---|---|---|
1.0 | 2024.3.4 | 文章首發 |
需求分析是工程師的必備技能之一。我們常說一些架構師多少多少牛逼,系統設計的多好多好——而系統設計的底座正是需求分析。基於詳細的需求分析底座加上已知的業界理論上限,才能讓我們更好得去設計好一個系統。本文筆者想基於程式設計以及生活中的例子,聊一聊需求分析。
開胃菜:讓你導100個G的資料到線上,你會怎麼做?
這個可以說是一個比較常見的面試題了。
小白工程師看到這個可能就比較懵了,或者直接帶入自己遇到的場景了。沿著這樣的思路,顯然很難讓面試官滿意。
稍微老道點的工程師可能就會問:
- 大概多久要完成?
- 資料是什麼型別的?
- 可不可以丟資料?可不可以重複?
上面這些問題其實是圍繞著技術的點去詢問的。和真實的業務場景還是有一點的距離,這點距離就是在業務需求到技術實現的分析上。
所以這個時候就要和麵試官做一個探討:具體是什麼樣的場景,導100個G的資料到線上?或者說這100G的資料導到線上的用途是什麼?
舉個例子,商家側有一個報表,裡面有個指標的口徑要變更,歷史資料都要刷。那麼就需要繼續探討:
是DM層資料還是寬表、中間表的資料?離線還是實時?
- DM層的資料是否要考慮以商家為單位or整體的原子性?不然商家看到資料一直在來回橫跳,會引起報障,增加解釋成本
- 中間表則需要考慮變更時對外的可讀性,比如50%的資料是新口徑,50%的資料是老口徑,那麼下游的表這樣去讀資料是否會遇到問題?
- 實時數倉的話,大量資料的刷入要考慮延遲問題;有些資料引擎可能是HTAP,引擎的承受能力需要考慮,資料熱點的問題需要考慮。
上述的探討就會比較貼近實際的情況了。產品給研發提需求,研發根據目前的情況去分析需求,設計方案。當然在面試的時候面試官可能會追問一些細節技術問題——比如資料熱點一般是怎麼去解的?
生活中的例子:千萬別既要又要
在生活中,我們經常會買東西。尤其是一些電子產品,大家都知道越貴越好,很多東西墊起腳來夠一下是夠得到,無非就是錢包出點血。回頭再感慨錢難賺屎難吃。
但我相信大多數人的錢都是一個子兒一個子兒掙來的,因此在這一節我想聊聊如何根據自己的實際需求出發,來避免花額外的錢——也就是如何基於實際需求出發去追求價效比。
例子1:買冰箱
買大家電這種,如果直接去實體店的話,很容易被導購忽悠買一些冤種玩意兒。在網上看銷量吧,在網上合適大眾(無視了地理、居住環境等條件)的未必合適你。
所以我們需要確認自己的需求,比如放置冰箱位置的大小、容量要求、預算、功能性等等。
舉個例子,在杭打工人三口之家,會怎麼選冰箱。從硬性條件來分析需求:
- 對應位置的大小,決定了冰箱的長寬高。
- 容量。一個人一般100L,如果儲存量大的話150。這樣算的話400上下一般夠用。
- 功能性。得防串味吧, 不然夏天吃個臘肉味的西瓜多難受啊,所以至少是雙迴圈系統。
- 不想手動除霜,所以肯定買風冷的。
- 注意噪音問題,買變頻的。
- 能效肯定是要一級的。不然長此以往電費很難頂。
這樣基本就把自己的需求明確了,可以在這個框架下去準確的選擇合適自己的產品。
然後也可以根據以下的價格表,在購物時快速定位到合適自己的那批產品:
- 3000以下:主打經濟。容量一般,一般都是單迴圈系統,能效也有差。
- 3000~6000:常見冰箱價位。容量上去了,雙迴圈必須的,能效一般都是一級的。
- 6000~10000:面向要求較高的群體。零嵌、美觀都開始有了。
- 10000+:面向土豪群體。美觀、設計細節拉滿。
具體細節可以看我在語雀裡寫的採購冰箱筆記。
例子2:買保險
買保險的人一般都是對於風險考慮比較周全的人。打工人最怕就是一場意外,導致家裡積蓄全部花完,還失去工作,分分鐘返貧。
那麼保險應該選什麼種類呢?應該買多少額度呢?
我來舉個例子,還是以杭州打工人三口之家為例,男方是個程式設計師,女方在家帶孩子:
- 根據男方的身體狀態、以及壓力情況,考慮配置重疾險(重疾險的適應範圍真的很小很小,買之前最好了解清楚)。
- 醫療險必配,配置額度一般在50w左右(根據以往的經驗來看,50w花下去人還沒治好,基本也差不多了)。
- 意外險和壽險必配。意外險主要是意外大殘、去世的情況。壽險是防止全殘、身故。額度建議根據債務情況來配置——比如還有房貸200w,那就配200w的額度。避免出事以後,家裡人飯都吃不起還要還貸,太慘了。
因為配置保險往往是為了抵禦風險嘛,所以會根據實際風險情況,來配置合適險種與額度。千萬別想把保險當“理財”來玩,保險公司的那幫人比我們精太多太多。
例子3:洗烘套裝、洗烘一體機
洗烘套裝、洗烘一體機現在非常的流行。一些相關的核心引數我就不貼了,網上有很多,大家可以自尋尋找。
從需求出發,我認為烘乾功能的存在是為了解決三種場景:
- 所在地區、位置晾衣服經常不容易幹:比如溼度高、陽光一般。
- 對於陽臺有空間需求:本身陽臺不大,人又經常喜歡在窗邊。衣服晾滿很煞風景。
- 這人懶的一批。就喜歡甩幹完事,不喜歡晾衣服曬衣服收衣服。
如果的確是為了解決這三種場景,那麼的確可以考慮購買洗烘套裝or洗烘一體機。那麼這兩者如何抉擇呢?從兩者的差異就可以看出來:
- 洗烘一體機在烘乾上會花較長的時間,超過洗烘套裝
- 洗烘一體機內部容易攢毛,洗烘套裝則不會
聽起來洗烘一體機被完爆啊。其實不然,因為洗烘一體機一般價格會遠低於洗烘套裝。所以如果你是偶爾有烘乾需求的,比如:
- 該地區、位置某個時間段晾衣服經常不容易幹
- 週期性犯懶or節日家裡來住很多人
這種場景下是非常合適洗烘一體機。但如果是高頻使用烘乾的場景且有足夠的空間,更適合購入洗烘套裝。
小結
在本文中,筆者舉了幾個例子來說明如何做需求分析。我們可以發現,需求分析的思想可以用在生活各處。
在計算機系統設計中:
- 設計者的需求分析能力直接影響著這個系統的下限。
- 設計者的眼界(瞭解到的業界理論:比如系統設計TradeOff,常見實踐與實現等等)直接影響著這個系統的上限。
同樣,在生活中花錢買東西也是:
- 分析清楚自己的需求可以買到更合適自己的品類。
- 瞭解相關品類的“核心引數”可以避免花冤枉錢。