09.16 工作3年和工作7年的程序員到底差在哪裡?

有不少同學問過我技術能力的問題。比如說工作三年的人,應該有怎樣的技術能力。


工作3年和工作7年的程序員到底差在哪裡?


圖片來自 pexels

我們公司內部有一個技術等級的標準,但我感覺那種描述太虛。實際面試的過程中,一般面試官也不會詢問那些太虛的東西,反而更看重實際的項目經驗。

所以通過項目經驗來判斷一個人的能力,我覺得是最普遍且客觀的。


工作3年和工作7年的程序員到底差在哪裡?


程序員的經典段子:“Talk is cheap,Show me the code !”。在實際面試和衡量一個人的技術能力的時候,我覺得就是 :“Talk is cheap,Show me the project!” 。

你知道什麼不重要,重要的是你做過什麼。這裡引申出一個很重要的問題,作為程序員,做什麼事情才能夠給自己帶來真正的,最終的成長,我覺得就是項目。

很多同學都有持續學習的習慣,有時間都會去鑽研新技術,學習新知識,這當然是極好的,但這個不是能力成長的終點。

我覺得能力成長的終點,應該是將所學的東西應用到實際的項目中,形成真正的能力。

就像我們在聽一個人介紹一個大牛的時候,不會說,這個大牛會 xxx 語言,會 xxx 框架,而是會說他做過什麼項目,項目的規模有多大,影響有多大等。

再回過頭來看,同學們提的問題:一個三年工作經驗的人和一個七年工作經驗的人,在能力上有什麼不同?

這裡的不同當然是多方面的,但就技術能力來說,最關鍵的還是項目經驗的不同。

第一個是所參與項目數量的不同。就同一個人而言,工作七年時候的項目經驗肯定是要比工作三年時候多的。

第二個是項目質量的不同。正常來說,對同一個人,工作七年後所做的項目質量應該是要高過三年時候的。

如果工作了七年,但發現所做的項目,以及在項目中所承擔的角色還是跟三年時候一樣,就要十分警惕了。這讓人感覺,你的三年跟七年似乎是沒有區別,沒有成長的。

那如何來看一個人的項目經驗呢,我覺得可以從這幾個維度來看 :

項目的規模

規模可以從兩個方面看:

  • 項目參與的人數
  • 產品的用戶數

項目參與人數越多,說明項目的複雜度越高,在項目裡遇到的問題也會越多,越難,用於解決這些問題的技術難度也會越大。

比如說,兩人參與的項目,就軟件構建層面來說,怎麼搞問題都不大,大不了兩人打一架,總可以統一到一起。

但如果是五十人參與的項目,難度就大很多了,如果沒有統一的開發規範,不遵循一般的設計模式,設計原則,項目最後就會陷入泥潭。

產品的用戶數是一個很核心的指標,特別是互聯網公司。其實無論是服務端,客戶端,前端,還是算法方向,技術遇到的難題都是跟用戶數量成正比的。

服務端很好理解,千萬用戶的和億級用戶對服務器數量的要求完全不同,服務器數量可能是近十倍的增長,而複雜度的提升比十倍還高。

客戶端,前端,在用戶規模大起來後,會面臨更加複雜多變的環境,比如一些長尾機型的適配,一些難以兼容的瀏覽器等。算法同學要面對的是更大的數據量。

更大的數據量,意味著數據的多樣性會更大,噪音也會更大,這也提升了數據內容理解的難度。

項目中的角色

一個十人項目裡的主負責人和分模塊的負責人,肯定是不一樣的。主負責人需要更高的技術視野,更全面的思考,也需要有更好的協調能力。這個是技術,統籌能力的綜合體現,毫無疑問會更加有含金量。

在實際面試過程中,面試官可能不瞭解你公司,也不瞭解你所在的團隊。你說你是項目負責人,說白了,他也無法證偽,所以這裡更重要的是,要有主負責人的那種技術視野和思考深度。

在實際面試的時候,你說你是負責人之一(實際的負責人可能不止一個),然後你又體現出了相應的技術視野和思考深度,其實也是可以的。

這裡也給了我們一個啟發,無論自己在項目中是什麼角色,對系統的思考都是很重要的。

很多同學說自己天天寫 if else ,做的項目沒有技術含量,但你真的有思考嗎?有花時間去了解過系統的整體設計嗎?不同的模塊之間是怎麼銜接的?整個系統最難的是什麼?

再者,多問一句,你知道系統存在的問題嗎? 你可以把它設計得更好嗎?這些其實是日積月累的,人跟人的區別,也就在於這多一步的思考。

項目的性質

這個需要解釋一下。對於工程系統,可以做這麼一個大概的劃分,業務系統,中間件,基礎組件。

一般情況下,就技術含量來說:基礎組件>中間件>業務系統,就業務能力來說,是反過來的。

在實際面試的過程中,大部分的面試官比較喜歡有技術含量的項目,純業務邏輯的闡述比較難獲得面試官的認可,所以有機會去嘗試一些基礎系統的開發或中間件的開發,這是應該好好把握的。

如果實在沒有機會,也要學會抽象業務系統中的業務邏輯,抽象描述比起直白的業務邏輯陳述,給人的感覺肯定是不同的。

算法的方向,也有區分,主要區分是應用研究和基礎研究。這裡主要是崗位的匹配度。

基礎研究去面應用研究應該要容易些,一般面試官擔心的是,基礎研究的同學有沒有實際的業務經驗。應用研究要面基礎研究,估計就會比較難了。

自己折騰的項目

這個我覺得在面試的過程中,一定是有加分的,先不論項目本身做的怎樣,會主動去折騰項目的人,對技術一定是有激情的。

對於畢業生,在大學的時候會不會自己找項目來做,在技術職業發展上,已經是一個很大的分水嶺了。

對於已經工作的人來說,如果能夠參與一些開源的項目,面試官無疑是會多看一眼的,不過目前國內企業的工作時間太長,我估計大部分人沒有這個時間和精力了。

結語

項目經驗,我覺得是程序員最值錢的東西。除了校招的時候,對項目經驗的要求比較低,其他時候,項目經驗都是決定技術等級,收入的關鍵。

所以我們對項目經驗的積累要非常的重視,除了項目的數量,也要更多的考慮項目的質量。

程序員在自己的職業生涯中,要經常思考自己所做項目的規模和技術的難度,如果發現自己長期處於小規模,低技術難度的項目中,就要想辦法為自己找尋更好的項目了!


分享到:


相關文章: