"以技術安身立命",自從就讀軟件工程以來,就曾是我一直追求的目標,我相信這也是不少軟件人的目標;只是參加業務開發後的種種讓我以爲這個信條在(大部分)業務開發中,都只是一個天真的幻想,打造"技術專家"不只缺少養成的環境,也缺少使用的機會.前端
拿本身來講,我所在的是一個市場上強敵環伺/處於發展初期/直接面向消費者的業務,近一年的開發工做主要能夠概括爲:算法
技術上:數據庫
業務上:編程
整體上:後端
我真實的感覺是做爲底層的開發工程師,業務上並不須要多高的硬實力,基本的計算機課程徹底可以知足開發業務和處理業務異常的須要,也就是熟練地使用公司提供的工具寫出沒有bug的知足產品需求的if-else型代碼.而一些領域性較強的如數據庫原理/操做系統/編譯原理/算法導論等知識上層的業務不關心,更不會去使用.網絡
這引發了一個矛盾,"以技術爲主的核心競爭力"要求在技術上挖一口深井,針對某個細分的技術領域可以從原理/技術/工程一條龍的研究透,造成必定的技術壁壘,而業務RD的平常則停留在工程應用的最頂層,沒有具體的細分領域可言,今天開發JavaWeb,明天開發搜索,後天說不定開發推薦系統了.並且業務RD在天天都被無止境的業務story/機動需求/各類會議填滿的狀況下很難有機會積累更多的有效時間把細分領域吃透,大部分對細分領域的理解停留在如何搭建環境/使用什麼開源庫/開源庫有哪些坑等.架構
所以總的來講,業務RD較難擁有本身的技術深井,這對於一些有着"以技術安身立命"信條的人是難以接受的.框架
解決的辦法其實很簡單也很痛苦,若是你不打算或者不能換崗的話,那就放棄在細分領域深挖技術吧~運維
相較於技術上的硬實力,業務RD提高工程能力和我的軟實力的機會則有不少:好比線上真實場景,多工種配合完成任務等.這也與互聯網公司中業已升級的業務RD脫離或半脫離一線開發工做的現狀相符.編程語言
升級者們再也不須要實際進行業務編碼,轉而從事更高價值的工做:如管理業務RD/討論大需求/設計整體架構/協調資源/規範流程等偏M側的任務.
提升軟實力能夠對標Manager的行爲,能夠因地制宜的作幾件事:
公司中同是計算機專業的一線開發人員,除了業務RD,還有中間件RD(提供技術基礎工程服務如大數據/數據庫/RPC/容器/CI等)和運維同窗.總的來講業務RD須要的知識面最廣,但知識深度最淺;而中間件RD和運維都只侷限於本身的技術領域,相對知識深度更深.
然而不論是哪一種RD,我覺的將來都會面臨的趨勢是:
回憶19-20世紀期間工業從家庭小做坊到工廠到聯合體的歷史,業務RD也會一步一步從一種知識密集型工做走向勞動密集型工做.
雖然story各不相同,但光就技術和流程而言是高度重複的,每一次開發都會重複幾個常見的步驟,好比:
通過一段時間的反覆以後開發時甚至都不須要動腦,相似於大腦能夠自動處理怎麼騎車/怎麼繫鞋帶同樣,"無他,惟手熟爾".
可是必須指出:長期的重複很是可怕,會讓人陷入泥濘的惰性和溫馨區沒法自拔.所以工做三年實際上卻只有一年工做經驗的案例在職場上家常便飯.
爲了不這種狀況,有必要在工做中挖掘能夠提升效率的措施,節約出必要的時間爲在溫馨區外生存作準備.好比在反覆的開發中考慮提升效率,如:
生活不只僅是工做,更不只僅是眼前的這份工做,面朝將來,利用好時間這個最寶貴的資源,努力提高時間的厚度,豐富時間的色彩.
互聯網正在快速發展,站在當前的位置很難看到遠方是什麼樣子,也許咱們只能懷着對將來的恐懼去"擁抱變化",在炮火密佈的戰場上衝鋒當然可怕,但也只有咬牙向前一條路可走.
願與屏幕前的你共勉