为什么大公司要设置这么高的门槛?
閱讀本文大概需要 8.2 分鐘。
周末不發技術性文章,祝大家周末愉快~
作者:hsm_computer
來源:www.cnblogs.com/JavaArchitect
目前一般的大點的公司,往往會在招聘時(尤其在招聘3年以下工作經驗的程序員時)會設置學校的門檻,比如需要211或985相關專業畢業。
這里我無意貶低不在這個范圍的程序員,相反在本文里還將根據我所見和我所聞,為這些同學給出發展的建議。
首先我用我的切身體會給大家予以足夠的信心:我最近呆的都是一些不小的公司,雖然在招聘時有上述的門檻,但事實上,在3年左右的正式員工里,大約30%是一般學校,或非科班出身,在外派的員工里,這個比例會高到70%左右,而且,每個組平均每年有3個左右轉正的名額。
所以,出身一般的程序員,只要有足夠的勤奮度,而且方法得當,絕非就一定低人一等。?
恕我直言,在學校和學歷方面稍微欠缺的同學里,我有見過能力很強的,但平均綜合能力確實不如好學校。(這里如果我說高于好學校,說出來也沒人信)。?
不過對于勤奮的同學來說,并非是能力不行,而是努力的方法和方向不對。
對于這批敬業勤奮的同學,我非常敬佩,所以在這篇文章里,我將專門分享些相關的提升技巧。
▌一、為什么大公司要設置學歷和學校的門檻
平心而論,為什么有這樣的設置呢?
第一,能進好學校的同學在之前的學習過程中已經證實了自己“綜合能力強“這個特質;
第二,好學校畢業的同學,一般基礎能力比較扎實,比如數據結構算法操作系統編譯原理等,不僅理論經驗,不少還有實訓經驗。
在前進的過程中,我們必須認清自己,所謂知己知彼百戰不殆,但認識自己絕非是讓我們妄自菲薄,而是明白自己的短板,歸納一下,在招聘時,一般會對這批程序員重點考核如下的要點(這其實就是目前普遍存在的短板):
1、是否有實際的商業項目經驗?
2、基本功是否能達標?比如是否熟悉鏈表Hash表的基本數據結構,是否熟悉排序等基本的算法。
3、學習能力,團隊協作能力以及責任心等是否達標?
其實歸根到底就一點:如果程序員在大學畢業前,有過實際的項目經驗,比如做過兼職,或在學校里幫老師干過商業項目經驗,這能一定程度上彌補學歷學校和專業方面的劣勢,而且,如果做項目的時間足夠長(一般1年左右),而且項目里用到的技術和公司職位需求比較匹配,而且候選人動手能力強,一些規模不大的公司甚至會忽視學校等方面的因素。?
▌二、如何讓自己有個不差的起點
?
程序員在踏上社會后前兩年的發展,會比較重要。這里給出的建議是,如果你感覺學校和學歷會成為障礙,可以找個規模一般但干的活和你的職業發展相關的工作,如果萬不得已,不得不干銷售等之類的工作,但一定得讓自己干點和編程相關的事情。下面給出些我見到過的案例:
案例1:小A本科畢業后,學校一般,能力屬于中下。不過他找了個外派公司,外派進了一個規模比較大的公司,在其中發展了2年,用項目經驗沖淡了學校的因素,后來就跳槽進了一個大公司,從初級開發做起,平時也經常學些知識,目前在升級到高級開發的路上順風順水。
案例2:小B學校一般,也大專學歷,但在大三期間已經在軟件公司實習,積累了一些基本的開發能力,畢業后就憑此順利進入到一個中型公司做開發,至少能在社會上站穩腳跟。
案例3:小C大專學習,專業是理科,但和軟件關系不大,后來參加一個軟件培訓,積累了些技能,目前至少也能在公司里做軟件開發的活。
在這個案例中,我絕非說一定得通過培訓學校,其實在培訓學校是用錢買時間買學習方法買項目經驗,如果你自己毅力足夠,靠自己看視頻運行項目,也能達到類似的效果。
案例4:我在面試時就看到不少簡歷,候選人學校學歷都一般,3年后,絕對有能力挑戰大公司的職位,而且公司更看重這些同學靠前3年工作積累的項目和技能經驗。
總結一下,如果學校學歷都一般,那么該采取哪些措施呢?
1、最好在畢業前,進入軟件公司實習。這可以靠學校推薦,更得自己去找。學校里的一些老師,會和外面公司合作,大家就可以找這些老師干活?;蛘呔偷教幫逗啔v,工資看著要,以積累項目經驗為主。
2、平時可以適當放松娛樂,但就更得自己了解項目經驗。比如,通過視頻等方式,自己搭建一個框架,或者用python搭建一個數據分析平臺,這種案例多多益善。
3、準備簡歷時,一定得增加商業項目的經驗,同時靠刷面試題積累面試經驗。
這里也給大家交個底,我在上海,上海軟件公司數量多不勝數,往往一個樓里就有5,6家,而且,小型或中型的公司,出于節省成本的考慮,往往只會看項目技能和基本功,不怎么看學校和學歷。其實每個城市都一樣,所以要找工作,或者是不差的工作,絕對沒問題。??
▌三、只要勤奮了,任何時間點都不算晚
在龜兔賽跑里,最讓人痛心的不是兔子在中途睡覺,而是烏龜自暴自棄。天道酬勤,但如果自己都失去信心或貪圖玩樂,那真就沒人能幫你了。
在學校里,就該去積累項目經驗,或自己通過運行代碼熟悉框架技能。不過如果已經不慎錯過學校里的時間,但現在想迎頭趕上,只要努力了,什么時候都不晚。
這里給出些關于Java方面自學的途徑和時間點。
表1,第1個月的學習進度:
在第2個月里,大家可以在掌握上述知識的基礎上深入了解Java Core的高級知識點,并可以進入Java Web初級階段的學習,這個時間段的學習進度如下表所示。
表2,第2個月的學習進度:
在第3個月里,大家可以深入了解Java Web里比較資深的框架技術,比如Spring MVC和ORM等,這個階段的學習計劃如下表所示。
表3,第3個月的學習進度:
本人一直在上海上一個為期3個月的政府補貼的Java培訓班(具體名字就不說了,有打廣告嫌疑),就按上述時間點要求學生(不少還是零基礎的),經實踐下來,不少同學上完后至少能出去面試初級程序員了。
換句話說,只要你肯了,大概也就3個月的時間(基礎稍微差的同學最多5個月,如果上心點的,估計也就2個月),即能達到初級開發的水平。
我之前聽過一種說法,說Java培訓學校量產初級開發,根據我所見所聞,不無道理,而且量產對象,學歷甚至可以是高中,讀過計算機大專的,也寥寥無幾。相比之下,學校一般的同學基礎要好得多,更應該有能力和信心快速提升自己。?
▌四、基本功,其實也能在工作后彌補
這個大家可能有個認識誤區,好學校高學歷的畢生生在工作后有優勢,并不是他們多學了幾門課多會了幾個知識點,而是在這些學校里,項目實踐的機會比較多,實習機會也好找。換句話說,基本功比較強。
什么叫基本功(俗稱內功)?分兩塊,第一是知識類的。大學里學的課不少,但實際對5年內程序員工作有幫助的,可能也就以下的內容:
1、數據結構知識,而且僅限于數組,鏈表,堆棧,隊列,Hash表和樹等知識,圖的知識不怎么用得到。
2、算法,用得最多的也就是排序,遍歷(樹鏈表等)。
3、編譯原理中的狀態機思想。
4、網絡通訊里的網絡協議知識點和通訊包的發送流程。
5、操作系統里的一些知識點和算法。
6、Java等編程語言,學校里一般會更多地偏重知識點,而實際公司里,要求更多的是動手開發能力。
大家可以看下,這些其實不怎么難學,這也是為什么非軟件專業的同學能轉行,以及培訓學校能量產程序員的原因。
至于說,基礎理論知識阻礙了程序員升級,比如某程序員由于不熟悉Hash表數據結構從而導致缺乏優化能力,這不是程序員沒經過大學里基礎課的培訓,而是在工作后,沒有主動彌補這方面的知識點。
基本功另外一類是關于技能的,分為如下幾個層次:
1、調試代碼的能力,比如邊上沒有人,你能自己通過debug把代碼調通。
2、能山寨別人代碼的能力,比如你要實現一個JDBC連數據庫的功能,自己不熟悉JDBC的操作,但你可以從網上找段相似的然后改改實現。
3、學習的能力,比你是做后端的,但需要實現一些基本的前端功能,這你要能通過看資料快速上手。
4、搭建環境和框架的能力,小而言之,在linux上搭建mysql等zookeeper,大而言之,搭建一個nginx+zookeeper+dubbo集群的能力。
5、能通過看日志排查問題的能力,比如日志在linux上, 你能通過grep, less等命令快速定位問題。
6、這個可能比較難點,叫解決問題的能力,比如目前系統性能一般,你得能通過壓測,看日志等手段看出問題點,然后動手解決。
從上述描述里,大家可以看到,這些技能上的基本功,在大學里能得到鍛煉的很少,很多都是在工作后慢慢積累的,也就說,哪怕學校一般,學歷一般,在工作中絕對是有機會迎頭趕上的。
▌五、如何自己彌補基本功
那么初級程序員該如何提升自己的基本功?實踐是最重要的,重要程度沒有之一,具體來講,怎么做呢?
1、入門階段,先買本書,建議是紙質書,這樣閱讀效率更高,下載代碼,邊運行代碼邊看書里的解釋。
剛開始不知道買哪類書怎么辦?一般能通過出版社審核的書都不會差。比如就拿Java后端方向,買本Java Core的,一本Web書(含SSM框架),數據庫的書也可以買一本。由于邊運行邊看,所以最長3個月能把代碼運行通。
2、在這三個月的過程中,也可以看些視頻,視頻里一般會含代碼也代碼的配置步驟。
3、理論略過,著重看代碼運行。運行代碼時一定別先自己動手,因為剛開始能力弱,自己動手一定會遇到很快坑,這樣多遇到幾次調不通,信心就沒了,就會不了了之了,記得,剛開始時最多可以在運行通的前提下改別人的代碼,以驗證各模塊和各參數的效果。
4、在看的時候,初級程序員往往會多看些平時用不到的知識點,所以在這個階段,可以去看下別人培訓班的課程體系,或者看些面試方面的書,這樣就知道哪些知識點不怎么用到,這樣能節省學習時間。
這樣看書看視頻運行代碼持續3個月后,就具備動手調試代碼和搭建環境的能力了,然后就有進軟件公司干活的能力了。在這個時間點上,再了解上文提到的算法,如果可以,再通過Java等語言,按數據結構書里的代碼運行一下,了解下基本的數據結構和排序等算法,這樣能力甚至會高于一般學校軟件行業的畢業生了。??
▌六、有意識地積累些值錢的知識點
通過上述方法積累些理論方面的經驗之后,就得通過做項目來積累實戰經驗了。很多時候,在做完2到3個項目后,非科班出身的程序員和好學??瓢喑錾淼某绦騿T動手技能實際上就差不多了,這個時候就得注意積累些“值錢”的技能點了。
第一,尤其得注意調試問題的能力,比如一個模塊代碼開發好了,怎么通過dubug或單元測試的手段,驗證模塊沒問題,或者出現問題了能知道怎么解決。
第二,能通過SQL語句看數據庫,以及通過看日志等手段,了解程序的運行流程,看下是否缺少功能點,或者出了問題能據此解決。
第三,架構方面,這可能剛開始有些難,但可以采用MVC的思路,比如看下前端的請求怎么通過控制器,控制器如何把請求發送到后端,后端做好以后怎么返回。在此基礎上,可以看下分布式部署的實現方式,比如反向代理,分庫分表等方式。
第四,一定得掌握些調優的手段,主要包括SQL語句調優(看執行計劃)和JVM性能調優(通過Jconsole,Dump等手段)。
如果有機會,再了解些大數據分析, AI等當前比較值錢的知識點。?
不過,很多程序員會僅僅停留在“代碼“?層面,在此之外,大家可以更開闊思路,掌握些項目管理部署和發布方面的技能。
1、項目管理方面,比如可以用敏捷開發的模式,大家可以了解下敏捷開發的流程。
2、比如項目用Maven管理jar包,在此基礎上用jenkins打包部署,這個流程細節,大家可以掌握下。
3、java項目開發后,一般會打成jar包或war包,部署到tomcat服務器上,在此基礎上還可以做些負載均衡等方式,這塊配置步驟,或者tomcat等的細節,大家可以掌握下。
總之,不論是哪類程序員,掌握了上述技能,并能在簡歷和面試中充分證明這點,
▌七、有實踐性的進階路線
工作2年后,如果注意積累,好學校和一般學校的程序員差別一般就不大了,可能這時候僅僅剩下“學校名“的差別了,不過話說回來,工作2年后,還得靠學校名來證明自己,這未免也有些可悲。
這時候,思考的出發點就應該從“如何站穩”轉變為“如何更好的發展自己”。這時,視野就應該從一般公司升級到大廠了。
如果你想積累技能經驗,可以剛開始選擇個互聯網公司,在其中體驗下這類公司的開發氛圍后,就再想辦法進BAT?,F在,外企的吸引力未必有前幾年那么強,不過也是個好的選項?;蛘?#xff0c;也可以選擇個國內大點規模的公司發展,比如證券金融類公司。
如果你能直接進,那最好,或者還可以通過外派的方式進大公司,這樣干個兩年,或者有機會轉成正式員工,或者這個時候就有資歷直接進大廠了。
▌八、總結
總結下,如果要迎頭趕上,第一得靠信心,不妄自菲薄,第二得靠勤奮,笨鳥先飛,第三得靠方法,所謂事半功倍。
往期精彩回顧
敢不敢模擬超過 5 萬的并發用戶?
Git 自救指南:這些坑你都跳得出嗎?
你向 Mysql 數據庫插入 100w 條數據用了多久?
架構師必備技能:教你畫出一張合格的技術架構圖
一般電商應用的訂單隊列架構思想
我的天!史上最爛的項目:苦撐 12 年,600 多萬行代碼...
為什么魂斗羅只有 128KB 卻可以實現那么長的劇情?
寫留言
朕已閱?
總結
以上是生活随笔為你收集整理的为什么大公司要设置这么高的门槛?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gpio_export_with_nam
- 下一篇: [转帖]3万公里东风标致206机油试用心