非科班程式設計師怎麼彌補和科班程式設計師之間的差距?

念念舊!


作為一名從事IT行業多年的老程序員,同時我也在帶研究生,所以我來回答一下這個問題。

在我看來非科班程序員與科班程序員的差別主要在以下幾個方面:

第一,知識結構。這是主要的差別,科班出身的程序員往往具備完善的知識結構,包括操作系統、網絡、計算機體系結構、數學、數據庫等內容,這些內容對未來的編程有非常大的幫助。對於非科班程序員來說,這部分知識也是需要重點彌補的。

第二,學習能力。我帶軟件團隊多年,給我一個比較明顯的感覺是非科班出身的程序員比較畏懼接觸新內容,這對一名程序員來說影響還是比較大的。每當軟件團隊有新的任務時,我一般都會開會讓大家集中討論,往往是科班出身的程序員敢於承擔新的開發任務。

從帶軟件團隊到現在,我沒有一次遇到非科班程序員主動承擔新任務的(需要學習新技術),但是很多時候,機會就是從承擔新任務開始的。記得多年之前(大概8年前),我第一次帶移動互聯團隊,做Android開發的程序員都是從Java轉過來的,但是沒有人接觸過iOS開發,我就開會討論,看有沒有人主動承擔iOS開發任務,結果一個剛參加工作沒多久的程序員主動承擔了任務(畢業於北京理工大學計算機科學與技術專業),目前他已經是移動互聯開發團隊的主要負責人了。其實,承擔新任務也是一種對自己學習能力的自信,非科班程序員也要培養自己這種自信。

第三,解決問題的思路和途徑。科班出身的程序員往往有多種解決問題的思路和途徑,而非科班程序員解決問題的思路往往比較單一,一旦這個思路有問題就不知道該怎麼辦了。出現這個問題的根本原因還是基礎薄弱,經歷更多的項目自然能培養這方面的能力。

我也帶過一些非科班出身的研究生,通常情況下,這些研究生在剛入學的時候做實驗非常慢,進入課題組之後需要一個較長的適應期。一般我在研一的時候就會給非科班的研究生列出一個書單,主要是根據學生自身的知識結構來決定要彌補的知識,通常需要彌補的是操作系統(Linux系列)、數據庫、計算機網絡、編譯原理、數據結構等內容,通常計算機專業研究生的數學基礎都比較紮實,所以邏輯思維能力基本上沒有太大的問題。

按照歷史經驗來看,雖然早期的時候非科班學生編程比較慢,但是到研究生的後期基本上與科班學生沒有多大的差距,有的甚至是同學中的佼佼者。所以,不用擔心非科班身份,只要不斷學習並彌補自己知識結構上的差異,做一個優秀的程序研發人員是完全沒有問題的。

還有,對非科班程序員來說,如果在工作中遇到了較大的職業發展瓶頸,那麼考研是一個不錯的選擇。

我的研究方向是大數據和人工智能,我在頭條上會陸續寫一些關於大數據方面的科普文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有編程方面的問題,或者是考研方面的問題,都可以諮詢我。

謝謝!


IT人劉俊明


作為一個非科班的程序員,如何彌補和科班之間的差距,只有你真的比科班的人寫得好!因為你沒有學位,沒有系統的課程,只有真正從實戰中越過學位這個坎兒,靠的就是你擁有超強的寫代碼的能力。而這種能力,只有靠寫大量的程序和代碼,積累經驗,切實鍛煉出比大部分科班同學更強的coding skill的能力。


多練習,多做項目,多踩坑,在開發的過程中,除了極少數的項目需要頂尖的理論知識的算法,絕大部分的日常開發,依靠的都是經驗。每天保證一定的代碼量,開始很困難,因為沒有理論知識,所以有很多問題不懂,遇到不懂的問題再去查資料。


選定一個方向,比如像你所說的,學習的是Java,就去網上去找相關的視頻教程,跟著視頻教程來走,系統學習一遍,然後再看一些Python相關的書籍,做一些項目,這樣印象會更加深刻,有關軟件開發方面的名著。


以前在“如鵬網”上學習Python的學習路線,可以作為學習的參考。有網絡的地方就可以學習,以前學習的時候就是利用空餘的時間來系統的學習的,大三就開始工作了,拿著薪資上大學,積累工作經驗。

1、Python基礎

2、數據庫開發技術

3、web前端

4、Python web開發及企業項目實戰

5、Linux

6、NoSQL

7、數據可視化

8、爬蟲技術

9、人工智能

最後,你需要的是自信,非科班生絕對可以做得比科班生要牛逼。寫個程序而已,有多高深?非得讀個幾年書?說白了,只要你肯不要命的、勤奮地寫代碼,未來的發展會非常的不錯的。


玩著學編程


你好,對於你的問題,我來發表一些個人的觀點。


對於你的問題“怎麼彌補和科班程序員之間的差距”,我因為個人工作時間也不是很久,所以方法上不能給你什麼建議,所以在這裡我來為你分析下你所說的科班程序員。

科班程序員

我應該算是你所說的科班程序員,但是我沒覺得我比其他非科班的程序員高貴、厲害多少,當然,這可能因為我是一個學渣吧。

科班程序員就是計算機相關專業的畢業生,那麼,計算機相關專業和其他專業有什麼不同呢,我想,你覺得和科班程序員有差距的原因,也許就是因為這些不同而造成的。

  • 大學計算機課程

那我來說,首先是在學校的課程,我現在還記得的課程都有:

C語言,C++,數據結構與算法,計算機網絡,java,計算機科學導論,計算機組成原理,軟件工程,軟件測試,操作系統,數據挖掘等等。

當然隨著學校的不一樣,課程可能會有變化,但是像數據結構與算法,計算機網絡,C語言這幾個,應該都是有的。

你可以瞭解下,你和計算機專業差的知識在哪塊,這樣當你想去追趕他們的時候,就會有一個方向。

  • 計算機專業的訓練方式

我自己雖然是一個學渣,但是我還是參加過我們院開展的一些有助於學生髮展計算機技術的活動。

首先接觸到的就是 ACM 協會,當初也是不知道怎麼就加入了,什麼也沒了解,結果就是去了一兩次,就放棄了,最後看來,加入這個協會對學生的幫助是很大的。

在大一大二的時候,暑期一般都不會有什麼事情,這時候協會就會聚集同學們利用暑假時間來集訓,刷題,提升他們的編程、算法能力。

現在想起來,如果我能堅持下去,那麼可能我比現在會更好。

還有就是在大三大四的時候,當學生有了一定的計算機基礎,各個實驗室的老師就開始召集一部分學生,組建一個個實驗室,開始做項目。可以想象,從大三就開始做項目的同學,到了畢業,項目經驗應該是很豐富了。

我自己是大三快完了的時候才加入了一個老師的實驗室,感覺真的是受益匪淺,實際的做項目經驗,讓我能在畢業之後比沒做過項目的同學,更好的找工作。

  • 計算機專業同學的創業

我們學校是有一個專門提供給有想法的同學實現自己想法的基地,各個有自己想法的同學,會聚集一幫志同道合,技術不錯的同學一起做自己的項目。

雖然大部分都是夭折的,但是這個過程和經歷,會讓他們與眾不同於其他同學的。


以上是我總結的我們學校計算機專業的一部分,你可能覺得專業課是你和科班程序員拉開差距的地方,其實不然。

在我看來那只是做程序員的基本條件,非必要條件,我們學的那麼多知識,是會提高我們知識的廣度,但是我所見的厲害的同學,都會有自己專精的一部分,對於不感興趣或者不熟悉的地方,也會和學渣一樣。

所以真正我覺得會和非科班拉開差距的地方,是我所說的其他的方面,這些東西,讓計算機專業的同學不僅在學校的時候就能增長經驗,還讓他們瞭解了怎麼去實現自己的夢想,如果當他們技術足夠,想法足夠,那麼,他們會爆發出很強的能量。


這些是我覺得科班和非科班的區別,但我自己認為,這些東西只是讓兩者的起點不同。

不要說不公平,既然你想跨專業,那你就應該知道其中的難度。

當你成功的進入的程序員行業,那麼就不要總是覺得不如科班的,要是你跨專業,還比科班的厲害,那麼不是科班的是學渣,就是你是天才。

說這些不是說非科班就應該比科班的差,我想說的是,差距是肯定有的,但當你追上科班的水平的時候,那時候的你,

眼睛裡恐怕只有“比你厲害的程序員”和“比你差的程序,而不是“科班”和“非科班”。

不要給自己打上標籤,你的能量超乎你的想象。


^_^

我這裡有一些當年自學時候找的計算機相關專業資料,想學習的話可以私信哦


abigbread2018



分享到:


相關文章: