隨想
這是最近的一些新的想法,記錄下來。
技術為業務服務
以前一直認為,唯技術論。一直到18年跳槽的時候,某公司CTO跟我聊,他說,不要為了技術為技術, 要為了業務而技術。
首先,我們要定義什麼是技術,這是一個寬泛的概念,用前東家老大的話來說,做技術的人,就像一個手藝人, 手藝就是我們的技術,從淺的層次來說,技術可以是用熟某個工具,框架,但這只是最基本的要求,光有這一點 還不足以叫做技術。我認為的技術,應該是熟知工具及其原理,善用資料結構,對不同的場景能對症下藥。
然後我們就有了接下來的問題,為什麼不要為了技術而技術?對於國內的絕大部分公司來說,其實普遍情況是 先有業務,然後才有技術。增刪改查這樣的技術是為了業務而服務,純粹的技術例如xxx中介軟體系統則是為了 做業務的程式設計師服務。如果沒有業務,技術也就用不上了。
要做管理嗎?
我想這是我以前思維的侷限性,認為就該好好的做技術,單純的做技術。晚些時候我意識到,在國內,單純的 做技術,一直做技術是不切實際的,因為比加班,終究比不過年輕人,而技術的積澱其實並不是隨著時間線性增長 的,而國內大部分公司其實並不需要什麼技術含量的程式設計師。 用大白話來說,絕大部分公司,只要 "it just works" 就夠了。而且他們的量級根本達不到,也不需要優化。資料庫調優?快取?分散式?熔斷?降級? 不需要。而國內真正需要這些的,也就是那些一線網際網路公司。技術專家的崗位少之又少。
那麼是否意味著我們需要轉管理崗位呢?隨著工作經驗的提升,我們的title也會跟著往上走,到了一定的程度,例如 高階,自然就會開始帶人,再往上可能就是專職管理。但是管理有一個非常大的缺點,管理是一個軟技能,難以量化, 而且是公司強相關的,每個公司有每個公司的管理風格。
某個作業系統為何能流行?其中一個重要的原因是,支援各類平臺。如果你的技能依附於某個公司,那麼你就是這個 公司的螺絲釘,一旦公司不行了,可能你就跟著公司一起不行了。
做技術難在哪裡?
做技術的人,要保持隨時可跳槽,這也是為什麼絕大多數人做不好技術,為了保持可跳槽,我們需要不斷的跟上新的
技術。RESTFul時代,你還在URL裡寫/delete
用xml? 雲時代你還在用物理機?
然而有一個矛盾的地方在於,要想跟上技術的變更,就要花時間去學習。單身的時候可能體會不到,非單身之後, 時間會少很多,有了家庭有了小孩以後,會更少。
出路
這是我最近想得比較多的一個點。毫無疑問,以下幾點:
- 純粹做技術是不行的
- 管理這個技能是需要點上的,但是不能只做管理
- 不能拋棄技術做管理,永遠都不要把手藝丟了
- 要隨時可以跳槽
- 學習除了技術以外的東西,例如設計一個產品,學習產品經理
- 嘗試創造睡後收入,看能否擺脫 打工/出來賣(大家都是出來賣的) 的這種收入模型
至於更高深的結論,有了一些初步的想法,但是還沒有付諸行動,暫且不表。
剛畢業的時候,凡事追求純粹,即做A則不做其對立面。現在不這麼認為,凡事無絕對,找到一個trade-off方是上策。