日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

非好学校科班出身的程序员,该如何快速提升自己

發布時間:2024/1/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非好学校科班出身的程序员,该如何快速提升自己 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 目前一般的大點的公司,往往會在招聘時(尤其在招聘3年以下工作經驗的程序員時)會設置學校的門檻,比如需要211或985相關專業畢業。這里我無意貶低不在這個范圍的程序員,相反在本文里還將根據我所見和我所聞,為這些同學給出發展的建議。

? ? 首先我用我的切身體會給大家予以足夠的信心:我最近呆的都是一些不小的公司,雖然在招聘時有上述的門檻,但事實上,在3年左右的正式員工里,大約30%是一般學校,或非科班出身,在外派的員工里,這個比例會高到70%左右,而且,每個組平均每年有3個左右轉正的名額。所以,出身一般的程序員,只要有足夠的勤奮度,而且方法得當,絕非就一定低人一等。?

? ? 恕我直言,在學校和學歷方面稍微欠缺的同學里,我有見過能力很強的,但平均綜合能力確實不如好學校。(這里如果我說高于好學校,說出來也沒人信)。?不過對于勤奮的同學來說,并非是能力不行,而是努力的方法和方向不對。對于這批敬業勤奮的同學,我非常敬佩,所以在這篇文章里,我將專門分享些相關的提升技巧。

1 戰術上要重視,分析為什么大公司要設置學歷和學校的門檻

? ? ?平心而論,為什么有這樣的設置呢?第一,能進好學校的同學在之前的學習過程中已經證實了自己“綜合能力強“這個特質,第二,好學校畢業的同學,一般基礎能力比較扎實,比如數據結構算法操作系統編譯原理等,不僅理論經驗,不少還有實訓經驗。

? ? 在前進的過程中,我們必須認清自己,所謂知己知彼百戰不殆,但認識自己絕非是讓我們妄自菲薄,而是明白自己的短板,歸納一下,在招聘時,一般會對這批程序員重點考核如下的要點(這其實就是目前普遍存在的短板):

? ? 1 是否有實際的商業項目經驗?

? ? 2 基本功是否能達標?比如是否熟悉鏈表Hash表的基本數據結構,是否熟悉排序等基本的算法。

? ? 3 學習能力,團隊協作能力以及責任心等是否達標?

? ? 其實歸根到底就一點:如果程序員在大學畢業前,有過實際的項目經驗,比如做過兼職,或在學校里幫老師干過商業項目經驗,這能一定程度上彌補學歷學校和專業方面的劣勢,而且,如果做項目的時間足夠長(一般1年左右),而且項目里用到的技術和公司職位需求比較匹配,而且候選人動手能力強,一些規模不大的公司甚至會忽視學校等方面的因素。?

2 如何通過第一份工作,讓自己有個不差的起點

? ?

? ? 程序員在踏上社會后前兩年的發展,會比較重要。這里給出的建議是,如果你感覺學校和學歷會成為障礙,可以找個規模一般但干的活和你的職業發展相關的工作,如果萬不得已,不得不干銷售等之類的工作,但一定得讓自己干點和編程相關的事情。下面給出些我見到過的案例。

? ? ?案例1:小A本科畢業后,學校一般,能力屬于中下。不過他找了個外派公司,外派進了一個規模比較大的公司,在其中發展了2年,用項目經驗沖淡了學校的因素,后來就跳槽進了一個大公司,從初級開發做起,平時也經常學些知識,目前在升級到高級開發的路上順風順水。

? ? 案例2:小B學校一般,也大專學歷,但在大三期間已經在軟件公司實習,積累了一些基本的開發能力,畢業后就憑此順利進入到一個中型公司做開發,至少能在社會上站穩腳跟。

? ? 案例3:小C大專學習,專業是理科,但和軟件關系不大,后來參加一個軟件培訓,積累了些技能,目前至少也能在公司里做軟件開發的活。

? ? 在這個案例中,我絕非說一定得通過培訓學校,其實在培訓學校是用錢買時間買學習方法買項目經驗,如果你自己毅力足夠,靠自己看視頻運行項目,也能達到類似的效果。

? ? 案例4:我在面試時就看到不少簡歷,候選人學校學歷都一般,3年后,絕對有能力挑戰大公司的職位,而且公司更看重這些同學靠前3年工作積累的項目和技能經驗。

? ? 總結一下,如果學校學歷都一般,那么該采取哪些措施呢?

? ? 1 最好在畢業前,進入軟件公司實習。這可以靠學校推薦,更得自己去找。學校里的一些老師,會和外面公司合作,大家就可以找這些老師干活。或者就到處投簡歷,工資看著要,以積累項目經驗為主。

? ? 2 平時可以適當放松娛樂,但就更得自己了解項目經驗。比如,通過視頻等方式,自己搭建一個框架,或者用python搭建一個數據分析平臺,這種案例多多益善。

? ? 3 準備簡歷時,一定得增加商業項目的經驗,同時靠刷面試題積累面試經驗。

? ? 這里也給大家交個底,我在上海,上海軟件公司數量多不勝數,往往一個樓里就有5,6家,而且,小型或中型的公司,出于節省成本的考慮,往往只會看項目技能和基本功,不怎么看學校和學歷。其實每個城市都一樣,所以要找工作,或者是不差的工作,絕對沒問題。??

3 只要勤奮了,任何時間點都不算晚:論時間的安排

? ? 在龜兔賽跑里,最讓人痛心的不是兔子在中途睡覺,而是烏龜自暴自棄。天道酬勤,但如果自己都失去信心或貪圖玩樂,那真就沒人能幫你了。

? ? 在上文里提到,在學校里,就該去積累項目經驗,或自己通過運行代碼熟悉框架技能。不過如果已經不慎錯過學校里的時間,但現在想迎頭趕上,只要努力了,什么時候都不晚。

? ? 這里給出些關于Java方面自學的途徑和時間點。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表 第1個月的學習進度

學習時間

要學的技術

應該達到的水準

第1周

搭建Java環境,熟悉基本語法

安裝好JDK,Eclipse或MyEclipse開發環境。能運行出第一個Java程序。最好還能熟悉int之類的基本數據類型和一些加減乘除等基本運算。了解Math等常用的類,了解if分支語句,了解while,for等循環語句,能用開發出諸如計算閏年或累加和之類的小程序。

第2周

基本的面向對象語法

了解封裝繼承多態等的語法,知道面向對象的基本概念,但此時不必深入。這部分內容對應本書第2章。

第3周

Java集合部分的內容

知道List,Set和Map等對象的用法,知道泛型的用法,而且知道諸如hashCode等的常用知識帶你。這部分內容對應本書第3章。

第4周

異常處理流程和基本的IO處理流程

知道try…catch…finally的工作流程,知道基本的IO讀寫操作。會結合異常處理流程開發一些讀寫文件讀寫內存等的程序。這部分內容對應本書第4章。

? ? 在第2個月里,大家可以在掌握上述知識的基礎上深入了解Java Core的高級知識點,并可以進入Java Web初級階段的學習,這個時間段的學習進度如下表所示。

表 第2個月的學習進度

學習時間

要學的技術

應該達到的水準

第5周

搭建數據庫環境,熟悉JDBC編程

安裝好MySQL等數據庫環境,會通過JDBC編寫諸如讀寫數據庫的操作,而且能掌握批處理和預處理等操作。最好能會和事務相關的操作。這部分內容對應本書第5章。

第6,7周

多線程編程

能用多線程協作完成一件事情,掌握至少一種控制多線程并發的技巧(比如Lock),最好能掌握線程池。這部分內容對應本書第7章。

第8周

基本的Web技術

能開發并運行基于Jsp+Servlet+JavaBean+DB架構的簡單項目,并了解其中的一些重要技術。

? ? 在第3個月里,大家可以深入了解Java Web里比較資深的框架技術,比如Spring MVC和ORM等,這個階段的學習計劃如下表1.4所示。

表 第3個月的學習進度

學習時間

要學的技術

應該達到的水準

第9周

Spring的諸如IOC和AOP等基本概念

能運行通IOC和AOP部分的代碼,并能結合代碼知道諸如AutoWire等的重要知識點。

第10周

Spring MVC框架及其基本流程

能通過一個簡單的Spring MVC程序了解它的組成結構,并了解其中各部分的開發要點

第11周

ORM技術

了解Hibernate或ibatis的基本開發模式,知道如何通過ORM和數據庫交互。

第12周

Spring MVC+ORM框架

能運行通一個簡單的Spring MVC+ORM框架的案例,并大致了解這種框架里各部分的開發要點。

? ? 本人一直在上海上一個為期3個月的政府補貼的Java培訓班(具體名字就不說了,有打廣告嫌疑),就按上述時間點要求學生(不少還是零基礎的),經實踐下來,不少同學上完后至少能出去面試初級程序員了。

? ? 換句話說,只要你肯了,大概也就3個月的時間(基礎稍微差的同學最多5個月,如果上心點的,估計也就2個月),即能達到初級開發的水平。

? ? 我之前聽過一種說法,說Java培訓學校量產初級開發,根據我所見所聞,不無道理,而且量產對象,學歷甚至可以是高中,讀過計算機大專的,也寥寥無幾。相比之下,學校一般的同學基礎要好得多,更應該有能力和信心快速提升自己。?

4 看下程序員的基本功,其實自己也能在工作后彌補

? ? 這個大家可能有個認識誤區,好學校高學歷的畢生生在工作后有優勢,并不是他們多學了幾門課多會了幾個知識點,而是在這些學校里,項目實踐的機會比較多,實習機會也好找。換句話說,基本功比較強。

? ? 什么叫基本功(俗稱內功)?分兩塊,第一是知識類的。 大學里學的課不少,但實際對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 這個可能比較難點,叫解決問題的能力,比如目前系統性能一般,你得能通過壓測,看日志等手段看出問題點,然后動手解決。

? ? 從上述描述里,大家可以看到,這些技能上的基本功,在大學里能得到鍛煉的很少,很多都是在工作后慢慢積累的,也就說,哪怕學校一般,學歷一般,在工作中絕對是有機會迎頭趕上的。

5 如何自己彌補基本功

? ? 那么初級程序員該如何提升自己的基本功?實踐是最重要的,重要程度沒有之一,具體來講,怎么做呢?

? ? 1 入門階段,先買本書,建議是紙質書,這樣閱讀效率更高,下載代碼,邊運行代碼邊看書里的解釋。

? ? ? ?剛開始不知道買哪類書怎么辦?一般能通過出版社審核的書都不會差。比如就拿Java后端方向,買本Java Core的,一本Web書(含SSM框架),數據庫的書也可以買一本。由于邊運行邊看,所以最長3個月能把代碼運行通。

? ? 2 在這三個月的過程中,也可以看些視頻,視頻里一般會含代碼也代碼的配置步驟。

? ? 3 理論略過,著重看代碼運行。運行代碼時一定別先自己動手,因為剛開始能力弱,自己動手一定會遇到很快坑,這樣多遇到幾次調不通,信心就沒了,就會不了了之了,記得,剛開始時最多可以在運行通的前提下改別人的代碼,以驗證各模塊和各參數的效果。

? ? 4 在看的時候,初級程序員往往會多看些平時用不到的知識點,所以在這個階段,可以去看下別人培訓班的課程體系,或者看些面試方面的書,這樣就知道哪些知識點不怎么用到,這樣能節省學習時間。

? ? 這樣看書看視頻運行代碼持續3個月后,就具備動手調試代碼和搭建環境的能力了,然后就有進軟件公司干活的能力了。在這個時間點上,再了解上文提到的算法,如果可以,再通過Java等語言,按數據結構書里的代碼運行一下,了解下基本的數據結構和排序等算法,這樣能力甚至會高于一般學校軟件行業的畢業生了。??

6 在做項目時,有意識地積累些值錢的知識點

? ? 通過上述方法積累些理論方面的經驗之后,就得通過做項目來積累實戰經驗了。很多時候,在做完2到3個項目后,非科班出身的程序員和好學??瓢喑錾淼某绦騿T動手技能實際上就差不多了,這個時候就得注意積累些“值錢”的技能點了。

? ? 第一,尤其得注意調試問題的能力,比如一個模塊代碼開發好了,怎么通過dubug或單元測試的手段,驗證模塊沒問題,或者出現問題了能知道怎么解決。

? ? 第二,能通過SQL語句看數據庫,以及通過看日志等手段,了解程序的運行流程,看下是否缺少功能點,或者出了問題能據此解決。

? ? 第三,架構方面,這可能剛開始有些難,但可以采用MVC的思路,比如看下前端的請求怎么通過控制器,控制器如何把請求發送到后端,后端做好以后怎么返回。在此基礎上,可以看下分布式部署的實現方式,比如反向代理,分庫分表等方式。

? ? ?第四,一定得掌握些調優的手段,主要包括SQL語句調優(看執行計劃)和JVM性能調優(通過Jconsole,Dump等手段)。

? ? ?如果有機會,再了解些大數據分析, AI等當前比較值錢的知識點。?

? ? 不過,很多程序員會僅僅停留在“代碼“?層面,在此之外,大家可以更開闊思路,掌握些項目管理部署和發布方面的技能。

? ? 1 項目管理方面,比如可以用敏捷開發的模式,大家可以了解下敏捷開發的流程。

? ? 2 比如項目用Maven管理jar包,在此基礎上用jenkins打包部署,這個流程細節,大家可以掌握下。

? ? 3 java項目開發后,一般會打成jar包或war包,部署到tomcat服務器上,在此基礎上還可以做些負載均衡等方式,這塊配置步驟,或者tomcat等的細節,大家可以掌握下。

? ? 總之,不論是哪類程序員,掌握了上述技能,并能在簡歷和面試中充分證明這點,

7 有實踐性的進階路線

? ? 工作2年后,如果注意積累,好學校和一般學校的程序員差別一般就不大了,可能這時候僅僅剩下“學校名“的差別了,不過話說回來,工作2年后,還得靠學校名來證明自己,這未免也有些可悲。

? ? ?這時候,思考的出發點就應該從“如何站穩”轉變為“如何更好的發展自己”。這時,視野就應該從一般公司升級到大廠了。

? ? ?如果你想積累技能經驗,可以剛開始選擇個互聯網公司,在其中體驗下這類公司的開發氛圍后,就再想辦法進BAT?,F在,外企的吸引力未必有前幾年那么強,不過也是個好的選項?;蛘?#xff0c;也可以選擇個國內大點規模的公司發展,比如證券金融類公司。

? ? ?如果你能直接進,那最好,或者還可以通過外派的方式進大公司,這樣干個兩年,或者有機會轉成正式員工,或者這個時候就有資歷直接進大廠了。

8 總結,版權說明和求推薦

? ? 原本打算在周一時就發表本文,但本周公司事情太多,又在整理另一本書,所以延遲到周五。不過在這段時間里,我天天回顧文本,也加了些內容,所以“延遲”總算也有些價值。

? ? 總結下,如果要迎頭趕上,第一得靠信心,不妄自菲薄,第二得靠勤奮,笨鳥先飛,第三得靠方法,所謂事半功倍。

? ? 本文里提到的方法和技能,如果能對大家有所幫助,請大家幫忙轉發,或者點擊下面的按鈕來“推薦本文”,或者通過評論來參與討論。

? ??本文歡迎轉載,不過請注明文章來源,同時給出本人寫的兩本書的連接Java?Web輕量級開發面試教程和Java核心技術及面試指南。

? ? 再次感謝大家讀完本文。

總結

以上是生活随笔為你收集整理的非好学校科班出身的程序员,该如何快速提升自己的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。