非計算機專業學生怎麼走上計算機技術之路?
非計算機專業學生怎麼走上技術之路?來自211一般大學,高考錯失計算機專業。目前工科。應該考研嗎?還是尋找其他成長之路?
部分反對最高票答案,當然也可能是作者還沒有寫完。
1. 只要有足夠的驅動,不管是利益還是興趣,其實都足以支持跨專業學習了,只是一般來說興趣是內生的比較持久,不容易被挫折擊垮,而外在的利益驅動會讓人變的有點短視。我想高票答案說的是這個意思,但是並不意味著利益驅動就不能轉行了。
2. 對於加QQ群討論,建立互助小組這種……可能我下面的話比較不中聽,但是對於初學者來說,stackoverflow和google就是最好的答疑老師,因為初學者碰到的問題都是很多很多人都碰到過的,幾乎肯定可以在搜索引擎上找到回答;尤其重要的是上面的答案都是公開的,經過很多人檢驗過的,優秀答案還有詳細的解釋。而你去問一個人,這個人的水平未必就能比stackoverflow優秀回答的水平高,所以給的答案可能是次優的甚至錯的;stackoverflow上藏龍卧虎,Jon Skeet這樣的大牛都經常現身說法。這個暫且不說,QQ互動的效率實在是低的無法忍受,並且有些人加著加著,注意力就轉移到社交而不是學習上了。
並不是說和人互動是不好的,而是在初學階段完全沒必要,只會拖後腿。QQ或者微信群的討論只適合提出那些網上很難搜索到的疑難問題,或者對某個前沿領域的專業探討,只有這種問題才值得你採用這種低效的方式,你一言我一語的把問題弄明白。
3. 對於自學者來說,如果真的想在CS領域走的更遠一點,我建議的路徑是「殺人放火受招安」。 殺人放火,是說最開始的時候不要沿著科班的路徑走,因為科班的路徑比較理論化,可能艱難的搞了幾個月離散數學和演算法,還不知道如何讓程序接受字元輸入,於是感到了挫折,學不下去了。我建議上手跟著一本經典教材或者MOOC的課程,比如說:
Python: Rice 大學的計算機基礎系列課程 | Coursera
Java: Duke大學的Java系列課程 | Coursera至於LISP和Haskell這樣的,我想沒有幾個人會上手就學這個吧?就不多介紹了。
上完之後基本的語法和內置庫的一些函數乃至於一些基本的數據結構和演算法就掌握了,然後就可以做練手的小項目,熟悉一些流行庫的API,自己可以開發小程序,網站等等。然後等這些殺人放火的事情都熟練了,你會很有成就感,甚至有點「我似乎什麼都會了」的感覺。那麼下一步就是要受「招安」,要系統的學習科班CS的東西了。如果你之前殺人放火玩的真溜, 這個階段會有各種茅塞頓開的感覺——「啊,原來XX背後是這樣運轉的」,「啊,原來XX的原理是這樣的」……
這個時候回頭去看自己之前得意的代碼,往往會有一種不忍卒讀的感覺,而這恰恰說明自己進步了,眼光看到的層次不一樣了。在這個階段,很多人遇到的問題是殺人放火爽了,往往就有意無意的忘記招安這回事了。生出「就我現在這樣就很好」的想法。但是,不被招安,做到頂也就是管管八百里梁山泊,當個地方一霸,只有招安了才有機會出將入相啊。
為什麼受招安這麼重要呢?打個比方,學計算機語言其實和學真實的語言是一樣的,語言本身熟練,API熟練,相當於你可以說一口流利的外語了,但是要和外國人辯論獲勝,拿國際辯論會冠軍,僅僅語言熟練當然是不夠的,還是要學習辯論的各種理論,流程和技巧。並且,只有學深了,自己的技能才會更加的Unique,才能有更好的機會走向更高的崗位。
4. 多謝點贊。我再補充一點,關於熟練度的誤區。很多時候人們會產生一個感覺:我做了這麼多項目,代碼量這麼大,我應該是個高手了。其實還真的未必如此。在科研領域也有時會見過代碼量很大,但是代碼質量很崩潰的研究生甚至教授,因為他們只是利用代碼做本專業的數學建模和模擬,有自己的專業庫。這個時候他們的要求就是跑起來就行,不講軟體工程這些。這樣的低質量代碼,寫再多也不會提高自己的編程水平,只是把編程作為一個純粹的工具使用。再比如,每天開車上下班的人多的是,為什麼這些人中絕大部分都當不了賽車手?因為並不是每個項目都有挑戰,都能讓自己累積到「有效經驗」的。很多時候項目是機械的重複和組合自己已經掌握的內容,這個時候人所獲得的新知識是極為有限的。而學習計算機科學和軟體工程的知識,可以很好的彌補這一點,因為你看到的是很多優秀的程序員和學者在過去幾十年的經驗和實踐的高度抽象和總結,這也從另一個方面說明了招安的重要性。
怒答一記!
相關性:非非計算機專業(看清楚哦,兩個非)出身,周圍的同學,朋友和同事有相當比例是非計算機專業出身通過各種途徑最終轉入計算機行業的,身處矽谷,平日里被人問的最多的問題之一就是:非計算機專業的朋友問,如果想轉你們這行該怎麼弄。
先說結論,任何不結合題主目前自身的現實情況,能夠和願意付出的代價,以及期望將來達成的目標這三點進行分析的答案都是在從自身角度出發,給出的的意見很多時候就像是小馬過河的故事一樣,適合答主的不一定適合題主。
朋友w君,化學專業出身,畢業後去了微軟一直干到現在。如果問他是怎麼轉計算機行業的,他會告訴你他當年高考如何發揮失常被調劑到化學專業,又是如何通過自學變成編程大牛的。他不會告訴你他有高中就在搞計算機競賽大學搞ACM競賽拿牌的基礎;
老家的發小,專科非計算機畢業,輾轉多家公司後現在在華為工作。如果問他是怎麼進入計算機行業的,他會告訴你憑自己的興趣考過很多計算機網路的證書。他不會告訴你這背後輾轉多家公司付出的辛酸和努力;
還有本科英語專業的妹子x,到美國來申請了計算機的碩士,畢業之後去了google。如果問她是怎麼進google的,她會告訴你她是如何申請學校和轉專業,又是如何刷題做準備的。她不會告訴你她其實自身天賦相當不錯,而且還是個萌妹子。
所以如果w君來回答這個問題,他會告訴你堅持自學就可以;如果老家的發小來回答,他會說興趣(geng duo de qian)是如何支撐著他不斷跳槽不斷考證的;如果x妹子回答的話就是:申請一個美國學校的計算機專業,好好刷題就可以進google了。
可現實情況是,很多向我諮詢如何轉計算機行業的人,大部分都是止步於回家看上幾天的python自學,java速成之類然後不了了之了。
為什麼呢?很簡單的道理,但是又很重要。重要的道理我從不同的角度說兩遍(對,我才懶得重複三遍)
計算機是一門系統性的學科,只有結合自己的現實情況,付出相當程度的努力,才能在這個行業找准自己的定位(只有,才能。對的,轉計算機行業挺難,話說轉哪行也都不容易啊);
計算機是一門系統性的學科,只要結合自己的現實情況,付出相當程度的努力,就能在這個行業找准自己的定位(只要,就能。對的,轉計算機行業也不難,這麼多搞計算機的公司,總有一款適合你的)
說白一點其實就是以下三點:
1. 認清現實:我們要做可行性分析;
2. 找准目標:我們要做需求分析;
3. 付出努力:我們要有執行計劃;
1. 認清現實:可行性分析,見下圖:
一,如果沒有較好邏輯思維,建議不要選擇計算機技術作為主攻方向。計算機工程性和研究性的工作相對來講是需要從業者天生具備較好的邏輯思維和抽象思維的能力,在這個基礎上經過大量的學習和訓練從而可以適應當下職場需要。每個人的思維特點,方式和特性是有一些天生差異存在的,沒有高下之分,但是卻有涇渭之別。如果天生在邏輯思維方面比較弱,學習起來畢竟事倍功半,這道理就像某一個邏輯思維發達但是缺乏審美的程序員想努力掌握什麼是穿衣的審美特別困難一樣。
二,如果沒有最基本的興趣,建議放棄轉行計算機。什麼叫最基本的興趣?就是你不會討厭寫代碼。身處矽谷,經常有非本行的人問:我想轉行計算機,但是不想寫代碼,有沒有可能去做program manager呢?對於這樣的問題我只能委婉的表達說:不想寫代碼的program manager不是一個好employee。做program manager自然不用寫代碼,但是也一般是有強大的技術背景的,而不是因為討厭寫代碼就認為可以做program manager。
需要注意的一點是,和不少答案特彆強調興趣驅動去學計算機不同。我的觀點是你需要有基本的興趣,就是你不會討厭它,但不是必須有極大的興趣。主要原因在於:初期的興趣其實根本不值一提。任何事情如果當成一個職業來做,就沒有它表面的光鮮,所要處理的事物的紛繁複雜性足以磨滅你初期的興趣,the devil is in the details。只有當所有你認為的興趣被磨平,具備了專業性之後的興趣,那才是真正的興趣。強調興趣驅動不如強調利益驅動,我相信絕大部分琢磨著想轉行計算機的肯定不是因為內心深處那團熱愛計算機的執著的興趣之火,而是那看起來還算光鮮的薪水吧。套用一句挺流行的韓寒電影里的話,小孩子才談興趣,成年人都講利益。
三,如果你已經在自己本專業浸淫一段時間了,你是否願意放棄本專業的一切從零開始嗎?我前面提到過很多向我諮詢如何轉計算機行業的人最後都是試了一小段時間之後就不了了之了。他們大部分人都在自己本專業浸淫有一些時間,轉行的機會成本也比較大,在試水一段時間之後衡量一下投入回報比和轉行的未知性往往都會放棄。這點也說明,男怕入錯行,轉行要趁早。
四,是否願意付出相當程度的努力?對於非計算機科班的人來講,能否付出相當程度的努力是決定最終能否轉行成功的關鍵,對於非計算機專業計算機基礎又薄弱的人來說,儘早度過蒙逼期(什麼是蒙逼期後文會提到)的關鍵也在於努力程度,意志力上面。用上幾句名言吧:
哪裡有什麼天才,我只不過是把別人喝咖啡的時間用在了工作上。(魯迅)
絕大部分人的努力程度之低,遠遠達不到拼天賦的程度。(知乎名句)
比你更優秀的(科班計算機的)人都那麼努力,你一個轉行的還想著不付出什麼太大努力就和他們站在同一起跑線上嗎?(自創)
如果你對以上四個可行性分析的問題都有了明確的答案,那麼你就已經清楚你是否可以繼續轉行計算機這個計划了。如果答案是繼續,恭喜你,你已經具備了這個行業的基本素質,你已經不是0而至少是一個1,接下來就是看在這個1後面能加多少個0了。
可行性分析的最後一步,是評估自己當前的計算機水平。我將它初略分成了三類:計算機小白,有一定計算機基礎,有較高計算機水平。
對計算機小白來講,轉行的初期的努力要度過一段不短的迷茫期,我稱它為蒙逼期,也就是「聽過很多道理,依舊過不好這一生」的那段時期。對於過來人是常識的東西對於小白來講其實也是很陌生的東西,而且由於計算機是一門實踐性極強的學科,聽過看過很多概念性的東西,如果沒有實操過,依舊是懵懂的。拿學車做比方,蒙逼期就是當你第一次坐在駕駛位上師傅告訴你怎麼發動車,怎麼踩剎車油門,怎麼轉動方向盤,然後你啟動車的一剎那車開始動了,此刻你心裡的那種感覺(車真的動了!是我在開?怎麼好陌生?接下來該怎麼辦?)。開車尚且如此,就更別提掌握計算機這一門實踐性極強的系統性學科了。計算機小白想順利和儘早度過蒙逼期,不建議純靠自學。計算機學科的許多不同科目很多時候是相互依存互相印證的,並非存在嚴格的拓撲排序關係,許多小白也就是在學A發現需要學習B和C,轉而去學B,C然後發現先學個D更好,然後學D的時候發現也有A的部分的環路中暈頭轉向最後放棄。對於小白來講,加入一個良好的學習和實踐計算機的環境,不管是現實環境還是網路環境,大家一起學習,或者學會傍大腿,跟隨身邊的計算機牛人學習,效果遠勝過自學。
相對於計算機小白來講,有一定計算機基礎的人會有不小的優勢,因為很多時候他已經知道了自己的方向,只要朝那個方向努力就好。當小白還在糾結先學哪一個語言,糾結於各種語法的時候,有基礎的人已經知道語言並沒有那麼重要,數據結構演算法設計模式才是王道;當小白還在那吭哧吭哧的看著一本本諸如21天學會Java的書,看過之後感覺什麼都懂但是什麼又沒有抓住的時候,有基礎的人已經在電腦前敲著一行行的代碼,因為他知道計算機是一門實踐出真知的學科,只有動過手的才記得牢;當小白自己辛苦的摸索,堆出了各種代碼和按照自己的想像造出各種輪子完成一個school project還覺得挺美的時候,有基礎的人已經知道如何避免重複造輪子,通過比較各種開源的輪子的優劣選擇適合自己的輪子並且用較高效的代碼組合在一起實現自己的需求,順帶著對real world的project有了更深的了解。對於有一定基礎的人來講,這時候按部就班的按照學校的課程上課對他才是束縛,按照自己的節奏自學和多做項目,公司里的實習項目,網上的開源項目,都是快速提高水平的途徑。
而那些已經具備較高計算機水平的非計算機專業的人,他們可能是信息學競賽或者acm競賽的佼佼者,也可能是在較早時候就已經系統學習過計算機學科的許多基礎知識並有過豐富的項目經歷。某種程度上他們的水平已經高過不少計算機科班出身的人,他們如果要選擇在計算機行業繼續發展,主要就是要儘早確定自己的工程和研究方向,沿著這個方向深入下去。本文的參考意義對於這樣的人就比較有限了。
2.找准目標,需求分析:
非計算機專業想轉計算機行業,最終的目標需求也無非是想在這個行業謀得一個理想的職位。根據自己的經驗和理解,我整理了下圖:
雜牌公司:包羅萬象,它可能是網吧網管,photoshop製圖,製作各種網站前端的靜態網頁,小公司的IT工作等等。絕大部分知乎er對此肯定是不屑的。但其實從數量上來看此種類型的工作應該是佔據大多數的,因為其較低門檻,很多時候憑藉簡單的自學或者各種類型的培訓班就可以讓一個門外漢獲得一技之長,勝任這種工作。但這種工作是不太推薦的,因為起點和向上發展的空間都太小。
小公司(及一些不知名大公司):水平參差不齊,對技術水平的要求和將來可能的發展空間方差巨大不好一概而論。不看重學歷和出身,是否具備相應技術要求能否即插即用是重點。未來發展全憑自身野性生長是否符合公司發展和老闆口味。
二三線大公司:work life balance相對較好,薪資待遇達不到業內領先水平但是也還算不錯。看重學歷和出身,是否重點院校或名校畢業會是簡歷篩選的一個重要因素。溫水煮青蛙,長期在裡面如果不注重自我提高可能會落伍。不少傳統IT大公司都可以歸於此類,比如SAP, IBM, HP等。
一線互聯網公司: 比如目前國內的BAT,還有未上市的小米,螞蟻金服等,以及國外知名公司如MS,google在國內的分部之類。技術至上,對能力要求高,這裡的能力並非專項技能要求而是整體的問題解決能力和思維能力。考察方式特彆強調動手能力和快速分析解決問題的能力。由於對能力要求高所以往往能夠成功應聘的也都具備出色的學歷和專業背景。加班文化嚴重,戲稱血汗工廠,拿命換錢之類。由於已經具備較高起點且內部競爭激烈所以發展空間居中。
國外一線互聯網或IT公司,這裡的國外主要指美國。比如灣區的FLG,四小龍,seattle的MS,Amazon之類。大體和國內一線比較類似,但一般來講work life balance相對好些,由於在國外所以對英語及溝通能力要求較高。
知名研究院:比如MSRA,Google研究院,百度實驗室之類。基本是 博士畢業並且在某個領域有出色表現。
創業公司技術合伙人:具體特點見上圖。
需要說明兩點:
1. 上述分類是一個大體的分類,並沒有包含所有可能的工作類型(比如投行IT,自由職業者等就不在分類範圍內)。做上述的分類的主要目的在於希望看的人能夠清晰自己的目標。
2. A到G的難度並非就是遞增的,而是對求職者期望不同。比如能成功應聘C甚至D的卻不一定符合B的要求。
目前大家談論的互聯網工作似乎更多集中在D和E類。單就這兩類公司來講是僧多粥少(對的,你沒看錯,是僧多粥少,知乎上這種人一抓一大把那是倖存者偏差)。但是總體來講,七類公司的數量還是不少的,所以我前面才說:
計算機是一門系統性的學科,只要結合自己的現實情況,付出相當程度的努力,就能在這個行業找准自己的定位。
3. 付出努力,執行計劃:
現在假設你是一個已經通過了1 的可行性分析並且也有了2 里的某個目標的計算機門外漢,接下來該怎麼執行呢?
先舉上幾個例子:
情況A:一個學校不太好,文科專業的學生,如何努力執行計劃畢業後作為創業公司合伙人成功創業,走向人生巔峰呢?
答案:問馬雲去。
情況B: 211普通大學,非計算機專業,想畢業後去BAT工作,但本人不想太拚命,應該怎麼做?
答案:不符合可行性分析中的是否願意付出相當程度的努力一項。
再回到前面強調過的那句話:
計算機是一門系統性的學科,只有結合自己的現實情況,付出相當程度的努力,才能在這個行業找准自己的定位。
結合現實情況是前提,付出相當努力是手段。情況A忽視了前提,屌絲逆襲的毒中的太深;情況B忽視了手段,不經歷風雨,怎能見彩虹?
情況c:知名大學非計算機專業,有較好計算機基礎,參加過信息學競賽和acm競賽並取得不錯成績。大學期間繼續積極自學計算機並獲得去微軟實習的機會,畢業之後通過微軟面試留在了微軟。
這就是文章一開始提到的w君的經歷。他的執行計劃是:在有相當不錯的計算機基礎的前提下繼續積極自學,抓住去微軟實習的機會開闊視野增加實際項目經驗,畢業之際手握幾個offer最終選擇留在微軟。
情況d:不太好的學校非計算機專業畢業。有志於從事計算機行業,在懵懂中前行,先是去一些不知名公司。期間發現自己對計算機網路這一塊的興趣,開始漫漫考證路,並跳槽輾轉多家公司從事網路工程師的工作,最後到了華為。
這就是我那老家發小的經歷。他的執行計劃是:先就業再擇業,在過程中發現自己的興趣並不斷在某一個方向努力。由於之前先天的學歷和專業背景的不足,他的這條路相對來說曲折不少。
情況e:知名大學非計算機專業畢業,大學期間申請美國的非計算機專業繼續讀碩士。期間發現自身專業不吃香而計算機專業還不錯。下定決心申請轉計算機專業成功,從此開始被虐的人生路:繁重且複雜的課程,周圍大牛同學們的無形壓力,做不完的school project。好在憑藉過人的意志和還不錯的腦瓜都一一挺過來順利畢業。找工作的時候發揮自身從小就是中國考霸的優勢,努力刷題,最後拿到google的offer。
這就是妹子x的經歷。她的執行計劃就是:申請美國的計算機碩士,碩士期間在一個良好的環境中努力提高自己。她的目標明確,執行手段清晰,當然最後的成功也與她自身的綜合素質相當不錯有關係。
以上說的各種情況是要再強調一點:執行計劃是要在結合自身情況和設定合理的目標的前提下來制定的。
先來看一共會有哪些執行方法吧:
說明幾點:
1. 以上分類及目標的對應關係是一個大致籠統的統計,請勿吹毛求疵對號入座;
2. 真正執行的時候一定是以上多種結合著去做,只不過是有主次之分,這也是我比較想強調的一點:明確自己真正想要的,在適合自己的基礎上執行真正有用的執行計劃;
比如如果一個人的真正目標是去國外一線公司工作(前提是他有還不錯的綜合素質),那麼在經濟情況允許的情況下他應該毫不猶豫的去準備和爭取國外知名院校的留學機會。以我的親身經歷為說明,當年在學校的時候一直有出國的想法,托福和GRE都考了但是因為一些原因最後選擇了國內工作,後面雖然輾轉來到了灣區,但畢竟是走了彎路。
3. 之所以會有每個執行計劃的適合對象的一個大致分類,也是希望想轉行的人多在基於自身基礎上制定計劃,目標盡量要切實可行。
比如一個普通院校非計算機專業的人目標是進入一線公司。相對於他的目標來講他的先天基礎稍顯薄弱。他應該怎麼去準備呢?如果他自身對自己的評估是擅長中國式考研(保研)的,他應該設法進入一個知名院校的計算機專業,這樣成功的概率會大上不少。但是如果他本身並不是考試的料,他就不宜在這一塊耗費無用的時間,而應該全心全意提高自己的計算機水平。有可能在他畢業的時候他還是沒有去一線公司的實力或者機會,但是只要堅持自身能力水平的提高不要掉隊,不短的將來還是有很大的機會的。
4. 如果可能的話,一個知名院校的科班專業的性價比,或者說去較好公司的可能性還是高於自己自學的。一線公司的確是更強調能力,可對於普通人來講,往往能力在一個有許多不錯的對手一起合作和競爭的環境下才可以培養出來。
至此洋洋洒洒寫了這麼幾頁,希望能夠給那些有志於轉行到計算機行業的人士有一定幫助。
也許你本來躊躇滿志的想轉行計算機,但是發現自己並不符合可行性分析。沒有關係,人生的路很長,轉行計算機很多時候只是你當下一個貪心演算法的選擇,堅持你自己的行業,或許才是你的最短路徑選擇;
也許你之前是一片迷茫,但看完之後希望你可以儘早建立對自身的正確認識和早日確定未來的目標,並且在眾多的可執行計劃的搜索中基於自身和目標做一些剪枝,專註於最重要的那些;
也許你在未來的執行計劃中還是會有失敗,會有反覆,會有懷疑,會有更多的迷茫,但是希望你能堅持不懈的努力,在失敗/懷疑/迷茫中繼續朝著目標前行;
也許你最終也沒有達到自己的理想目標,但是在不斷進步的過程中,你已經做到了最好的自己;
最後送給大家兩句話:
道路是曲折的!只有結合自己的現實情況,付出相當程度的努力,才能在計算機行業找准自己的定位。
前途是光明的!只要結合自己的現實情況,付出相當程度的努力,就能在計算機行業找准自己的定位。
共勉。
若想轉行做技術,考研、自學都可以,但你首先要有興趣。
我以我的經歷給題主一些建議,但是我的每條建議都是建立在「對計算機、互聯網充滿興趣」這一前提上的。我本科讀的是物流管理(經濟管理類專業),現在大四。我在2015年秋天決定轉行,在2016年夏天找到工作,如今在杭州一家醫學互聯網公司做後端開發。一、轉專業或轉行的原動力,一定要是興趣驅動,而不是利益驅動。(注意:這是判斷你要不要轉專業、轉行的關鍵因素)
我是靠著興趣自學,然後轉行成功的,而且我對計算機、互聯網的興趣確實已經持續很多年頭了。
所謂興趣驅動,就是要求你對計算機或互聯網有著充分的好奇心和足夠支撐你學習的熱情。
有些人,他們使用電腦上網就是聊聊天看看劇、查查資料打打遊戲,如果還會P個圖,那就已經很了不起了。但有些人,他們就是很在意一個網頁為什麼可以排版得如此美觀,在意一個有趣的小程序到底是怎麼做出來的,在意為什麼貼吧大神可以把照片中史泰龍的頭搬到曾軼可的身體上。後面這類人,很容易將好奇心轉化為興趣,然後將興趣轉化為能力,甚至內化為價值觀。而且興趣的驅動有一種獨到的好處,它會給予你十足的動手能力,以及動手後的成就感和歡欣。「成就感」是個很了不起的東西,它如果和興趣相輔相成、共同驅動,你的學習速度會提高一個量級。所謂利益驅動,則是認為自己沒什麼可以拿出手的吃飯的本領,以為IT待遇高、門檻低,是一條好路子。現在市面上一大堆培訓班出來的「程序員」找不到工作,叫苦不迭,說到底就是奔著這條高待遇的路子來的———其他的先不管,我先賺著錢再說。若你是這種想法,轉專業、轉行前一定三思。
畢竟興趣才是最好的老師,換句話說,「你要有一顆Geek的心,而不是功利的心。」
二、善於自學,杜絕一開始就想要拜師、培訓的想法。
這一點我想首先說一個小故事。我之前是一名Beatbox口技表演者,總會有同學或者陌生人,在得知我擁有這個技能後,立刻就要認我做師父,恨不得我可以嘴對嘴,啊不,面對面地給他們講課,他們希望我能夠讓他們速成。
實際上,Beatbox的基本技巧,網上的教學視頻數不勝數,而且他們還講得比我好,比我更專業。但是,我的「徒弟們」卻鮮有人能夠耐心地去搜搜教程、跟著視頻認真得學一學。同樣,想學計算機技術,網易公開課、Coursera、慕課網、實驗樓,這些都是自學的好地方,而且花銷很小。何必要到技術社區苦苦地尋求一個師父呢?何必丟一筆錢給培訓機構呢?
但是,自學一定要學得系統,要有一套自己的流程,而且一定要善於使用搜索引擎,這個我後面再講。三、善於使用搜索引擎,這是一個人非常優秀的特質。
倒不是說一定要用谷歌,也可以用百度(雖然黑百度是知乎的政治正確)。其實一定程度上來講,Google、Baidu、Bing、搜狗都可以。當你善於使用搜索引擎查詢自己的問題時,用哪個引擎根本不重要,因為一個引擎搜不到答案, 你就會換一個引擎,直到搜出自己想要的。======2016-11-24 更新=======
四、關於系統化學習、自學的流程。
前面有位答主提到過,自學最好不要按照科班的課程設置來,他說得很對。
我們要選擇「興趣+成就感雙驅動」這種學習方法,就要在一開始最大程度地避免能澆滅自己信心的東西,基礎原理可以在入門以後再進行學習。科班的計算機課程都是從「計算機組成原理、數據結構、演算法導論、C語言、計算機通信原理」開始的,這些基礎課程有一個共性,課程中的概念大多都很晦澀、抽象,因為它們接近底層原理,十分容易讓人一頭霧水,這對自學者來說極為不利。那什麼樣的自學流程才是適合自學者的?我認為是「系統學習一門編程語言 -&> 自己給自己提需求 -&> 動手摺騰 -&> 遇到問題 -&> 逐一解決 -&> 理解原理」,我就遵從的這條路線。先說說這條路線的好處。很多人在入門了一門編程語言後就變得手足無措,他們根本不知道自己到底能做什麼。而自己給自己提需求,就可以驅使自己邁開步子、動起手來。我舉個例子:大學裡的班長有時候需要收集班級同學的信息,比如寒假幾號離校。通常班長的做法就是,班級QQ群里或微信群里吼一聲:「麻煩同學們把離校時間私聊給我!」。最後自己手動整理成表格。假如我是一個剛學會PHP的班長,我可以想到,利用PHP+資料庫做出一個表單網頁,去收集班級同學的信息,然後馬上動手去實現。動手的過程中我可以慢慢掌握前台如何正確的將數據傳輸到後端、後端如何將數據儲存到資料庫中。我還會想著將資料庫的信息如何導出為Excel表格,於是我打開搜索引擎搜索自己的疑問,從而了解到一個叫做PHPExcel的PHP庫,簡單學習一下官方提供的使用方法,就可以將資料庫中每人的離校時間數據轉為Excel表格。做完這個網頁,不光自己省心省力,而且如果有同學說一句「班長還會寫網頁啊?」就更能夠讓自己心裡美滋滋,這就是「成就感」。接下來不斷循環「提需求 -&> 動手做 -&> 遇到問題 -&> 解決問題 」這個過程,剛入門的自己也就慢慢成長起來了,起碼不再手足無措了。那麼如何系統地學習一門編程語言呢?首先,你必須要知道編程是嚴謹的,要本著一顆嚴謹的心去學習。你最好按照這個順序來,大部分的教學視頻也是這樣來的:- 了解這門編程語言的基本語法。
- 了解這門語言的基本數據結構(整數、浮點數、布爾、字元串、數組、列表、字典等)
- 如何定義變數及其數據類型(有的語言不需要定義數據類型),如何給變數賦值。
- 如何正確使用這門語言的邏輯語句(If、For、While)
- 如何運用這門語言的常用函數。
- 如何自己寫一個自定義函數,如何給自己的函數設置參數。
至此,你已經可以自己做點東西了。然後:
- 理解面向對象,運用面向對象。
- 學會Debug,學會查錯排錯。
- 學會使用各種已有的類庫。(前輩栽的樹、造的輪子)
- 學習一門框架。
- ……
上面提到的這些,網路上的教學視頻基本都會講到。我強烈建議你在聽課的時候,打開搜索引擎放在一邊,時刻準備著搜索自己不理解的問題。同時準備一個編輯器,老師敲什麼代碼你就敲什麼代碼。
學習的過程中不要好高騖遠,不要剛學會基本語法就想著上手框架。這樣會走很多彎路,這就不算是「系統學習」了。若你在學習的同時,想要給自己提一些小需求,那麼你可以儘管提、儘管做。首先捋清楚思路,至少動手的方向不要錯。然後腦中構思實現過程,逐一去實現。途中若遇到基本功的問題就回去溫習基本功,遇到超綱的問題就去求助搜索引擎。直至你完成了自己的需求,「成就感」和歡欣就會讓你更加堅定這條道路。五、關於方向的選擇。
其實我在準備寫這一條建議的時候我就後悔了,實在是誇下了海口。因為我只是一個剛轉行成功、剛踏入職場的新人,而且現在只在做開發崗,運維、測試等崗位都還沒嘗試過,所以對於方向選擇這個問題上我實在不敢給出什麼人生經驗。
先了解一下目前市面流行的編程語言吧!搞清楚每門語言的適用方向(像Python這種有多種方向的要都了解下),是Web開發還是移動APP開發或者桌面程序開發?然後到招聘網站看各自適用崗位的崗位職責,了解具體的工作內容。多結識一些行業前輩,他們會給你很多有用的建議。我是因為7年前就開始寫自己的獨立博客,所以會認識一些互聯網行業的朋友,在轉行過程中他們幫了我很多,感謝他們。多到技術社區逛一逛,最後決定選好什麼語言。一定不要猶豫太久(我很後悔大三才做轉行的決定)。本答案還會不定期更新。最後祝各位都能轉行成功,共勉。處女答!這個題目太適合我了!一個誠懇的過來人給你分享一下個人經驗,僅供參考
背景:本科江蘇一個211,本想報的物聯網,結果調到了某化工專業(我跟你講,這個辣雞專業,老子能噴三天三夜!),轉專業極度困難!大學以前沒學過編程,大學課程涉及編程的只有VB,大二一次過了江蘇計算機二級和全國二級,這是我考研前僅有的編程經驗……
也正是大學這個Vb課,讓我喜歡上寫代碼,班裡其他同學都很蒙逼的VB課,我可以輕鬆愉快地完成任務,最後VB考了年級第一,讓我長時間覺得自己寫代碼是有天賦的!但是在考研前從沒想過當程序猿,所以也並沒有自學過啥……現在:浙大軟院雙證碩士,明年畢業,現在已經簽了稅前年薪2*W+的某IT公司offer(害pia公司的保密協議……馬賽克工資了,抱歉(._.))
途徑就是考研!轉行最首要的肯定是興趣,這個別人也說了,畢竟沒有興趣,考研那麼多專業課,自學起來真的會崩潰!興趣是你踏上轉行之路的原因,我主要就講我如何轉成功的具體案例,感覺已經是一個極端案例,以最短的時間,最低的分數,最針對的學習內容,考上研究生!轉行成功以來,身邊6 7個同學問我零基礎入行經驗,簡直成為一個專業引人入門的老司機!
我是14年4月23日才有考計算機研究生的念頭,14年12月27-28日全國統考,考過研的應該都知道,這個時間開始已經算晚了,不少人數學都輪一輪了,何況我是跨考,5門專業課(C語言,數據結構,組成原理,操作系統,計算機網路),概率什麼的都沒學過,高數大一上的數二考綱內容,線代還是考查課……幸好當年軟院改了考綱,組原不考了,考剩下4門,不然估計我已經在工廠染布了……另外,感覺自己學習能力還可以,中考當年是全市榜眼,高考不失誤的話差不多是浙大的水平。考研最後考的333,那年浙軟分數線330,史上第一次刷一志願考生,感受一下,大家量力估計自己的複習時間怎麼複習的經驗補在最下面,不需要考研的可以愉快地返回
——————————我是可愛的分割線——————————
從上面情況可以看出來,我在考研完之前,都還是徹底沒寫過代碼的人!
在本科畢設老師虐待下,研究生錄取後也沒時間預習多少!真正接觸代碼是15年7月開始。7月給老師打工做了個小java web項目,項目是最好的學習方式,比看書實際,也有工作壓力,還能融會貫通。為了做這個項目,學了前端基礎html,js,css,angularjs,後端java,spring,springMVC,maven,hibernate,其他還有點MySQL,svn之類。程度也就是以實現功能為目的,系統的根本來不及學,但是能知道什麼技術用在什麼場景,知道需要學什麼方向。這是我沒接觸真正工作前最迷茫的點,不知道該學什麼就我春招找實習和秋招找工作經驗來看,如果想轉行進普通公司,做普通開發,學我上面提到的內容就很足夠,java開發是缺口最大的。網易雲課堂有個《30天輕鬆掌握javaweb視頻》的課,當時跟著這個課看,感覺還可以,雖然技術老了點,但是手把手跟著寫代碼入門,覺得還不錯9月入學修的大數據方向課程,除了java高級技術、uml,敏捷迭代等公共技術,還學些hadoop,spark,hive,hbase等大數據架構與生態方面技術,數據倉庫,機器學習,數據挖掘,數據可視化等數據分析方面技術。很慚愧,沒做過實際的項目,課程時間也比較短,光聽課感覺掌握的技術還很淺薄,實習與今後工作恐怕也不做這方面,沒什麼值得分享的。
但是這些課能讓我知道,大數據方面的職位,業界現在的技術要求是怎樣,我可以往什麼方面發展等,看得到身邊的同學同行都在做什麼,真正的一個工程一個產品是怎麼產生的,這都是自學完全沒有的資源與環境,這是考研走科班的一大好處。
考研的另一更大的好處是,學校平台不一樣!我真不是故意給浙軟打廣告,普通211甚至一般985的本科,BAT華為微軟因特爾等各種聽過名字的大公司,都是不太敢想,但我們學院出去找實習,基本都能拿到幾個大公司的offer,就算水平未必特別好,但是人公司認為你是C9科班碩士,還是願意相信你的基礎水平和學習能力,給你一個試試的機會。每次想到如果本科沒走這一步,直接就業說不準也就年薪5萬不到(真的!大四找的某服裝公司的供應鏈崗,算是我們專業還不錯的offer了,就給3500!本科生太特么不值錢了!),而現在能多20W左右…………………
最後說一下實習感想!我是非常感激我司的招聘要求,學歷學校嚴格要求,傾向計算機背景學生,同時指標要求百分之多少跨專業的,樂意培養,注重潛力,有眼光!找實習時我準備的目標是BI分析師崗,知識儲備包括sql,資料庫,數據倉庫,OLAP,機器學習等方面,hadoop生態圈的組件稍微熟悉一下,java不會,Python不會,C不會,感覺自己簡直是個垃圾……我司來學校統一招聘時,面試官專業不對口,一面做了3道C的填空題,一題都沒對→_→當時我覺得我跪定了,但是聊聊項目,看我是跨專業,還是大四邊上課邊考成功的,可能感受到我的潛力,給了二面機會,最後稀里糊塗拿了實習offer
但是我司用人制度有一點感覺不太友好,應屆生丟崗位比較隨便,喜歡全才,項目需要啥就做啥…我剛入職給了半個月搭搭小工程學java,然後寫了3 4個月前端順便寫點後端,近2個月又在用Python搞openstack網路的項目,我這種大菜雞趕鴨子上架,還設計了項目的分散式架構,給組裡新來的浙大數學系博士分配任務講代碼………夠我吹幾個月的B了!
永遠都要學習,不太會讓員工一個技術塊面走到精…可能是產品線這種項目總在變化的部門的特色吧!但也算是有失必有得,雖然我做的雜,好在學習能力還不錯,抗下了壓力,工作成果跟得上需求,今年我司校招待遇飛躍式提升,我所在的部門也在大幅度擴張,校招轉正拿了個我們學校和學歷檔次的頂薪,美好人生就要開啟了呢!
總結:程序猿真的是個極其美好的職業!至少收入灰常美好!作為普通人家出身的打工仔,剛畢業就能跟我男票一起年入幾十萬!成家立業買房子指日可待!有多少工作能有這種待遇!轉!轉!轉!
~~~~~~~~~~~~二更分割線~~~~~~~~~~~~
補充考研經驗!按時間線來擼吧!4月底-5月中:看專業課。因為還沒真正決定轉不轉,畢竟在外行人看來,妹子去當程序媛…那是有點想不開…… 第一周看完一本 零基礎學C語言 之類的書,成果:能看懂小題目那種C的代碼;接下來兩周看數據結構考綱教材,成果:看教材太難懂太沒重點了!只大概知道有些什麼演算法,知道啥是鏈表啥是樹啥是圖…這兩周沒卵用……5月中-6月初:擼期末考,還出去玩了一趟,無進度,罪惡!倒是開始背單詞了,用的拓詞APP,每天半小時,最後經驗表示:辣雞APP!根本記不住!看選項選的出,沒選項不認識!
6月初-6月底:擼數學。看了一周高數教材,一臉蒙逼…用李永樂複習全書看數一,大概看了前6章。建議:時間緊就別看高數教材!又散又沒重點!李永樂教材知識點梳理的不錯,大一學的蒙蒙的,看全書有種豁然開朗的感覺!
7月:報的文都數學考研班擼數一。老師用歷年真題按知識點順序講,方法很棒,可惜時間緊,講的快,知識點還沒看完,後麵線代概率只能一臉蒙逼抄答案了…建議:考研班如果是老師坐鎮講,可以報一個,好歹強迫自己早起,保證學習時間,前提是自己擼完一遍知識點。如果是看視頻的,班就別報了……
8月:在家擼專業課。罪惡,早上起不來,中午睡3小時,邊看電視邊學……自制力太差…… 專業課極端應試學習經驗:TB買個當年的新東方408視頻課!再買王道4大本!視頻對著王道看!先只看知識點不刷題,知識點看不懂再翻翻考綱教材!不要看教材了!太低效!當時我還在糾結報北軟還是浙軟,浙軟考綱也還沒改,還是數據結構,組成原理,操作系統,計網…一周過一門…成果:知道考綱中概念性原理性的知識點,碰到計算的,代碼的,做題還是有點困難
9月:擼英語數學。回校學習,邊上課邊學(麻痹又想吐槽我們專業了!大四19個課時(一天9課時時間)!每天早上都有課!還偏偏嚴查到課率!節節課點名!還不讓看考研書!媽的!而且大四上我的一門商科二專還有2晚的課,時間還是灰常緊張…)回校有舍友一起考研,好歹有人監督一起早起了!6點半起床,7點到自習室,8點上課前刷完兩篇英語閱讀真題。上午上課偷偷背單詞,但也沒記住多少……下午小睡一會,1:30-2:00起床,下午晚上刷數學。數學還是用複習全書繼續過一輪,做的全書課後題。課後題質量不太好,學弟學妹時間緊不建議做。9月下半月過線代,看張宇的視頻,推薦!比全書更豁然開朗的感覺!
10月:擼數學英語政治。前半個月上午繼續英語,擼完一遍近十年的英語閱讀就沒做了…英語都是在吃老本,複習經驗不建議參考。下半個月早上看政治視頻。政治建議網上找當年的考研班的視頻,7 8期,一共十幾個小時的那種精講版,新東方那種課時很多很細的不要看。教材用的《風中勁草》知識點,還沒開始刷題。成果:馬原那些方法論要理解,近代史和毛概能連起來擼出時間事件表,思想品德那個什麼的隨便記記。下午晚上刷數學,上半月跟著張宇的視頻看概率,也講的很好。下半月開始刷李永樂那套書里的真題詳解,好書!按知識點組織的真題!我只刷了一遍,有時間的建議反覆刷反覆看!
11月:早上有點起不來了,直接8點上課,早上做《肖秀榮1000題》,做歷年真題,順便背單詞。1000題還是很棒的,做完對知識點又記憶深刻一點!下午晚上前半個月還是數學,繼續刷真題。這時候還是有不少做不來,有時候一套卷才60多分,人生灰常惆悵…下半月開始專業課二刷…定志願前也感受到408恐怕力所不及,選了專業課難度低點的浙軟。因為專業課針對性資料比較少,反覆看了看重點的樹圖排序查找演算法,刷了王道3本的課後題,買了C語言指定教材的配套練習題刷完,還從浙大圖書館買了軟院歷年真題刷了。我浙專業課重點比較清晰,難度也比較基礎,感動
12月:全面複習,拼死拼活!英語做了10年的真題卷,背了3篇作文模板;政治買了本肖秀榮時政知識點,也沒怎麼看…做《肖秀榮最後4套卷》,好像是這名?4套還5套來著?所有大題答案背下來,時政就靠這4套卷了,好像基本都能壓到事件;數學還是反覆做真題。講真,複習數學能保證每次做真題都有130+,就夠了,奇怪的題型都不用看,做通真題就行,歷年考研題套路都一樣;專業課把自己的筆記看了一遍,真題其實也就那麼3份卷子,沒花太多時間。
最後成績:政治69英語63數一93專業課108…333,門門都是飄過的分數…數一大概粗心了,比自己感覺少了十幾分…主要還是刷題沒刷熟練。
重點建議是:專業課走王道和視頻,不看教材;數學走李永樂複習全書,張宇視頻,往死了反覆刷真題,不看教材;政治找當年考研培訓班集中授課的視頻,用《風中勁草》,做肖秀榮,背肖秀榮…
以上都是迫於時間緊不得不採用的複習策略,時間多的看看教材還是有用的…吧……還是建議考研的小夥伴要用比我更多的時間,我英語靠吃老本(大一過六級,480+,也不算太有優勢的老本,主要單詞妹有好好背,考綱單詞差不多隻記住一半……=。=),政治和專業課靠還可以的記憶力…不要看我這點時間飄過,就讓自己有僥倖心理,覺得更少時間說不準也可以…還是要紮實地複習啊同志們!
最後的最後!感謝看官,碼這麼多字,能對大家有所幫助,都是我的榮幸!凌晨5點,剛碼完python web應用半吊子框架(一個星期前開始自學),心情略激動,怒答一個!
答主情況:本科211,非計算機專業,工科,自學,轉行成功。先說結論:一旦決定轉計算機,那麼就從現在開始自學;在家庭條件允許的情況下優先選擇考研!——————————————————————————————抱歉,拖到兩天後才更新。由於時間有限,我只能長話短說了(主要是轉行經歷、轉行體會和一些感概)。1、答主經歷:決定轉IT是在畢業很久很久以後。由於對培訓班效果沒信心,以及自我感覺在計算機方面的興趣和小聰明,決定自學(主要是窮,報班要脫產培訓4個月左右,SZ這邊學費大約2W)。我記得從我決定自學開發那天起,我每天的生活就是早上八點起床,白天正常上班,下午五六點準時下班,花30分鐘時間吃飯回宿舍開電腦,然後看視頻或者看書敲代碼,凌晨兩三點才睡覺。周末很少出去,都是一個人學習。這樣的情況持續了大約兩個月,兩個月里,我看完了某培訓班的一整套視頻,和比較厚的《Android瘋狂講義》,把基本java語法和Android基礎敲了個遍。算是過的比較充實的一段時間:白天上班讓大腦得到休息,晚上敲代碼讓身體得到放鬆,還能清晰的感覺自己每一天都在進步。然而等我自認為把這些基礎都熟悉掌握以後,準備去網上長見識的時候卻懵逼了!因為更本沒人討論四大組件基本用法, 沒人討論頁面如何跳轉,沒人討論項目分包是什麼鬼。有的只是fragment高級用法、各個圖片載入庫的使用與源碼解讀、多層嵌套問題的解決辦法123...總之,在我還只會走的時候,我卻發現大家都在跑!有那麼幾天,我深受打擊,我開始懷疑自己一直以來自恃的小聰明,甚至開始不確定自學轉行這條路我還還能走多遠!可是現實生活逼我從這種狀態下走了出來,我開始重新規劃,我從網上找了一張android開發知識架構圖,圈出各個知識點的重要性,按需排序學習。這個時候,是很痛苦的,因為對於一個非科班的我來說,需要了解的太多太多了,往往一個知識點裡夾雜著好幾個相關的知識點等著我去百度、去揣摩、去理解。這及其耗時間與精力,並且消磨我的意志和信心。我明顯的感覺到自己過於浮躁了,以至於我沒能靜心完成該在這個階段做完的功課,導致我的基礎知識體系並不健全(目前仍在惡補這部分的知識)。這階段完成後,對於一個即將轉行的我們來說,至少應該懂得這個行業究竟在幹些什麼,對工程項目有一個模糊的整體概念,對這個行業所涉及的大部分技術,該掌握的要掌握,該了解的要了解,至少要聽過,或者知道這玩意兒幹啥的吧。
接下來的時間,就是去學習使用常用開源庫做自己的項目了。自學的話,這時候是有一定困難的。因為我既沒有現成的後台介面可以調用,也沒有人能幫我篩選出一個難度適中的開發項目,寫項目過程中遇到的任何困難,都需要獨立去克服和解決。然而這是每一個自學的人所必須熬過的坎,同時也是轉行所必經的坎。正是由於提前等邁過了這道坎,所以多數自學的人在公司正式工作的時候,比那些培訓班出來的人,更容易適應並且生存下來!項目初步做完之後,簡直成就感滿滿啊,不過我清楚的知道,這就是一個demo!什麼設計規範、什麼編程規範,統統沒有!
既然是轉行,那麼重點就是找工作了,可是這一點我能說的並不多。因為我是比較幸運的。總而言之就是還算順利的入了行,至於入行之後是如何度過最痛苦的前三個月,如何成長又是另外一回事了,個中幸酸,經歷過的自然懂。從準備轉行到入行,共計八個月左右,除去長假、正常工作耽擱、自我荒廢、考證等時間外,估計四到五個月吧,各種書籍淘寶電子資源等花費四五百元左右。
2、接下來就題主的問題和準備轉行同學普遍的問題說說個人的看法吧。(1)關於自學還是培訓。我是傾向與自學的。因為花費不大,不需要脫產好幾個月,還能鍛煉人的資源獲取能力、自我學習能力、獨立解決問題的能力。況且現在培訓班質量真心不怎麼樣。當然報培訓班能省去你很多找資源、解決初級問題的時間,以及適當的讓你少走一些彎路。培訓班適合剛畢業、希望急速轉行或是手頭相對寬鬆的人群,而自學比較適合自律高、自學能力尚可、對IT非常感興趣的人群;(2)興趣驅動與利益驅動。興趣驅動與利益驅動缺一不可。對於題主這類仍未畢業的學生來說,興趣驅動更重要,而對於畢業後已經工作的人來說,利益驅動更重要。我在大學期間,曾經有段時間,非常迷戀編程,並且堅持了一年多的時間。但是由於沒有感受到來自生活最真切的壓力,最後不了了之。然而畢業很久以後,當我切實感受到材化行業與IT行業在發展與待遇方面的巨大差別後,我終於下定了決心轉行,直到成功!(3)是否需要考研。結論我已經說了,在家庭條件和個人情況允許的情況下,優先考慮考研。相較與傳統行業,IT行業在我國仍還算「年輕」,具有比較強的包容性,任何人,不論是何專業,你仍能跨過入行門檻,而且你掌握入行所需的基本技能,行業還是會接納你,一旦你具備一定工作經驗,低學歷和非科身份就顯得越加不受人重視了。這就是評論區有人說IT業「技術為王」的原因。然而,低學歷意味著你會更早的觸碰到你在該行業的職業天花板(技術和管理兩個角度來看都是如此)。在傳統化工行業呆過的同學應該知道,現在稍具規模的公司,招聘研發職位的入門門檻都已經提高到研究生學歷了!博士也是一抓一把!那些上了三十多歲的本科畢業現今主管經理級別的人也都拼了名給自己弄個在讀研究學歷之類的。別看IT業現在年輕,以其發展速度和普及速度,我想在這一點上,其步入傳統行業後塵的時間應該不會太長。另外研究生學歷入行薪資要遠遠高於本科入行薪資,讀研的「性價比」還是很高的。(4)非科班如何獲得第一份工作。這一點看個人機遇與堅持了,面試技巧也是非常非常重要的,畢竟吹牛逼工夫到位了,面試官很難再一兩個小時內斷定你到底是6K~9K的價位還是12K~15K的價位。簡歷可以適度包裝,這個社會,說穿了,人不為己,天誅地滅。還有就是多面試,多總結,實在不行放低薪資要求,曲線救國。
3、說幾句廢話或者個人體會。(1)轉行貴在堅持。沒人告訴你究竟應不應該轉行,轉行究竟能不能成功。但是,你需要明白,一旦你抱定決心準備轉行,那麼,就破釜沉舟吧!(2)大神說的話不一定對。比如你問大神怎麼學,大神一句read the fucking code打發了你。難道你真的打算靠讀源碼開始自學?難道你真要以你二三級的英語水平去讀英語原著?去看英文文檔?去stackoverflow查移位操作是什麼鬼?(3)不要沉迷於碎片化知識的學習,注意搭建自己的知識框架。blog、知乎之類的,實在閑的沒事的時候可以逛逛,要不然逛了會讓你產生一種「我學到了好多東西」、「我什麼都懂一點」的錯覺。踏踏實實看完一本《HTTP權威指南》比你翻遍所有的http話題相關的blog要強!認真閱讀一遍《java編程思想》,解決問題的時候你會少用百度N次;(4)搞IT,搞技術,別光看,一定要多敲,多debug,你能學到更多。
本來打算三兩句話寫完的,不過還是寫了這麼多。當時剛把python web應用debug完成,激情滿滿,看到這個話題一心準備寫個轉行自傳,也算是給後來者一個參考。然而時間著實有限(堆著七八本書沒看完,好幾個demo沒寫完,python才學一周多),所以不得不一拖再拖,壓縮回答內容。回答質量也全然不敢做保證了,望各位見諒!(如果真的還有問題,可以私信我,我盡量給予回復)我想以我申請德國瑞典大學的經歷從出國留學的角度談一下傳統工科轉計算機的問題,題主僅供參考,希望能給無數和曾經的我一樣學著傳統工科又有些嫌棄的留學黨一些建議【現在學的汽車專業是炒雞喜歡~】。德國和瑞典是歐洲嚴謹教育的代表,眾所周知轉專業是很難的,且看我如何攻破。【中介請勿轉載盜用】
扯一段廢話,答主從小喜歡玩電腦,高中時搞過一點信息學競賽,高考後已經在機房填完志願要去北航學計算機了,因為當時語文什麼的沒考好心情也比較差,覺得上什麼學校都差不多了,出門被某校「熱情」的招生老師連哄帶騙地簽了飛行器設計與工程專業,和我說學這個本科畢業最差在上海一年16w,現在想起簡直呵呵。。。後來入學考進了力學強化班,簡直是機械中的機械。儘管我現在一路折騰學了汽車專業,但心中有著很強的計算機情結。
答主現在也在探索之中,所提的建議也僅適用於申請學校。
總結一下一共有6條路可以走,後面會詳細說明並以一些專業舉例。途徑1:直接國內轉計算機專業
途徑2:在國內額外學習計算機專業的核心課,參加考試
途徑3:申請自己專業領域與計算機結合的專業途徑4:申請和自己專業擦邊的新興專業
途徑5:申請帶有計算機課程的原專業途徑6:專業不變,碩士期間額外修計算機課程途徑1:直接國內轉計算機專業
推薦程度:*****
執行難度:****
申請難度:*
這個最簡單粗暴了,相信能實現的人也不會來網上搜攻略,可能遇到的難處除了成績就是像我大一時一樣已經身處學校最強的學科,而計算機在本校卻是個不太受待見的專業,如何取捨是個問題。
途徑2:在國內額外學習計算機專業的核心課,參加考試
推薦程度:*****
執行難度:***
申請難度:**
這一點大家可能不太容易想到,首先要說明的是一般情況下國外大學對你一個專業的判定基本都是以你學過的課程為準,而不是專業的名字。這點仔細想應該可以理解,因為一個籠統的名字很難看出你已經具備的專業基礎知識,比如專業名字叫機械工程與自動化,誰知道你學過的課是側重機械還是側重自動化呢?就算側重機械吧,德國幾乎所有大學的本科階段汽車/能源/化工/航空航天/生產等等專業全都叫機械工程,學一樣的基礎課,高年級才分方向,而在國內這些專業學的內容可能差異很大。
講這麼多還是為了強調這點:你學過的課程代表了你能申請的專業。即便是機械專業,如果額外學了離散數學/計算機結構/演算法分析/自動機理論/可計算性與複雜性理論/各種編程語言等課程(僅供參考),那麼你申請CS和計算機專業學生的待遇基本是一樣的,甚至更能表達出你想學這個專業的決心。
執行時可能遇到的困難有:1. 學校政策。教務處可能不同意你修讀自己專業以外的課程,但事在人為,如果決心夠強,天天去軟磨硬泡哪怕去送禮也行。2. 課程壓力。你要為此多修很多課程,尤其國內這種班級概念很明顯的環境,一個人跑到模生的教室里去上課,可能一開始會不習慣,但還是取決於你真的是否有決心。
途徑3:申請自己專業領域與計算機結合的專業
推薦程度:**
執行難度:**
申請難度:****
其實我這裡想說的是數值計算模擬類專業,時代的發展和科技的進步讓各行各業都和計算機有了千絲萬縷的聯繫,比如以前要做實驗才能完成的東西現在用計算機模擬一下就能實現。可是為什麼我不那麼推薦學這個呢?因為我現在講的是轉行去學計算機,而計算科學和計算機科學還是有不少差別的。在德國,有一個高大上的專業,叫計算工程科學(Computational Engineering Science),幾乎都是數學+機械+計算機,強調機械與計算機的結合,聽起來高大上,但其實說白了在國內就是工程力學專業。所以說如果想轉行,轉了這種專業,其實還是在傳統行業之中。
但我要強調的是,雖然這種專業在國內被黑,但是在德國乃至歐洲都是非常強大的。對於想留在德國的工作的,這真的是一個很好的選擇。不要覺得提到德國就是機械強,這個「機械」並不一定等價於國內的機械工程專業。所以這類專業申請起來往往比傳統的德語授課機械類專業更難一些。
於是在這裡我就順帶介紹幾個這樣子的專業,首先是慕尼黑工業大學的Computational Mechacnis即計算力學。
專業主頁:Msc in Computational Mechanics: Home
這是慕尼黑工大的精英研究生項目,捧在手裡重點培養的那種,會主動給你提供科研、企業項目以及各種軟實力的培養。我記得是第一學期成績在2.0以內就可以申請榮譽學位+直博。土木類和機械類的學生都可以申請,研究方向有四個:土木工程、機械與汽車工程、航空航天工程、生物力學與醫學工程。課程的內容側重於數學、力學與編程,各種玩有限元。
詳細的課程清單:Msc in Computational Mechanics: Curriculum
截圖給出一些必修課和選修課,可以有個認識。
接著是亞琛工業大學的Simulation Sciences專業,它有自己的專業網站:German Research School for Simulation Sciences
這個專業是亞琛工大和德國於利希研究中心合辦的研究生項目,師生直接能使用的超級計算機就有JUQUEEN和JURECA,JUQUEEN是2013年於利希研究中心和IBM共建的歐洲最快的超級計算機,實力可想而知。
這個專業在亞琛隸屬機械學院,也是機械學院唯一不需要參加聯審的專業。但不要因此感到僥倖,因為他有他們自己的錄取程序,我在5月份接到了電話面試通知,通話期間被Stanford畢業的教授用犀利的英語各種吊打。。
該專業的課程設置如下,可以看出第一年基本是每個研究方向上一門課,第二年選修課的研究方向特別多:能源、過程、控制、流體力學、結構力學、生物醫學、生產、通信、材料、物理、化學、地質、計算機、數學,而在錄取時則只看重數學等自然科學以及編程背景。
親,你見過有這麼多方向的專業嗎,是不是要爆炸?這個專業其實是我途徑3里的一個特例,因為他完全可以實現轉專業。。。再帶你看看計算機方向的可選課程:
計算機視覺!虛擬現實!這些當今計算機的熱門研究領域都被涵蓋了。
除此之外,還有慕尼黑工大的計算科學與工程專業,亞琛工大的計算工程科學專業(名字是不是很繞。。哈哈),也是類似的性質,前者要GRE,算是計算力學的兄弟專業,涉及範圍寬泛一些,後者匹配度國內很難跟上,因為他們本科有獨立的專業,既學習大量計算機又學習大量機械課程。但是他們都不如亞琛的模擬科學能學到你想學的「那種」計算機專業。
途徑4:申請和自己專業擦邊的新興專業
推薦程度:****
執行難度:**
申請難度:***
這個最典型的專業就是機器人之類的專業了,比如瑞典皇家理工學院KTH的Systems, Control and Robotics時,專業主頁:Master"s programme in Systems, Control and Robotics
這個專業隸屬電氣工程(KTH在QS的世界大學電氣電子學科排名中排第16),所以我當時覺得跨度太大也沒太指望就放在了第三志願(瑞典最多總共只能申請四個志願,會出分數線,依次錄取,類似中國高考),但是當時也留意了一下網站上的要求,主要就是數學,控制,計算機和數值方法,我本科數學和數學系一起學的,有30多個學分,後三者學的不多但分數都考得很高,最後也超錄線了,其實現在也挺想去這個的。。。
這個專業有四個方向:機器人與自治系統,網路控制系統,系統與控制理論,電能系統,都不是傳統領域。
而在德國,單獨開設機器人專業且比較有名的有慕尼黑工業大學和多特蒙德工業大學等。前者是英德雙語授課要提交兩種語言證書,後者是英文授課。相關主頁:
慕尼黑工業大學的Robotics, Cognition, Intelligence:Fakult?t für Informatik der Technischen Universit?t München
多特蒙德工業大學的Automation and Robotics:Automation and Robotics/ Process Automation, Master of Science (M. Sc.)
途徑5:申請帶有計算機課程的原專業
推薦程度:****
執行難度:*
申請難度:*
正如剛才我所說的那個Simulation Sciences專業一樣,有的專業自帶CS屬性。
我在這裡要強烈安利的是亞琛工大機械學院的Verfahrenstechnik(德語授課),翻譯過來是過程工程,官網還給了個叫法叫化學工程。專業主頁:Chemical Engineering M.Sc.
這是亞琛機械學院的傳統強項之一,不過我還沒見過有人申請這個專業,可能專業名字太不吸引人了。。因為家門前是這個專業的研究所,所以上網站查了一下,結果選修課有計算機方向,課程也是亮瞎我的眼。。
不僅如此,這個專業還專門有和劍橋大學、帝國理工學院以及卡耐基梅龍大學的交換項目(注意是專業的合作,一般交換名額只分配給學校和學院的),非常贊。
除此以外,卡爾斯魯厄理工學院(KIT)的機械工程碩士也是有計算機相關方向的,而且在TU9裡面算比較容易錄取的,感興趣的可以看一下KIT機械工程碩士的模塊手冊,我這裡給出英文版的鏈接:
http://www.mach.kit.edu/download/MSc-Mechanical_Engineering_Module_Handbook_SPO_2015_valid_from_%2020161001.pdf
這種途徑可以說沒什麼技術障礙,也不需要額外學什麼課,需要仔細去學校官網看,不是很容易發現。但要注意的是,選課雖然比較自由,但要有針對性,不然什麼都學了個半吊子也不好找工作。
途徑6:專業不變,碩士期間額外修計算機課程
推薦程度:****
執行難度:***
申請難度:*
據說很多去美帝讀碩的人在走這條路,單也因為人數的暴漲導致如CMU這些學校限制選修計算機課程。不過歐洲各行各業發展還算比較平穩,所以沒什麼限制,想額外學什麼考什麼也可以去申請。
雖然我並不是很推薦,處理不得當就相當於碩士學了兩個專業,但也算比較穩妥的方式,適用於已經在讀的學生或者特別想轉CS又沒有別的辦法。
我目前想走的路有點像途徑6,但也不全是。汽車作為一個綜合性很強的專業涉及面很廣,研究生的課程設置基本是每個方向一兩門課,如動力學、內燃機、輕量化、安全與自動駕駛等,使學生對汽車有全方位理解。我的打算是走自動駕駛方向並選修一些計算機課程作為補充,也望有高人指點。【此處做了一些修改,之前的表述容易有誤解,感謝前輩@馬薩卡的警示與建議】
以上所涉及到的學校及專業是我申請中遇到的且比較推薦或者值得分析的,所提到的申請難度並不是指我列出來的具體的某學校某專業的難度,而是這個途徑總體的難度。
看完點個贊哈,謝謝捧場~
更新一下,很多人不同意我的觀點,我來解釋一下。
註:更新不適合富二代、小富即安、甘於平庸者閱讀
1. 興趣驅動
我想我們首先應該有一個共識:
- 大多數人對很多東西都有興趣,這種興趣只能叫普通的興趣;
- 普通的興趣不足以支撐一個研究方向的深度學習。
那麼來思考一下,轉行的人都是哪些人:
1. 強烈興趣者:大一大二萌發計算機方面強烈的興趣,這些人大多轉專業去了,如果沒轉成,4年足以支撐其對計算機專業課程的系統學習,也即科班學習。
2. 普通興趣者:到大三、四或者研一、二才想起來跨到計算機的人,想跨專業的原因只有一個:本專業的前途不好,歸根結底是錢途不好。即使對計算機專業有興趣,最多也只是」普通的興趣「的而已。
對於第二類人—普通興趣者,秉著快樂學習的思路,那麼我勸你們放棄。你那點興趣根本不夠看,稍微深入的理論學習或者演算法研究,就能讓你放棄。
為什麼我的回答里說興趣不重要?難道是我不知道興趣的重要性嗎?我當然知道,我之所以不強調它,是因為我知道興趣學習的弊端。
事實上,我比大多數普通興趣者還要有興趣,我從大二就樂於學習計算機專業的課程,期間我經歷了興趣學習的所有弊端:三天打魚兩天晒網 走馬觀花式的看書 對著視頻(書籍)寫(抄)項目 演算法題不會做立馬看答案……等等。
這樣的學習有用嗎?有點用:找實習和工作時可以貢獻個人頭。不信去找個實習或工作試試。
2. 利益驅動
如果你對我說的」利益驅動「嗤之以鼻,那麼我同樣認為你對未來幾年想要什麼樣的生活沒有仔細思考過,你對赤裸裸的現實沒有深刻的認識。你真的想過你畢業拿5k薪水和別人一畢業拿20k的人生區別嗎?那是一個天一個地。
- 一點今年校招的數據:
2016校招平均薪水,參考Offer爆料
- 一個事實:計算機行業高端崗位薪水越來越高,要求也越來越高。
即使是計算機科班的,獲得這些offer也不容易。
「普通的興趣」不能幫你一個外來戶搶到科班精英嘴裡的肉,」對美好生活的渴望「 才能。要明白那是搶一塊肉啊,你有他無。
植根於你基因里對利益的追求,才是你真正的力量之源。
最後來點正能量,不管是興趣驅動還是利益驅動,送你們一句話:
興趣遍地都是,專註和持之以恆才是真正稀缺的。 ——劉未鵬
-----------------------------------------------------------
反對 @司馬懿的部分回答 ,他的背景很牛逼,但對跨計算機行業方面給的建議未必合理。
比如:
3. 對於自學者來說,如果真的想在CS領域走的更遠一點,我建議的路徑是「殺人放火受招安」。 殺人放火,是說最開始的時候不要沿著科班的路徑走,因為科班的路徑比較理論化,可能艱難的搞了幾個月離散數學和演算法,還不知道如何讓程序接受字元輸入,於是感到了挫折,學不下去了。我建議上手跟著一本經典教材或者MOOC的課程
科班的路是經過國內外專家教師設計,無數人驗證過可以把」一無所知的人「培養成」內行「的路徑,這麼明顯的事實為什麼還有人質疑。野路子煉成高手,計算機核心的東西一點不少都得補上,花的時間會比正路少嗎?喜歡野路子打法,看」xxx天學通什麼xxx「之類的人,心態說白了,無非就是:意圖找到一條別人不知道的捷徑,歸根結底還是想 不勞而獲 。
--------------------------------------------------------------------------------------------------------------------------
匿名反對倆高票答案 @袋鼠SAMA 和 @dboy
今天,我給你們掏點肺腑之言。
1.
一、轉專業或轉行的原動力,一定要是興趣驅動,而不是利益驅動。(注意:這是判斷你要不要轉專業、轉行的關鍵因素)
從我個人還有很多認識的人轉行的動機來看,興趣不興趣根本不重要,有當然好,沒有也無所謂,畢竟大多數人對自己以後幹什麼沒有強烈的興趣。但是利益驅動一定要有,明明白白告訴你,我和我朋友們轉到IT行業的起薪很多都是不轉行的二倍不止,在原行業混,達到這個水平需要10年吧。這個利益夠不夠大?非常夠,所以苦累想放棄的的時候一想到能加入騰訊、阿里,那種逼格、那白花花銀子,嘖嘖,立馬跟打了雞血一樣。轉行是非常辛苦的,對於大多數人來說僅憑興趣沒有利益驅使基本是轉不了的。
2.
不要按照科班CS的思路去自學,你會失去興趣的,不要去看什麼大部頭的數據結構,演算法理論書,不要去浪費時間在這些主題的課程上
必須按照科班的思路去學,否則上面我提到的轉行收益你根本就摸不著,做個碼畜在破逼公司混還不如不轉,你的轉行目標至少應該是能達到二線互聯網公司的薪資水平11k-15k。想達到這水平,不按照科班思路走,鐵定玩完。
3.
按照科班思路學,不代表要面面俱到,抓主要矛盾即可,計算機知識看似龐雜,其實底層的基礎不算多,你要乾的就是學這些,無非就是:
- 一或二門編程語言;
- 數據結構與演算法;
- 操作系統,計算機網路,計算機系統。
上面這些基礎每個方向選擇最經典的一兩本書和著名的公開課,學透了,然後LeeCode題目刷起來,保證轉行能拿到不錯的起薪。此外,最好是選擇一個方向,之後深入學習,這樣工作找起來更輕鬆。
那些轉行起薪低或者根本沒轉過互聯網的說的那一套一套的,看那些根本沒用,他們的經驗或許有可行性,但收益太低。 要看就看哪些真正轉成功(二線互聯網公司以上)的,人家的學習路線明明白白寫著,明明白白的告訴你了這條路可行,你要做的就是規劃好時間,把這條路複製一遍。
不要做伸手黨,知乎上隨便搜搜,牛客網也多逛逛:
本科生如何才能進入騰訊,阿里等一流的互聯網公司? - 就業 - 知乎 - 知乎
非CS專業小碩的機器學習/數據挖掘崗位秋招經驗_筆經面經_牛客網也可以看我之前的一個回答: 後悔進了航空航天單位的人都轉行去了哪裡? - Captain Sun 的回答
4.
最後,少做那些沒啥卵用的規劃,你要做的就是犧牲本專業時間、娛樂時間,把專業的書籍一頁頁仔細翻完、寫上你的筆記,LeeCode上核心題目一道道刷完。
不出汗、不流血,就能獲得和人家計算機科班同等的競技能力,騙鬼呢。
你好歹還是工科,我轉計算機之前是文科;
你好歹還在讀書,我那時都畢業五年了。
雞湯已經賣過很多遍了,就給個鏈接吧:如何通過自學找到一份開發的工作? - 知乎
唯一想補充的是:怎麼走,或許並不重要;重要的是,你有沒有那股子不顧一切的「狠勁」?
我本以為,已經經歷過那種孤注一擲的絕望,並從絕望中殺出一條血路,就不會再有任何畏懼。
—— 還是TM的 too young too simple 啊!
人,都是逼出來的。
好累,但睡不著覺。
命運之神啊!難道你又在逼我了?
不會所有人都是985211吧?三本的路過,本科學的採礦工程,畢業後在煤礦工作一年,不開心,上培訓班4個月,作死跑到魔都,居然找到了工作,已經在開發崗位上做了快一年了,即便是低級碼農又怎樣,反正我不偷不搶,自己養活自己。我的經驗是,想轉行就趕快轉,不管通過什麼方式,有計劃就要堅決執行。
看到這個問題,引起很多回憶。記得在高考結束那一年填志願時,我的一、二、三、四各個批次全是計算機相關專業,沒有別的要求,只要是計算機行業就行。然後我進了一個普通二本高校。曾經我也是一個希望把學習全寄托在學校,指望技術有所突飛猛進的少年~~~
然而現實是這樣的:
1、大學時很多同學(包括好的學校)期末都是趕考求不掛的姿態。學校教的東西很多過時枯燥。幾年下來並沒有學到技術,只是對技術有所了解
2、很多計算機相關專業的同學畢業之後並沒有從事技術工作3、大量同學技術的突飛猛進都是在技術實驗室和工作實踐中完成的工作原因看見很多技術大牛的成長之路,才算對技術發展路徑有了客觀的理解。所以題主就完成不要擔心自己不是這個專業就找不到技術成長路了。這條路一直為所有人敞開,你會成為你想成為的人,有志者事競爭。
具體我總結下來
一、興趣驅動 小步快跑
最開始學技術一定要有興趣驅動,總之要有一個很大的技術驅動力量。缺少這個驅動,缺少堅持,整個學習計劃就非常有可能在剛接觸一們技術『閱讀、邏輯思維等還沒有建立起來』的這個艱難時期夭折。然後就需要趕快找到一個突破口,讓你能做出點有成就感的東西來:比如,編寫一個網頁,寫一個簡單的App功能或是一點腳本遊戲。有了這些東西的真實存在感,你就會信心大增。這樣就會順利的小步快跑起來了二、操作起來遠遠勝過系統學習
當找到了技術的切入口,能寫一點小程序之後。無論是JS/HTML/CSS、PHP、Java、python還是其他,我的建議是深入的沿著這個方向做下去,順帶搞定周邊的技術,規範編程方法和思維,直到你能做出一個完成的產品,讓你成就感爆棚。我非常不推薦當我們會一點技術之後,就堆碼大量的系統的寬泛的學習計劃:從彙編、C、嵌入式、演算法、直到現在最前沿的各種語言技術。在最開始這些知識作為了解是應該的,但是深入的學進去沒必要。一個人的精力不可能一下就學完,精力分散帶來的就是枯燥無味,讓人有深深的挫敗感,不知不覺你放棄了都還不知道三、一萬小時訓練 打通任督二脈
當能做出一個完成的產品後,我們就需要沿著之前最熟悉的方向進行一萬小時以上的編碼工作。這個過程看似無聊,造輪子。但只要用心,在這個階段適度拓展相關技能樹,你就會慢慢發現編程思維會已經悄悄融入自己的身體。這時候你會感覺所有語言都有共性,很多新技術看看文檔也就會了。這一階段技術學習之路不再急切的求多務廣,當集中精力專研於一點,你會發現很多地方都會融匯貫通。技術問題再也不是難題,只是一個熟練程度而已四、挑戰複雜實踐 解決問題困難中成為頂級高手
最後一個階段的技術提升是最困難的,也是很多程序員一輩子也沒有機遇的。因為真正的技術飛速發展是迫於最複雜艱難的實踐。比如雙11搞到這麼大的並發訪問量,這裡面催生優化了很多新的技術。在這個階段,你會對最底層感興趣,甚至彙編,因為它有可能解決你的問題。你也更關注未來,因為反覆的實踐總好像在給你指引未知的前進道路一樣。時間過後,你慢慢就蛻變成了一個頂尖的技術高手以上,希望能有所幫助說說我的經歷吧。
1989年我上初一,生平第一次接觸了編程(apple,8位機)。當我在老師指導下,用basic語句輸出了滿屏幕的星號時,心中被巨大的喜悅填滿。喜歡編程的種子在那時就埋下了。
高考報志願,我報了某211的計算機系,可惜因為分數不夠被調配到了其他專業。這能攔得住我嗎?! 我開始瘋狂逃課,去看計算機的書,去編程序。當時逃課逃到什麼程度呢?說兩件事你就知道了
^有些課我是到了期末考試才見到了這門課的授課老師。^我們系老師有個習慣,上課點名只點我一個人,如果我到了,其他同學應該都到了。當然這樣做是有代價的,掛太多科是要被勸退的啊,每次期末考試前2天成了我最痛苦的時候。我要把一學期的課從零開始複習完,然後期望能及格。好在有驚無險,剛剛在勸退線附近畢了業。這件事給我留下了很大的心理陰影,以至於畢業後好幾年還因為夢到掛科半夜驚醒。
大四畢業時,華為來我們學校招聘軟體研發,招聘啟事寫明了只要計算機相關專業學生。我才不管那一套呢,直接投了簡歷,結果真的收到面試通知。那個考官把本科可能學到的所有計算機基礎知識都問了個遍,從操作系統到資料庫,從編譯原理到軟體工程……別人面試1個小時,我足足面試了3個多小時。考官沒問倒我,順利入職了!
後來終於如願走上了軟體開發的道路,從程序員做到team leader, se,sa,cto……到今年近20年。我從未後悔過選擇這個職業,年輕時的夢想實現了,我得到了真正的快樂。
題主,說了這麼多,希望你能明白。1.喜歡會給人帶來巨大的動力。如果動力不足,是你還不夠喜歡。2.編程編程編程!寫代碼吧。你會愛上這個行業的!加油!學好本專業,然後開始滲透本專業和計算機專業的交叉專業,然後侵入計算機專業之後見到計算機專業的人就大談本專業,見到本專業的人就大談計算機你懂的
等我寫完《勸退學導論》之後講講我跨專業考博的經歷
我想我可以來答。本科專業是文科類的管理,現在就是985四流院校的渣碩。這不是一個勵志貼,本身轉化的過程相當困難,可能是我比較笨,如果想轉,要做好準備。本科管理畢業之後,陰差陽錯,當了一年多的碼農,做了點安卓app,還涉及了點Android系統級開發,僅此而已。水平非常有限。之後,來了這裡,全面重新開始。突然發現,與大家的差距也不是很大。他們會的,我也會。最後悔的是,本科管理中很多課程沒有好好學,比如統計學、運籌學、概率論等等與數學相關的科目。碩士期間,做了一段時間分散式系統開發,了解點機器學習。由於以後工作的原因,現在開始慢慢接觸圖像,慢慢偏向機器視覺。總之,一旦進來之後,你就會發現,其實都不是問題,只要有心。--------------------------------------------------------------------------------------------------------------------------------------------這回答都得到了七個贊啊~~~--------------------------------------------------------------------------------------------------------------------------------------------58贊了,到目前位置,得贊最多的回答了。--------------------------------------------------------------------------------------------------------------------------------------------這獲贊已經超過所有回答總和了。。。------------------------------------------------------------------------------------------------------------------------------------------都要將近八十贊了~~~
作為一個2016畢業轉行做軟體開發的職場新人,我想說一下我這五個多月的經歷和感想。
當初自己也是不知天高地厚,憑著自己扯淡能力轉行進了一個做電視機系統開發的公司,自以為只要在工作中比別人努力就算基礎差也能做好這份工作,進來半個月後發現你努力,別人會比你更努力,你想要超過他們真的是異想天開,於是在工作的前三個月中,多少次忍住眼淚鼓勵自己堅持一下再堅持一下,就算現在比如別人也不要放棄,其中痛苦與掙扎應該只有自己才能明白,現在五個月了,雖然不是很厲害,但起碼別人不會覺得我是從外行轉過來的了。感想:1 經歷了這三個月的經歷與掙扎,讓我明白只有堅持的人才能超越自己獲得成功。
2 在轉行之前一定要想好,你經歷的痛苦要比別人更多,所以你應該更努力,不要像我一樣自以為是。最後希望題主能夠想明白自己想要的是什麼,最好選擇簡單模式不要像我一樣選擇困難模式,望題主能夠獲得成功!曾經的生物狗。一堆師兄師姐師弟師妹以及朋友都轉行學CS了。
感覺轉行學CS對於我這些朋友來說沒有太大難度。畢竟他們都是國內985上游高校生物專業top的學生。而在他們選專業的時候,生物是各個大學最火熱的專業。也就是說,他們當年是一群眼瞎的分數很高的優秀學生。
人嘛,難免走錯路。但只要自己水平足夠高,智商足夠高,想轉行還是很輕鬆的。通信工程碩士轉行碼農一開始全憑興趣,寫一點遊戲相關的輔助工具純自用(沒錯...其實就是外掛)後來拿著這些個作品去面試騰訊互娛就進了,還是挺幸運的進來之後,發現屌都不會,計算機專業的幾門課 軟體工程方法 演算法導論 設計模式 都是抓瞎 靠加班補上來了,還好騰訊比較業務導向,也不問來歷,給了大量學習的機會和空間。
先要搞清楚什麼叫專業和非專業,難道就是因為你在80年或者更長的人生中,有三四年或者五六年學了一個所謂的專業,剩下的人生中就要一直從事這個專業嗎?其實這是自己給自己畫的一個圈而已。學習是終身的事情,學了理科,再學文科,再學藝術,其實也沒啥,當然我說的不一定是在學校學習,自學是很重要的途徑。
跟世界一流大學的名師學習如何?
edX上,哈佛有名的計算機入門課程:
https://www.edx.org/course/introduction-computer-science-harvardx-cs50x(高能預警:這門課會使用C語言來講解編程基礎,開始的時候還好,到了要計算內存讀寫數據的那幾份作業,沒有基礎的人應該會覺得很折磨)這門課的好處是,老師很生動地把你需要知道的,計算機基礎的東西都濃縮在這堂課裡面了,而且附帶很多(是很!多!)課外的視頻講解資料(都是助教們準備的),課後的作業也會有walk through。
說到計算機,當然不能不提linux:
https://www.edx.org/course/introduction-linux-linuxfoundationx-lfs101x-0非理論,主要是手把手教怎麼使用主流的幾個linux操作系統。每個環節都會配各個操作系統對應的講解視頻。(註:上面的課程,視頻有可能需要翻牆觀看)
接下來就是考慮自己要往哪個方向走唄。web前端、android、iOS、後端,都有各自的語言。如果不知道從哪裡開始,就去codecademy,udacity這類型的線上教學網站逛逛,像玩遊戲一樣通關學編程吧,練手很重要。
確定了方向之後,可以開通自己的github賬號,在上面follow下相關領域的前輩們。同時也可以方便地把優秀的源碼clone下來學習。
這些都折騰過以後,應該可以自行用代碼解決一些問題了。那麼,就盡情投入編程的世界吧!- 不要按照科班CS的思路去自學,你會失去興趣的,不要去看什麼大部頭的數據結構,演算法理論書,不要去浪費時間在這些主題的課程上,你不是科班,不可能有時間去鑽研,打基礎,強化訓練,你需要的是找一個切入點,目標就是就業,這要務實得多,實際上這才是學計算機的自然途徑,首先是對某個領域發生興趣,然後利用計算機的知識去做點兒什麼,實際上大多數自學計算機的人,也是這麼自學的,並不是先搞好了數據結構,演算法,編譯原理,再來做實際能用到的東西,而是先做出來實際能用到的東西,再回去追溯理論背景,別以為CS學生對這些理論掌握得很好,其實很少,他們也是實際開始做東西的時候,才學會編程和開發究竟是什麼的
- 首先你要選平台,是桌面開發,web開發,mobile開發,數據類工作還是別的?招聘網站能告訴你各個平台包含的領域和各領域的權重,比如拉勾網,好好做一下功課,選一個平台
- 在選好平台的基礎上,選一種語言
- 安裝好選定平台,和選定語言的開發環境
- 買一本可以邊做邊學的入門書,可以去亞馬遜上去搜,看目錄,看用戶評分
- 照著書去一步步地熟悉,把代碼用github版本控制起來
- 用學到的東西解決幾個自己想解決的問題,哪怕再小,都把項目用github版本控制起來,找工作會有用
- 到這一步,你已經入門了,再去找其他各種資料來拓展深化,同時,這時候可以準備簡歷了,你找一份初級的工作,不要太在乎薪水,在工作提供的編程機會中,你會加速成長
- 把工作中碰到的問題記下來,去通過搜索引擎儘快的掃除這些知識上的漏洞
- 等到你對第一份工作遊刃有餘的時候,可以準備找更Senior的職位了,到時候,你就不需要別人來告訴你應該怎麼去做了。
推薦閱讀:
※彙編中的alloc的無用stack內存是用來幹嘛的,或者是為什麼會產生的?
※個人電腦怎麼管理?
※如何評價McAfee?
※如果一群現代人赤手空拳來到一個原始生態星球,製造出一台計算機需要多長時間?會經歷怎樣的技術路線?
※Surface 升級 Windows 10 後體驗如何?