关于技术规划的想法
這是我和總工聊了一個下午之后,我的收獲。但是技術規劃是每個人都有自己的想法,同時和具體的團隊和時機相關,再加上我自己沒有實際參與任何的規劃,我只是執行技術規劃的其中很小的一個點,因此本文的內容一定存在爭議
我不期望說很多關鍵詞,因此這部分很多大佬都有寫過書。本文只聊我所看到的,和我所想到的
本文沒有涉及到具體的團隊和事務,都是使用其他公司和團隊作為例子。如果有小伙伴覺得不該發,我將會刪除本文
長遠的技術規劃
看標題,相信這個沒有小伙伴不認同吧
但是實際上這一點的難度很大,什么是長遠的?其實有一個實際可行的做法,參考大廠
例如我現在碰到了客戶端,我預計我這個產品將會是 ToC 的產品,而假如我這個產品是 PC 端。那么如果我想要做技術規劃,我可以怎么想?難道就是大家說 5G 火,就去投 5G 了?實際上不應該的
第一步就是找到可以參照的大廠
例如找到了 QQ 這個軟件,差不多的都是 PC 端的軟件,那么這個軟件有哪些是可以埋到技術規劃里面的?可以根據自身的團隊,例如此時的軟件團隊還特別小。而軟件的功能也不多,咱來看看 QQ 作為 PC 下一個應該可以說是最強的軟件,將會具備哪些技術是可以放在技術規劃里面的
賬號體系
穩定的通訊
自動更新
當然,還有很多。一個軟件絕不是咱所看到的界面那么簡單的功能,還有很多埋在后面看不到的功能。上面這幾個項,每個做穿了都需要大量的投入
先拿第一個賬號體系來說,在技術上有什么需要考慮的?首先需要有一個后臺,其次這個后臺需要支持各方的接入。但有這一點還不夠,還需要更重要的是任何可以和用戶綁定的,都可以接入到賬號體系里面
因此,如果有賬號需求,可以先接入其他平臺的。然后自己修煉,自主研發。后續賬號體系搭建起來了,就好玩了。例如我可以將等級和賬號綁定,我可以將通訊記錄和賬號綁定。這一個賬號能做的太多了。包括后面大數據的依據現有賬號下的數據作出的大數據相關業務等
在做長遠技術規劃的時候,推薦是先拿當前的大廠的路線加上大廠所碰到的技術,再對照自身,此時可以發現有很多小點,每個點都可以做下去。這就是長遠的技術規劃可以做的方法
而第二步呢?如果按照第一步拆分出來太多的點都可以打,那么如何排下呢?這就需要考慮如何讓技術形成規模
技術需要形成規模
如果我有很多技術,每個技術都是這個點打一些,另一個點打一些。還是用上面 QQ 的軟件作為參考做的技術規劃的例子
我看到了賬號體系很重要,于是我就開始投入開工。但是我完全忽略了業務和團隊以及人員的意向。然后我又覺得穩定的通訊非常重要,盡管現在有很多網絡通訊框架,但是如果有一個非常穩的自主研發的網絡通訊框架,無疑這個點就具有強大的競爭力了
而軟件如果沒有自動更新,那么如果軟件出現問題,如何及時修復。如果沒有自動更新,如何做到跟隨業務變化,給用戶及時更新版本。這也非常重要
于是我就寫了這三個路線:
賬號體系
市面上第三方的接入
各大服務的依賴綁定
多個軟件之間的關聯
用戶行為數據的關聯
大數據的收集
穩定的通訊
大吞吐量
客戶端高性能省資源
服務器端高并發
自動更新
穩定的更新
復雜更新策略,灰發等
減少體積的更新策略,二進制差異更新等
一排下來,實施了一段時間,發現了賬號體系做出來,但是沒看到成效,因為依然只有一個主打的軟件
而 穩定的通訊 需要大量的專業知識,團隊成員撐不足,業務量也達不到能存在高并發的要求。而且當前的實現也不如網上開源的框架
自動更新做了很多,包括復雜更新策略,和減少更新體積等,但是用戶量上不去,看不出意義。而團隊的成員更喜歡做復雜更新策略,于是點爆了這個技能忽視了穩定的更新
以此用來說明一個什么的問題?其實太過分散了,上面三個點其實沒有聯系。而且也沒有關注時機。是否現在技術儲備和人員儲備足夠做穩定的通訊這件事情,是否做這個能對整個業務帶來支撐的發展?這是需要考慮的,當然,只有在過去一段時間才能看清的,我這里不是說做底層的深入的組件是不合適的
另一個是自動更新這個點,具體想要給業務賦能的是什么?是否是降本的減少體積的更新策略。還是滿足產品經理的復雜更新策略
但即使想通了依然幾個點,依然存在一個問題就是太散了。各個規劃的技術無法連起來,無法連起來意味著集團作戰做不到
有集團作戰是什么意思,可以使用騰訊來做例子
騰訊有 QQ 在前面頂著,即使有其他廠商作出比 QQ 好非常多倍的通訊軟件,如 Telegram 等。但是騰訊一點都不慌,因為他是集團作戰,不是單兵。我通訊軟件打不過你,我有游戲,我有好友數據賬號體系。我有全球大量服務器給你提供超快的速度。我有一個企鵝帝國
于是這就能做到碾壓
回到實際的技術的例子,如果決定開始點賬號體系體系了,那么可以想想,什么是可以和賬號體系連起來的?自動更新?還是穩定通訊?其實看起來都不是。反而是支付和廣告等
因為在擁有賬號體系下的時候,很自然就想到了支付,這個和賬號相關的內容。其次就是綁定賬號的廣告。還有就是做內容最喜歡的推薦系統等
如果有了成熟的賬號體系,然后將用戶生產的數據關聯起來,加上其他服務等,那么將會添加用戶的黏性。因此可以作為集團的作戰。賬號這個人人都有,但是我用我自己獨立的。我還擁有很多人沒有的推薦系統,這樣就算打出來了組合了
再回到長遠的計劃的主題。如我是做視頻相關行業的,此時可以對標一下抖音。我開始只是敢想到賬號體系,以及可能點的推薦系統。那么我的想法只能到這里?此時才是不到一年的規劃。我應該想的是更多包括兩三年的規劃才是
此時可以從問題出發,如果我是做視頻行業的,我將會遇到什么問題?是否需要用戶 UGC 讓用戶生產內容,如果需要,那么鑒黃鑒暴是否需要開。我是否會遇到流量費太貴的問題,我是否可以自己組建自己的一套云。如果我自己能組件一套云,那么這一套是否能做成為服務,提供給第三方。我是否會遇到視頻編輯的問題,那是否可以規劃做一個屬于自己的視頻編輯器,那這個視頻編輯器又會遇到哪些問題
大概的思路是這個樣子,需要注意的就是技術的規劃需要讓技術成為規模。這樣才好成為集團作戰,讓整個軟件團隊具有更強的戰斗力。即使一個點打不過,沒關系,這是整個集團的作戰
但這里必須小心一個問題是,無論哪個方向其實都是不確定的,有勇氣是必須的。但是做砸了也是肯定的,因此規劃的技術之間,相同時間的技術最好不要是存在前后關聯的,如要么一起成,要么一起涼涼。如上面的賬號體系加上用戶推薦,如果賬號體系涼涼了,那么用戶推薦是否還玩的下去?如果玩不下去了,那么意味著用戶推薦這個技術點的坑將會是用戶推薦自身加上賬號體系兩個
這里有一個反面的例子,就是微軟的應用商店和 UWP 應用。如果 UWP 應用能成,那么用戶將會因為裝 UWP 而去應用商店,于是帶動了應用商店能成。如果應用商店做得好,用戶喜歡去應用商店下載安裝應用,那么將會帶動開發商發布更多的應用到應用商店,而發布的應用有要求是 UWP 應用。此時兩個技術之間就能相互帶動。但是微軟的小伙伴沒有反過來想。如果一方不能成呢?現在是2020于是可以說2015的時候的決策是不對的,應用商店有一個技術沒有打通就是穩定性。應用商店無法穩定下載應用,因此用戶不樂意從應用商店下載應用,而 UWP 依賴應用商店入口,因此 UWP 缺少流量。而缺少流量會讓開發商不樂意開發 UWP 應用。而 UWP 應用少了自然用戶更少會喜歡去應用商店下載應用
這就涉及到一個問題,技術規劃的技術需要達到的點是哪些?如上面的例子,應用商店的技術規劃里面,其中存在一個核心就是穩定性,穩定性包括了系統環境和網絡下載等技術點。如果咱的團隊沒有微軟那么大,那么是否在遇到這些問題的時候,會選擇自己去研發
回到賬號體系里面,如果我只是簡單的做賬號體系,讓賬號體系具備的功能十分簡單,讓用戶注冊登錄等。那么這個是否有意義?這個和接入第三方對比有什么優勢?其實沒有任何優勢
我聽說一句有道理的話,有時站在巨人的肩膀也是進步
如果所有東西都是第三方的,那么軟件團隊的路在哪?都是在上層的業務,浪花過去之后就在沙灘上做一條魚?反過來,啥都想自己搞,沒資源,做出來比別人差
這是一個神坑的問題,我參與過很多次技術改進的開發工作,其中我弄砸的也有很多。有一些深刻的感覺是自己能努力做的,實際上不如別人家的。但是如果全部用別人家的,又沒有任何競爭力
此時就需要聊到將技術打穿
將技術打穿
在技術規劃里面,我十分認同總工大大和我聊的,技術的長時間投入的點
其實現在開放的技術里面,很難存在能快速進入某個領域同時能作出碾壓其他廠商的功能。除非這個領域是藍海(沒啥競爭力)或者這個領域涼涼了,如做 2G 通訊
回到開始的例子里面,咱說到了如果技術規劃里面寫了一項是 穩定的通訊 這個技術。那么什么是穩定的通訊這個技術?其實要求很簡單,就是我和端和服務器等的通訊是穩定的
如果開始決定了投入這項技術,那么需要有一個決心就是這個技術應該是需要打穿的。無論是決策的大佬還是開發的小伙伴,都應該有一個決心
因為這確實是一個神坑,有很多團隊都有小伙伴在這個領域里面砸了幾年,幾十年都有
因此在發現了某個技術是命脈級的,而且有小伙伴敢投入,那么必須要有一個決心。這個決心可不是說說而已,我都是做一線的開發,我自己的感覺是不是所有的小伙伴都喜歡投入到專注某個事情上。特別是有些技術投入是看不到未來和看不到路的,越走到技術的深海越是這樣。所以開發人員是否匹配很重要,盡可能不要指派
在決定做了就不要放棄,此時更多需要的是管理大佬的支持,例如業務需求的分配的量。如果我在做長期技術的投入,而這邊有不斷的其他業務的需求的打斷,此時的技術進度將會很有趣
反過來說,到什么時候才能放棄或將人抽走。要么是開發人員報告說,覺得可以了,接入業務開跑,開跑,跑了一段時間,穩定了。此時相當于這項技術吃透了。要么是開發人員報告說,做不下去了,當然這需要經過一段的時間,例如一年,做了一年發現這個方向必須換,那么此時才能換
能做到將技術打穿了,才能在某個領域里面做到碾壓
盡管技術需要成規模,但如果這個規模都是平淡的,那么也很難有競爭力。例如其他廠商通過集成第三方的服務,也能做到成規模,那么此時靠什么打?此時就靠一個做穿的技術做尖刀
以做視頻產品的例子,也許大家都在做視頻產品,但是我有一個技術夠強,那就是我是強客戶端,我的穩定性通訊做的特別強,我能讓你在啥網絡環境下都能刷視頻。就靠這個點,就能打出來了
再舉現實的例子,因為我沒有參與技術的規劃,我是執行具體的某項技術規劃的內容。有關注我博客的小伙伴可以看到,博客里面大部分都是打穿一個技術點的成體系的博客,例如高性能的筆跡,這個涉及到了整個 WPF 觸摸和 WPF 的渲染。可以看到我博客里面這兩方面的技術博客都是非常多的。又例如 Roslyn 預編譯,有差不多 50 篇博客。這些點能形成軟件團隊的強戰斗力,但每個點都需要真的打穿,如果只是簡單的投入,那么其實上完全不如接第三方
我師傅和我說一個反例,就是基于統計的翻譯的這個技術,有些公司在這領域砸了幾十年,但是有了人工智能,瞬間顛覆了原有的技術。因此,這方面也需要小心
回顧一下
第一步技術需要有長遠的規劃,做長遠的規劃才知道自己可以選哪些技術點
第二步就是看哪些技術能形成規模,這樣才能做到集團作戰
第三步就是決定投入技術了,是否能識別哪些技術是值得做穿的,是否有決定打穿這個技術
總結
- 上一篇: 使用BeetleX在Linux下部署.N
- 下一篇: 【BCVP】实现基于 Redis 的消息