有不少同學問過我技術能力的問題。比如說工作三年的人,應該有怎樣的技術能力。
圖片來自 pexels
我們公司內部有一個技術等級的標準,但我感覺那種描述太虛。實際面試的過程中,一般面試官也不會詢問那些太虛的東西,反而更看重實際的項目經驗。
所以通過項目經驗來判斷一個人的能力,我覺得是最普遍且客觀的。
程序員的經典段子:“Talk is cheap,Show me the code !”。在實際面試和衡量一個人的技術能力的時候,我覺得就是 :“Talk is cheap,Show me the project!” 。
你知道什麼不重要,重要的是你做過什麼。這裡引申出一個很重要的問題,作為程序員,做什麼事情才能夠給自己帶來真正的,最終的成長,我覺得就是項目。
很多同學都有持續學習的習慣,有時間都會去鑽研新技術,學習新知識,這當然是極好的,但這個不是能力成長的終點。
我覺得能力成長的終點,應該是將所學的東西應用到實際的項目中,形成真正的能力。
就像我們在聽一個人介紹一個大牛的時候,不會說,這個大牛會 xxx 語言,會 xxx 框架,而是會說他做過什麼項目,項目的規模有多大,影響有多大等。
再回過頭來看,同學們提的問題:一個三年工作經驗的人和一個七年工作經驗的人,在能力上有什麼不同?
這裡的不同當然是多方面的,但就技術能力來說,最關鍵的還是項目經驗的不同。
第一個是所參與項目數量的不同。就同一個人而言,工作七年時候的項目經驗肯定是要比工作三年時候多的。
第二個是項目質量的不同。正常來說,對同一個人,工作七年後所做的項目質量應該是要高過三年時候的。
如果工作了七年,但發現所做的項目,以及在項目中所承擔的角色還是跟三年時候一樣,就要十分警惕了。這讓人感覺,你的三年跟七年似乎是沒有區別,沒有成長的。
那如何來看一個人的項目經驗呢,我覺得可以從這幾個維度來看 :
項目的規模
規模可以從兩個方面看:
- 項目參與的人數
- 產品的用戶數
項目參與人數越多,說明項目的複雜度越高,在項目裡遇到的問題也會越多,越難,用於解決這些問題的技術難度也會越大。
比如說,兩人參與的項目,就軟件構建層面來說,怎麼搞問題都不大,大不了兩人打一架,總可以統一到一起。
但如果是五十人參與的項目,難度就大很多了,如果沒有統一的開發規範,不遵循一般的設計模式,設計原則,項目最後就會陷入泥潭。
產品的用戶數是一個很核心的指標,特別是互聯網公司。其實無論是服務端,客戶端,前端,還是算法方向,技術遇到的難題都是跟用戶數量成正比的。
服務端很好理解,千萬用戶的和億級用戶對服務器數量的要求完全不同,服務器數量可能是近十倍的增長,而複雜度的提升比十倍還高。
客戶端,前端,在用戶規模大起來後,會面臨更加複雜多變的環境,比如一些長尾機型的適配,一些難以兼容的瀏覽器等。算法同學要面對的是更大的數據量。
更大的數據量,意味著數據的多樣性會更大,噪音也會更大,這也提升了數據內容理解的難度。
項目中的角色
一個十人項目裡的主負責人和分模塊的負責人,肯定是不一樣的。主負責人需要更高的技術視野,更全面的思考,也需要有更好的協調能力。這個是技術,統籌能力的綜合體現,毫無疑問會更加有含金量。
在實際面試過程中,面試官可能不瞭解你公司,也不瞭解你所在的團隊。你說你是項目負責人,說白了,他也無法證偽,所以這裡更重要的是,要有主負責人的那種技術視野和思考深度。
在實際面試的時候,你說你是負責人之一(實際的負責人可能不止一個),然後你又體現出了相應的技術視野和思考深度,其實也是可以的。
這裡也給了我們一個啟發,無論自己在項目中是什麼角色,對系統的思考都是很重要的。
很多同學說自己天天寫 if else ,做的項目沒有技術含量,但你真的有思考嗎?有花時間去了解過系統的整體設計嗎?不同的模塊之間是怎麼銜接的?整個系統最難的是什麼?
再者,多問一句,你知道系統存在的問題嗎? 你可以把它設計得更好嗎?這些其實是日積月累的,人跟人的區別,也就在於這多一步的思考。
項目的性質
這個需要解釋一下。對於工程系統,可以做這麼一個大概的劃分,業務系統,中間件,基礎組件。
一般情況下,就技術含量來說:基礎組件>中間件>業務系統,就業務能力來說,是反過來的。
在實際面試的過程中,大部分的面試官比較喜歡有技術含量的項目,純業務邏輯的闡述比較難獲得面試官的認可,所以有機會去嘗試一些基礎系統的開發或中間件的開發,這是應該好好把握的。
如果實在沒有機會,也要學會抽象業務系統中的業務邏輯,抽象描述比起直白的業務邏輯陳述,給人的感覺肯定是不同的。
算法的方向,也有區分,主要區分是應用研究和基礎研究。這裡主要是崗位的匹配度。
基礎研究去面應用研究應該要容易些,一般面試官擔心的是,基礎研究的同學有沒有實際的業務經驗。應用研究要面基礎研究,估計就會比較難了。
自己折騰的項目
這個我覺得在面試的過程中,一定是有加分的,先不論項目本身做的怎樣,會主動去折騰項目的人,對技術一定是有激情的。
對於畢業生,在大學的時候會不會自己找項目來做,在技術職業發展上,已經是一個很大的分水嶺了。
對於已經工作的人來說,如果能夠參與一些開源的項目,面試官無疑是會多看一眼的,不過目前國內企業的工作時間太長,我估計大部分人沒有這個時間和精力了。
結語
項目經驗,我覺得是程序員最值錢的東西。除了校招的時候,對項目經驗的要求比較低,其他時候,項目經驗都是決定技術等級,收入的關鍵。
所以我們對項目經驗的積累要非常的重視,除了項目的數量,也要更多的考慮項目的質量。
程序員在自己的職業生涯中,要經常思考自己所做項目的規模和技術的難度,如果發現自己長期處於小規模,低技術難度的項目中,就要想辦法為自己找尋更好的項目了!
閱讀更多 51CTO 的文章