平時的工作如何體現一個人的技術深度?
- 2022 年 3 月 8 日
- 筆記
今天在公司內網看到一個討論帖,原文如下:
平時的工作如何體現一個人的技術深度?
平時工作中很多時候需求細而碎的,如何在工作中積累技術深度?又如何體現一個人的技術深度?
思考:做需求與做需求的差異
再回答問題之前,我想先拋開「技術深度」這次詞,講講做需求這件事,說說我對做需求的理解。每一個程序員都是從剛畢業做需求開始,為什麼有的人逐漸成為大牛,主導大型技術項目或走向團隊管理崗位,而有的人一直還在做需求。我覺得這裏面的差異在於,每一個對做需求這件事的理解有所不同。
這裏面的差異在於,你是抱着一種什麼樣的心態去完成這個需求,是把這個需求做到極致,還是只是當做任務完成這個需求,達到產品想要的功能就行。這兩個表面上看似差不多其實相差極大,差異在於,你有沒有站在更高的角度,希望這件事做到完美。從需求角度有沒有思考產品設計當中的缺陷,能不能反向為產品設計提供建議,從技術角度能不能做到高質量高兼容性無bug,以及下次再有類似的需求能不能快速高效率的迭代。
用一句話來描述就是,能不能跳出自己是一個程序員是一個被動執行人的角色,而是將自己當做產品當做技術負責人的心態去做這件事。
業務需求該怎麼做
知易行難,如果一開始做不到,那就先着眼小事,關注細節,從需求開始的需求評審,編寫技術方案文檔,設計文檔,到開發的代碼注釋,結構設計,保證高質量,完善無漏洞的代碼邏輯,再到異常埋點,指標監控,線上可用性運維等等,認真對待一個需求的每一個環節。
當你自認為已經做好整個流程的每一件小事之後,接下來可以 通過深入細節,思考整個流程是否存在問題。做需求過程中溝通協作的有沒有問題,流程規範的有沒有問題,機制環節哪方面問題,代碼公共基礎能力的是否有缺失,開發過程中你所遇到的問題是不是一個通用問題,能不能抽象出一個公共庫解決大家的問題,能不能制定一個SOP的解決方案流程,亦或是提煉出一個最佳實踐在組內外分享經驗。
通過這些一件件小事來鍛煉自己解決問題的能力,以及更深層級的發現問題的能力。再通過不斷的發現問題,思考問題出現的原因,拿出解決方案,最終落地解決了自己或組內或協作方的問題,鍛煉自己的綜合能力逐步慢慢成長。
再說「技術深度」
說了這麼多,你可能會說,這跟我問的技術深度有什麼關係?我想說:拋開業務需求談技術深度都是耍流氓。
舉一個例子,數據可視化方面3D three.js,視頻直播方面的編解碼壓縮,客戶端安全方面的攻防滲透,每一個都是有技術深度的事情,但問題是即使你掌握了這些領域擁有了非常高的技術深度之後呢,不能應用於業務需求,不能解決產品急迫要解決的問題,不能完成你老闆的OKR,達成部門的戰略目標,還是英雄無用武之地(當然你也可以選擇一個可以用得上的團隊,那是就是另外一回事了)。
由於這些單點的有技術深度的事情,不能為你帶來直觀和顯而易見的「回報」(也就是顏如玉 黃金屋與金榜題名),也就間接的打擊了積極性(當然自己對某門技術感興趣而鑽研的不再本次討論之列)。所以提升自己的技術深度,最好的方式還是在公司業務中,發現有深度的事,然後去在攻克這個問題的過程中,提升了自己的技術深度,即跟隨公司業務的發展的同時自身也獲得了成長,你用技術能力為公司解決了業務發展過程中的問題,自然也就從公司獲得了該有的回報。這是一個ROI投入產出比最高的獲得技術深度的方式。
獲取做有深度事情的授權
當想明白獲取技術深度的路徑之後,接下來要解決的就是,如何讓領導給你安排有技術深度的事情?
業務發展中有很多有技術深度有技術難度的事情,為什麼領導要安排你來做這件事呢?你憑什麼讓領導覺得你「有能力」也「有意願」來完成這件事?能力與意願是作為領導在分配工作當中的最重要的兩個決策項(有機會的話我會再寫一篇,從管理視角是如何做分工的)。既然你能提問如何積累技術深度,我相信你一定是有強烈意願的,那麼剩下的就是如何讓領導認為你有完成這個有技術深度的事情的能力?關於這個問題,可以參考我之前寫的一篇回答:如何管理leader對你的能力預期? 最簡單來講就是我在前面講的,你能不能在開發需求中做到深度思考,追求極致,精益求精,有責任心,有主人翁意識與主R意識,在每件小事中能做到「自閉環」,之後才會逐步讓你承擔更大範圍更高挑戰更大深度的事情,形成正向循環。
這也是我前面為什麼要先重點強調做好每一件小事的重要性。
技術深度不是唯一標準
作為一個程序員,在職業生涯的初期,確實是以技術深度也就是技術能力作為最大的衡量標準。但隨着職業生涯的發展,職級從L5到L8,站在從公司角度,對一個人的需求,也會從能完成一個業務需求,變成能帶領一幫人完成一個更大的維度的需求,能不能為組織解決問題,為事業部達成戰略目標,對人的要求的重心也會慢慢發生變化,這種變化可以參考公司的職級能力模型體系的雷達圖。
所以一味的追求積累技術深度就跑偏了,但不是說技術深度不重要,技術能力是作為程序員的安身立命之本,但是在積累技術深度的同時,也需要學習鍛煉技術深度以外的能力。具體到底是什麼其他能力,這就夠再展開好幾篇文章的篇幅了,今天在這就不細說了,有機會可以談談我對這方面的理解。
最後
故不積跬步無以至千里,不積小流無以成江海。先從做好每一件小事開始,把每個業務需求做到120分,深度思考,發現問題,解決問題,逐步建立起靠譜有責任心技術牛的人設,逐步負責有技術難度的事情,跟隨公司業務發展積累自己的業務領域經驗與技術深度,從而獲得雙贏的回報。
這是我對如何積累技術深度這件事的理解,或許會有一些片面和偏激,畢竟不是誰都有一個能知人善任的好領導,不是誰都能遇到一個快速發展的業務,不是誰都能遇到有技術難度與技術挑戰的場景,無論我怎麼說,都會有倖存者偏差的存在。
努力與機遇並存,機遇可遇不可求,所以我們能做的事,就是學會正確做事的思路和方法,並為之堅持不懈的踐行它。知易行難,學會方法容易,堅持踐行難於上青天。自己該做的都做好了,機遇來了就可以抓住,即使抓不住,你也有了「選擇的能力」,有了選擇更好機遇更好公司的能力。
以上均為個人主觀且片面的看法,歡迎批評討論~~。