如何通過自學找到一份開發的工作?

  • 目前工作:測試開發工程師,主要負責底層組件的白盒測試。去年大學畢業工作到現在。工作比較清閑,平時有較多時間自學。
  • 背景:本科是計算機專業,平時僅僅上上課而已,知識掌握的很有限。大約今年6月份的時候對編程產生了濃厚的興趣,開始了自學之路。
  • 最近4個月自學內容:
  1. 比較仔細的學習了《c++primer》,並對每個習題都自己寫代碼實現了一遍,包括稍微複雜一點的例子。
  2. 認真讀完了《effective c++》,《effective stl》。
  3. 比較仔細的學完了《數據結構與演算法分析》,並把其中的每種數據結構和演算法都用c++實現了一遍。包括各種線性表,樹(二叉樹、AVL樹、RB樹的各種操作),圖(BFS、DFS、prim、kruskal、djkstra、floyd、拓撲排序、關鍵路徑等)查找演算法,排序演算法。

  • 期望:通過接下來半年的自學,在明年四五月份的時候找到一份開發的工作,最好是C++方面的。
  • 接下來的計劃:
  1. 2-3個月認真學完《csapp》並做完書上的習題。1-2個月時間學完《tcp/ip詳解卷一》,理解tcp協議。然後利用零碎時間閱讀《深度探索c++對象模型》和《stl源碼剖析》。
  2. 練手項目,準備自己寫一個mini小型的STL庫。如果可能的話,在學完tcpip後,實現一個memcache。
  3. 最後再花半個月時間複習數據結構和演算法。

不知道自己是否是閉門造車,學習方法和計劃是否有問題。
希望各位前輩和大神指點一下,給點建議和意見,謝謝!^_^


我是該問題的題主(由於在上一家公司的時候有許多同事混知乎自己又不喜歡匿名,所以當時臨時註冊了一個小號來提的這個問題),從6月份開始辭職到北京找工作,面了一共8家一二線互聯網公司,並拿到了其中的7個offer,最終在百度和完美世界之間選了完美世界。

感謝 @蕭井陌@藍色 在技術學習的相關問題上給我的建議和指點。

感謝 @蕭井陌@藍色@於鑫 在選擇offer時給出的寶貴意見。

同時也非常感謝所有在該問題下給出建議的朋友們 : )

學習過程

  1. 比較仔細的學習了《c++primer》,並對每個習題都自己寫代碼實現了一遍,包括稍微複雜一點的例子。
  2. 認真讀完了《effective c++》,《effective stl》。
  3. 比較仔細的學完了《數據結構與演算法分析》,並把其中的每種數據結構和演算法都用c++實現了一遍。包括各種線性表,樹(二叉樹、AVL樹、RB樹的各種操作),圖(BFS、DFS、prim、kruskal、djkstra、floyd、拓撲排序、關鍵路徑等)查找演算法,排序演算法。
  4. 2-3個月認真學完《csapp》並做完書上的課後習題(由於時間的關係,沒有在做家庭作業),順帶學習了一些gcc的嵌入彙編的用法。
  5. 讀完了《深度探索C++對象模型》,對象C++底層實現機制有了一定的了解。
  6. 讀完了《TCP IP詳解卷一》
  7. 讀了《APUE》的大部分內容以及《UNP卷一》有關TCP/UDP的部分,略過了SCTP的部分。
  8. 研究學習 @陳碩的muduo網路庫源碼,受益良多,在期間發現過其中的一兩個小問題,提了幾個pull request,研究完了muduo源碼後又看了其相關的書《Linux多線程服務端編程 (豆瓣)》
  9. 學習了雲風的skynet網路庫的小部分源碼,主要為了了解actor模式和reactor的異同。
  10. 學習了google test框架的部分源碼,弄懂了內部的的運行原理。
  11. 刷《劍指offer》的所有習題。
  12. 刷leetcode,代碼在liyuan989/leetcode · GitHub,由於時間的關係大約刷了130道就開始找工作了。

關於練手項目,寫了簡易STL,C++協程庫,以及一些http server,rpc之類的。

關於找工作

由於基本都是同學朋友內推,不存在簡歷被HR篩掉了。

其實自己都驚訝在找工作的時候有些異常順利,因為面試官問的問題很少有答不上來的。絕大多數問題個人感覺不難,大多都是問的一些比較基礎、底層的東西,比如互斥鎖底層是怎麼實現的?如何用C語言實現C++的異常,說說基本思路這樣的問題。然後就是根據簡歷上寫的東西來問。

另外一個要說的就是紙上手寫演算法題了,手寫代碼和機器上寫代碼的感覺不一樣,我個人是沒事自己在紙上寫寫一些基本的演算法來熟悉,比如快排、堆排序之類的。

然後面試要問的演算法題一般都不難,多數都是翻轉鏈表,判斷鏈表是否有環,迴文數,找出鏈表倒數第k個數這樣的題目。

很少遇到問二叉樹的問題,沒有遇到過問圖的相關問題。唯一碰到一個動態規劃的問題,就是最典型的最長公共子序列問題,難點的就是百度第一面最後問了一個leetcode上hard難度的原題,總的來說刷一些題還是很有必要的。

============= 分割線 =============

看到有網友問我驅動力是什麼?

引用一下 @蕭井陌蕭大在問題怎麼成為一個優秀的程序員,而不是一個優秀的碼農? - 互聯網中的回答:

好比,我們說,嫖娼是有巨大道德壓力、金錢壓力和風險的事情,為啥知乎上那麼多嫖客樂此不疲並努力給自己洗腦合理化這件事呢?因為在他們的眼中嫖娼是最有趣的事情、是不吃飯不睡覺也不能不做的事情、是不做就活著沒勁的事,有了這種死也要死在床上的精神,還怕什麼呢?


這就是推動力

對於我來說驅動力就是興趣和堅持吧,再一個就是有一種「做一件事就要把它做好的信念」。

講一下我個人的兩個經歷。

在我中學的時候對籃球很有興趣,但是剛開始的時候運球都運不穩,更別說上籃、突破、三威脅之類的高級動作了。然後我就在網上找到了張衛平老師的籃球教學系列視頻,學基本的運球動作,投籃動作以及基本步法,在家裡沒事都會練練步法。每天晚上傍晚看不太清的時候都去練投籃找投籃感覺,然後看NBA學一兩個實用的晃人、假動作技巧,再慢慢練習。最終在高中的時候進了當時的校籃球隊,拿了當時市高中比賽的冠軍。

另一個就是關於WOW了。高中畢業的時候被一幫從地球年代就開始玩的同學拉去玩WOW了,由於之前沒有玩過類似WOW的網遊,什麼都不懂,完完全全的一個小白,一下副本就被隊友、同學罵。然後呢,我就去NGA看各種攻略貼、精華帖、視頻。仔細研究每一個技能的描述,冷卻時間。慢慢的,下各種副本團隊時候DPS都超過了我的同學,再到後來加入了伺服器FD團隊,拿過幾個伺服器首殺,單個BOSS的DPS排行也進過WOL全球前10。PVP方面也是的,開始在奧格門口是個人都能虐我,然後我每天觀摩那些高手怎麼放技能,怎麼銜接,然後每天泡在奧格門口決鬥練習,看NGA刀鋒山的各種精華帖,看各種PVP視頻,慢慢的在奧格門口幾乎沒有對手了,成為了所謂的門神。後來覺得決鬥沒意思,就開始玩競技場,也是這樣的一個學習過程,最後也打到了角鬥士龍。

最後,我很喜歡@劉未鵬先生說過的一句話的:

興趣遍地都是,專註和持之以恆才是真正稀缺的。


從15年8月開始關注這個問題,今天終於能給出自己的答案了。

自學前水平:只會用C輸出helloworld,對指針沒有任何抵抗力;

自學過程:主要是參考蕭大的編程入門指南進行學習:

1. 哈佛大學公開課:計算機科學cs50;

2. 麻省理工公開課:計算機科學和 Python 編程導論;

3. 斯坦福大學公開課:編程範式;

4. 麻省理工學院公開課:演算法導論;(1-4都可以在網易公開課找到)

5. 結合SICP 解題集閱讀了《計算機程序的構造和解釋》;(只看了前三章)

結合The Hardware/Software Interface公開課閱讀《深入理解計算機系統》(時間不夠,沒做習題)CSAPP偏硬體角度,學習操作系統看的是《現代操作系統》;

6. 結合演算法公開課學習了《演算法導論》;(學得很吃力)

7. 學習《演算法》紅寶書,書上的數據結構與演算法代碼都手動敲了一遍,

結合VisuAlgo,效果拔群;

8. 在語言層面上,學習了《C語言編程》,《C++Prime》,《笨方法學Python》;(只是閱讀書籍,沒有去做題實踐,學習效果很不理想)

9. 學習《Flask web開發》動物書,利用PyCharm一步一步搭建網站;

10.在慕課網上完成了「Linux運維工程師」系列課程學習,自己裝了個虛擬機熟悉Linux的常用操作與命令;

11.學習《計算機網路自頂向下方法》,《TCP/IP》核心卷一,熟悉計算機網路基礎

12.學習《SQL必知必會》,《高性能MySQL》(由於水平不夠,沒太看懂);

13.開始用git管理自己的代碼,學習github上的優秀源代碼;

14.學習markdown,用hexo搭建個人博客,記錄自己的學習過程;

15.結合《深入理解Nginx》學習Nginx源碼;

16.深入學習Java:閱讀《Thinking in java》(太厚沒看完),熟悉SSM框架,閱讀《深入理解Java虛擬機》;

—————————————————————————————————————

反思:在學習的過程中有時非常浮躁,急功近利,反而沒有真正學進去,基礎不紮實

大部分工作都在閱讀,沒有代碼的練習與實踐,對於code的學習是不完整的

學習知識後要用思維導圖或博客整理總結,不時複習

校招準備:到了16年7月,從實習公司辭職回學校準備校招:

1.牛客網上的專項練習:Java、計算機基礎、Linux等1000多道選擇題都刷了一遍,記錄錯題與答案,導入到印象筆記,每天複習;

2.在線編程中的:《程序員面試金典》、leetcode(easy/medium)都刷了一遍,《劍指offer》書看了一遍,題刷了兩遍;

3.各大互聯網公司的歷年真題都做了一遍;

4.針對各個公司的面經進行準備;

校招經歷:互聯網公司的校招都來得非常早,一般八月底就開始了,我採用的是海投策略,一個月內筆試了30餘家公司(線上筆試與現場筆試),也是自己能力不夠,編程題稍微出的難點就不能AC,最終接到面試通知的不到十家,每天筆試、面試、跑宣講會對體力也是一個很大的挑戰,所幸的是,每次筆試面試都能學到很多東西,臉皮也變厚了;

現在我已經拿到了幾個offer,最終選擇了深圳的一家還算有名的公司,福利待遇也不錯,對於我這樣一個轉行的小碼農來說,已經很滿意了。但我也知道自己在編程上還是個小學生,基礎仍然很不紮實,需要花大量的時間和精力去彌補,在以後的工作和生活中我也會不斷保持努力學習的。

個人經歷:我是武漢一所不知名學校的研究生,學歷上沒有什麼優勢,研二時在武漢一家國企從事純硬體的實習,雖然公司福利待遇不錯,領導也對我關心,但是仍然對所做的事情沒有激情,也是在這個時候看到了蕭大的編程入門指南,便開始一步一步自學,每天上下班公交都在抓緊時間看公開課,在公司不方便就躲在廁所里看,現在想來也是頗不容易;

今年年初,經過朋友推薦,一個非常好的機會去了北京一家外企實習,一路貴人不斷,熱心的老員工,有愛的實習同學,給力的學長;雖然沒做什麼重要的項目,但是卻適應了學校到公司的轉變,通過跟進項目,學習了公司的系統開發流程與規範,還是很有收穫的;

最後非常感謝 @蕭井陌 和 @Badger 引我走入編程的大門;

感謝 @藍色 , @RednaxelaFX和 @Coldwings 專業的回答幫我解惑;

感謝 @vczh 帶我發現更大的世界;

多說一句:今年的校招明顯感覺到筆試題比前幾年要難,很多公司的名額也開始縮減,數十個應屆生搶奪一個崗位的事情更是常常發生,所以想通過自學轉行的同學請好好考慮清楚再做決定吧。

以上就是我的一些自學編程的經驗,也有很多不足的地方,僅供大家參考,希望能對大家有所幫助。


寫在前面

  1. 社招和校招不一樣,側重點不同,難度也更大,我能拿到offer得益於校招。
  2. 985的確有一些優勢,但在計算機這個行業中優勢沒有想像中那麼大,看中學校的公司有,但不多,主要看能力,有很多學校差一點的同學去年秋招也找到了很好的工作。
  3. 我寫的這些只是我學習過程的記錄,不代表適合每個人,還是根據個人情況具體問題具體分析。
  4. 想要從中提取些東西的話,還是看看學習方法吧,這裡提到一些。

------------------------------------------------------------------------------------------------------------------


從15年9月(大三)開始自學編程,到現在17年3月,差不多1年半時間,春招拿到了幾個offer,也算通過自學轉行了。


背景

中游985電子科學與技術專業本科生,大學前沒接觸過編程,大一上過C++課,不過翹了大部分課和上機,都是靠考前看書通過考試,也沒有學過其他計算機相關課程,剛大三時編程水平應該和零基礎差不多。經過大學前兩年的學習,感覺很虛,大多都是為了考試,所以大三時想要自學些技能。那時候剛上知乎,主要是看到了蕭大的好多回答還有編程入門指南,然後就打算學編程,發現很感興趣也很適合自己,就決定轉行當程序員。


學習過程

主要是參考 @蕭井陌 和 @Badger4us 的編程入門指南 v1.5 - 知乎專欄自學的(大致按照時間順序):

0. 關於看公開課、視頻和看書的選擇:我只看過2個公開課:1個是計算機導論課,1個是演算法導論公開課,都只看了很少一部分,之後就再也沒看過視頻。我覺得看視頻不適合自己,還是看書更有效率,也更能沉下心來(雖然看演算法導論公開課是因為演算法導論看不下去了)。這個根據個人情況選擇吧。

  1. 1個月左右的時間看完了《計算機程序的構造和解釋》、《C程序設計語言》和《深入理解計算機系統》,幾乎沒有敲代碼,囫圇吞棗。
  2. 1個月的時間看完了《Python核心編程》和《Flask Web開發》,也在網上學了一遍HTML和CSS,跟著搭了一個博客。
  3. 經過最開始2個月左右時間的學習,這時候的我是非常迷茫的,感到編程很難,好像花了很多時間,學了很多東西,卻沒有收穫到什麼,自己像是空中樓閣,沒有一點根基,後來就決定踏踏實實的補充基礎知識,向科班看齊。
  4. 認真看了《計算機程序的構造和解釋》前三章,做了大部分習題。
  5. 認真看了《深入理解計算機系統》所有,做了部分習題和大部分lab(除了第四章)。
  6. 看了《演算法導論》前幾章,打算先放下,決定先深入一方面再擴寬知識面。
  7. 之前學習都是用虛擬機開Ubuntu,比較卡,大三寒假換成了Ubuntu單系統一直到現在。
  8. 寒假認真看了《Linux/UNIX系統編程手冊》。
  9. 開學又看了一遍《C程序設計語言》,第一次看的時候只覺得難度很大,這次看發現了很多有用的東西,比如很多庫函數、C語言的預處理替換、UNIX的系統命令還有很多數據結構與演算法的東西,寫編譯器的時候也參考了裡面第5章的複雜聲明解析dcl;粗略看了《C和指針》、《C專家編程》和《C缺陷與陷阱》。
  10. 認真看了《TCP/IP詳解 卷1》和《UNIX網路編程 卷1》,粗略看了《高級TCP/IP編程》。
  11. 結合《Redis設計與實現》看了部分redis源碼,之後寫了兩個小項目(寫的很爛)。
  12. 關於看源碼:能力不夠時,不要強求去看大型開源項目源碼,一是無法體會其中的設計思想;二是看不了解或者說沒有用過的項目的源碼會沒有重點,效率很低,最好是用過、帶著問題去看。之後我就很少看源碼了,現在會去看。
  13. 認真學了《演算法導論》前17章、22章和32章,做了部分習題,刷了一遍LeetCode的easy和medium就快到秋招了。
  14. 去年秋招的時候,感到非常虛,簡歷用markdown寫的都寫不滿一頁A4紙。不過因為個人原因,秋招時沒打算找工作,只是想感受一下校招難度,但是最後筆試都沒過,壓力很大。筆試做的自我感覺還行,問題感覺出現在簡歷上,關鍵是沒有項目,所以大四上除了學習新知識,重點在造輪子。
  15. 大四上課還很多,爭取在每天8點半上課之前做完3道LeetCode題,一直做到16年底又刷完一遍easy和medium。
  16. 看了Flask源碼,其實重點在理解WSGI、Werkzeug、HTTP等,而不是Flask。
  17. 通過看《C語言介面與實現》、《操作系統精髓與設計原理》、《計算機網路自頂向下方法》、《數據結構與演算法分析 C語言描述》等複習。
  18. 學習《編譯器設計》,寫了一個json解析生成庫,參考 @wgtsam 的如何寫一個簡單的編譯器? - 知乎,寫了一個半成品C編譯器。
  19. 學習《HTTP權威指南》和《Linux高性能伺服器編程》,參考 @wgtsam 的寫一個並發http伺服器 - 知乎專欄,寫了一個http伺服器。
  20. 學習《Go程序設計語言》,正在學《資料庫系統概念》、《資料庫系統實現》來做畢設。

如何去學

之前的答案里寫了蠻多,重點還是要多敲代碼吧,多寫才會踩坑,才會對書中的知識有更好的理解。 @姚冬 大大的回答 編程是一門手藝 還有 @陳碩 大大的回答 抓住主要矛盾、分清主次、突出重點 對我影響也很大。


校招準備

在春招前我也提過一個問題如何準備才能在春招中找到合適的工作? - 知乎,不過之後出了些狀況,浪費了一個月時間,沒做準備就去校招了。我之前也沒有專門為校招做些專項練習什麼的,要說準備的話也就刷了不少LeetCode,其實主要還是為了鞏固一下《演算法導論》里的知識。網上的資源有很多,比如牛客網上的練習、《劍指offer》還有面經真題之類的,我不喜歡做這些東西,感覺除了筆面試有些用,對技術沒什麼提升。還是看個人情況吧,如果多做些,應該會有用。


春招過程

3月初開始春招,本來是海投的,投了不少簡歷,參加了不少筆試。沒想到春招很順利,一開始就拿到了一個offer,之後就拒掉了很多的筆面試,最後參加面試的都拿到了offer。校招和社招區別還是很大的,校招大多考的是基礎知識:操作系統、計算機網路、數據結構與演算法等,資料庫和編譯原理提到的比較少。還會要求手寫代碼,感覺和平時敲代碼沒什麼區別(我寫代碼用Vim,今年年初才配上ycm自動補全,LeetCode也是在網頁上寫)。

關於本專業課程和考研

從零開始自學的難度還是很大的,單靠自己壓力也很大,而且還有本專業課程的壓力。我是電子的,大三大四的課也不少,難度也不小,像電磁場、信號與系統什麼的,還是要保證在不掛科的前提下再去學習其他的知識。我從打算轉行當程序員後,本專業課程就不聽了,抱著自己的書坐在最後一排看,有時候老師也會問幾句,我只要能保證最後考試不掛,老師也不會管我。我基礎還行,學習能力也還行,所以每門課認真看兩三天書就能過,成績也還行。其實考研我也考慮過,因為如果直接找工作的話,時間怕不夠,準備不充分,所以讀研對於自學或轉行的來說會是很好的緩衝和積累的時期,也更穩妥。最後還是覺得直接工作可能對自己的提升會更大,而且當時也有不讀研的理由。


動力

關鍵還是興趣和壓力吧。畢竟大三才開始自學,大四就要找工作了,壓力比較大,所以會推著你去學習,興趣也是能堅持下來的原因,有時候上拉鉤看看薪水也蠻打雞血的,而且看到知乎上很多同屆的甚至更小的同學已經很厲害了,自己還差的很遠,也就會加倍努力。回想這過去一年多還是比較累的,每天7點多出門,晚上9,10點回到宿舍,無論是周末還是放假,因為我效率不是很高,只能多花時間來增加有效學習時間。其實還有一個更深層次的動力一直支撐著我。


一些建議

社招不太了解,給和我一樣的學生黨一些建議吧:好好打基礎,多敲代碼,多用圖書館的資源,還要注意身體,多運動,保護眼睛。我曾經天真的以為大學裡不會去一次圖書館,直到大三下學期才第一次去,發現圖書管里資源那麼豐富,有很多書,可以省下一些買書的錢。


最後感謝 @蕭井陌 和@Badger4us 帶我走進編程的世界。

感謝 @藍色 、@陳碩 、@RednaxelaFX、@靈劍 等大大,翻看你們的回答都有很多收穫。

感謝 @origin ,你的經歷也給了我很多信心;還有 @wgtsam ,從你那學習了很多。

祝大家身體健康、學習進步、都有好offer吧。

P.S. offer比較:普聯、美團點評、小米? - 知乎 希望大家能提下建議。


大概是2016年初看到這個問題,那時候我還沒有什麼編程基礎,轉眼間,一年過去了,一周前去上海面試,拿到了待遇尚可的offer,也許很渣,但我已經很滿足了。感謝知乎,讓我相信很多事情都是有機會做到的。我希望能夠用自己的經歷回饋社區,告訴那些我不認識的人們: 這條路我走通了,你也許可以試一下。
15年南京某211物理本科畢業,大學四年中規中矩的上課考試,沒太想過自己將來到底想要做什麼,畢業以後留在本校讀研,整個本科都和計算機沒什麼交集。15年9月開始讀研,導師安排我參與一個深空中子探測器相關的項目,我負責其中的數據處理部分。那時候開始接觸Linux、C語言,是的,本科期間連C語言都沒學過。到了15年12月份,經過一個學期的科研初體驗,我意識到自己對本專業已經失去了興趣,反倒是在折騰Linux的過程中,衍生出對編程的喜愛,那時候有了自學編程,轉行程序員的想法。
16年元旦假期的時候,制定了一個計劃,打算按照計算機科班同學的路線進行學習。一月份看了C Primer Plus第五版,敲了幾乎全部例子和課後習題。寒假回家看了數據結構與演算法分析 : C語言描述,動手實現了常見的數據結構。那時候大概積累了1萬行左右的代碼量,開始對編程有了一些淺顯的認識,同時確認自己願意為這件事付出精力。3月份回到學校,陸續看了計算機網路(第6版) : 自頂向下方法、圖解HTTP、操作系統概念等書,完成了對計算機基礎知識的掃盲。後來又看了Head First Java、Java核心技術·卷1,開始了對Java的學習,同時讀了演算法數據結構與演算法分析 : Java語言描述, 動手實現了書中出現的幾乎所有數據結構與演算法,以至於後來在簡歷中我會寫了解Java集合源碼。當時還把學習過程記錄在了自己的博客里:adothraki"s blog。

四月份的時候,開始考慮具體選擇什麼細分領域繼續學習,當時選擇了Android開發。看了兩本書第一行代碼 : Android、Android編程權威指南,也看了一些谷歌官方文檔。到五月份,已經能寫一些簡單的App了。
導師管理比較嚴格,那幾個月,白天要給導師幹活,只能利用晚上的時間進行學習,經常是教研室最後一個走的。也是在那段時間,萌生出退學直接找工作的想法,和導師聊,導師表示理解,但希望我堅持到項目中期驗收結束再走,整個六月都 忙著給導師幹活,沒怎麼學習。七月底嚮導師請假回家,梳理了一下自己的知識結構,寫了一個準備用於面試的Android App。八月初投簡歷,回南京面試,運氣不錯,第一次面試就拿到了offer,以Android開發工程師的身份入職。十二月底,聖誕節假期,去上海找同學玩,順便經歷了一次面試,拿到了待遇尚可的Android開發offer。
回顧過去一年,很開心,算是階段性的達成了2016年初的目標。希望自己在2017年能夠持續進步,增強技術棧的深度。

PS: 感謝 @origin ,感謝 @蕭井陌 ,感謝 @藍色 ,迷茫的時候,我會翻看你們關於如何學習編程的答案,你們的經歷讓我堅定了天道酬勤的信念。


謝邀,我覺得你現在就可以去找工作了,不過你要是能潛心學習的話,學完再去找也是個很好的選擇,而且快到年關了,找工作也沒什麼意思。

我覺得你挺厲害的,有想過以後做什麼工作嗎?有問題可以多上知乎交流,加油吧,祝你好運。


--------------------------------+++-----------------------------
1.背景介紹

本科北京某工科學校,測控技術專業,大學之前從來沒有接觸過計算機,大一上的時候學c語言,一開始連電腦開機都不會,到後面勉強成功調試第一個程序Hello World!,最後期末考試勉強考了70,80分。之後選修過c++選修課,基本沒聽過課,考試也是臨時報佛腳,水過的,記得好像是61分。大三專業課必修課彙編原理,學的非常吃力,考試70多分。大四選了一門計算機軟體基礎課,照著網上視頻寫了個計算器作為其中的一個大作業交上去。本科對於計算機的了解就這麼多。你可以看到我本科是過的有多麼水。研究生因為考研複試沒有過,調劑到某研究所,研一在本科學校學了大半年課,都是與通信相關,研二開始搞fpga和頻譜儀,基本上掌握了頻譜儀的原理與實現。帶著這些技能,去年下半年開始找fpga相關的工作,想去的公司非常少,同時感慨工資與互聯網沒法比,以及考慮到fpga以後的發展問題,還有對硬體並不感興趣,想著女朋友已經年紀比較大,有著結婚的壓力,需要努力賺錢娶她回家。

最後10月份痛定思痛開始轉行,當然其中糾結很久,放棄了原來實習公司的offer(戶口加不錯的工資的)。從去年11月份開始悶在家裡看書準備春招,同時投遞校招職位,甚至實習職位。今年3月份快結束了,找到某遊戲公司的c++開發的校招offer,薪資待遇對於我來說還不錯,bat水平。
--------------------------------+++-----------------------------
2.我是如何通過自學準備的?

3.找工作的歷程。

在家,手機碼字太慢了,接下來補充2和3.


建議有限。

覺得比較靠譜的兩個原則,放在前面說:
1.知識先廣後精,大致知道知識和行業是怎麼結合的。
2.別追逐職位和當前市場招聘熱點去學習,興趣第一/領域重要性第二/錢途第三。

下面是個人看法,眼光角度不同,我說的可能就是扯淡。
練手項目多看看高速消息隊列、資料庫、RPC。
這三者有很多領域重疊的甚至互為實現。

可以看看
RPC框架幾行代碼就夠了
用NIO框架實現一遍,然後當本地api用,填掉你發現的所有坑。
c++的陳碩有blog,可以找下

DB
資料庫的最簡單實現
加SQL解析,遠程訪問

或者做一個IM後台。
考慮下要實現哪幾個伺服器,怎麼設計協議,怎麼管理用戶數據,怎麼穿透,怎麼實現高吞吐,怎麼實現水平分割。

找工作面試應該都夠了,大部分業務系統都是類似結構。


本人背景 某985本碩應屆 化學專業 無計算機背景 去年10月開始自學相關知識。


我看的書比較少 按順序列一下吧

郝斌 c java視頻

大話數據結構

演算法 謝路雲

極課學院 Android開發

thinging in java

http詳解

劍指offer刷完

leetcode刷完

由於中途還是要實驗 總體時間在7 8個月左右
以拿到自己滿意offer 面試了幾家 覺得劍指是最重要的

~~分割線
最後簽的跟大牛沒法比,但我對這個跨專業,能夠跳出化學這個最大坑來說,已經很滿意。本來簽的美團安卓開發,前兩天tl問我願不願意轉ios,並沒多想就同意了。儘管我iOS完全沒接觸過。


不同公司招人的著重點不大相同,有的看重相關項目經驗,有的跟看重學習能力。


~~分割線

有人問到項目的事情,項目確實是很重要的。我中途算是做了兩個項目,但其實都很水。

一個是自己用java實現的爬蟲分析某些數據。

另一個可能都算不上項目(反正簡歷上面寫了),就是在計算機院的一個老師下面學了點機器學習的東西,比較了一下Ann和arma garch 沒做什麼東西。


五步幫你秒一切programming面試

古有養由基百步穿楊神技,今有Siraj Raval五步面試絕殺 ,提到Siraj Raval, 他可不是一般的編程大神,叫他「編程大神經」可能更貼切,了解他的人都知道,這貨逗比和神叨的程度絕非一般人所及,吐槽就更不用說了,自己去看。

今天要說的是,Siraj Raval為大家總結的面試絕技:-

來一起感受一下槽點滿滿的五步絕殺:

鋪墊:

面試官:請問你最大的缺點是什麼?(上來就問這麼犀利的問題)

面試者:我特么就是太棒了好么(沒有缺點就是我的缺點)

這麼回答的人,要麼真的牛x到極點,要麼就是喜歡作死

接下來,到了該潑灑心靈硫酸(講真話)的時候了:

Siraj Raval說:

誰告訴你面試就是小菜一碟了?

從來就不是好嗎?

網上那些經驗多數都是告訴你他本人如何牛x閃閃地拿到愛誰誰家的offer,你看有幾個血淋淋地描述自己如何被虐成渣了?

(那麼來看此文的你一定不是大神了

都看到這裡了

否認還有意義么?)

好吧,上正餐:

第一步:

先制定一個學習計劃好嗎?

你睡過幸福開心的每一天就能在豬場找到工作了嗎?

多數公司對相似的職位都有著相似的需求(好像是廢話)

一般來講,招聘流程都是這樣的:通過招聘專員的電話面試後,會遇到所應聘職位的技術相關的測試,通常是需要實際操作的:

在這個環節里,如果你長期關注目標公司,並且知道他們的痛點在哪,同時能夠提出有效的解決方案,那麼你被錄取的可能性就很大,但是,紙上談兵是沒用的,收起你那「天妒英才」的唏噓,看什麼都覺得容易上手但就是從來沒深入學習和實踐過的結果就只能是:

從入門到放棄......

然後異想天開地,一廂情願地等著自己這匹千里馬被伯樂發現

waiting for job offer

still waiting

所以,學習和實踐才是真正要緊的,但是學什麼和不學什麼也很重要,畢竟每個人的時間都是有限的,他們不會考你syntax之類的問題,只要你想學,你甚至可以一夜之間掌握basic ruby syntax,他們會考你那些不能一蹴而就的技能,比如:

大名鼎鼎的Homebrew 的作者Max Howell面Googles時因為不會在白板上翻轉二叉樹而悲劇的故事大家都知道吧?(不知到底是不是真的)

好了,接下來你可以看到Siraj Raval的軟文了,他就是想要通過視頻推薦「乾貨」給你,儘管有可能這些乾貨里可能魚龍混雜,但是可以保證的是,一定還是有料的,因為不添些真料無法抬高「魚「的地位,你懂的:

數據結構和演算法基礎課:

My Code School (Intro to Data Structures):
https://www.youtube.com/watch?v=92S4z...

MIT Open Courseware (Intro to Algorithms):
https://www.youtube.com/watch?v=HtSuA...

接下來,推薦HackerEarth 和HackerRank,可以靠解決問題得分的實操網站:

HackerEarth and HackerRank:
https://www.hackerearth.com/
https://www.hackerrank.com/

以及下面這些有關面試的閱讀資料:

Programming Interview Exposed:
http://books.lihui.org/cs2/Wiley%20-%...

Cracking the Coding Interview:
https://github.com/yuanhui-yang/Crack...

以及非常重要的模擬面試:

How to Conduct a Mock Interview:
http://web.stanford.edu/dept/CTL/Oral...

好長,終於來到第二步:

選擇目標公司

這一步做得也要科學一點,標記好應聘職位,聯繫人,投遞時間,狀態,跟蹤結果都是很有必要的

招聘信息網站:

Angellist:
https://angel.co/

HackerNews Who"s Hiring:
https://news.ycombinator.com/item?id=...

第三步:多元化自己的簡歷,不要一份簡歷醫用到底,對不同的職位不同公司,強調不同的技能:

Making a great resume:
https://medium.com/@order_group/job-i...

Passing the Interview:
http://blog.triplebyte.com/how-to-pas...

加分項目:

建個站也是不錯的選擇:

第四步:獲得面試機會

關鍵詞搜索大法:搜索公司名稱加招聘專員,與其取得聯繫,發簡歷吧:

第五步,終極大法,通過面試:

有時候問題的答案並不重要,面試官可能會更看重你思考問題的方式:

別忘了,要問問題,要有團隊協作的意識,不要被自己從前悲劇的經歷打到,要自信,因為你能完成這五步,就真的可以為自己鼓掌了。祝各位都能找到心儀的工作。

本文作者 @Allie

歡迎關注 @矽谷密探

緊盯全球創新趨勢


題主說的是怎麼通過自學找一份開發工作,我也分享一下我的經歷,畢竟蠻多朋友都在反覆苦惱兩件事,一是怎麼學,二是怎麼找工作(包括我一個徒弟,ta也在問我,說擔心學完找不到工作,感覺對大家都是心頭大石),這裡沒太多乾貨,僅僅分享心路歷程

自學的那個月我都想吐了

還記得那年夏天,人生中最黑暗的一個五月,我辭掉了某快銷公司的工作,開始了我的IT自學之路

好多人問我是怎麼下定決心的?怎麼就選擇了做IT,轉行為什麼不是其他行業?

那年我畢業了選擇做快銷,所謂的管理培訓生,工資只有3000多不到4000,本來也挺好,省點也夠用,突然間家裡給我打電話說既然工作了,家裡的情況也應該告訴你,我們家欠了5萬多,這筆錢你來還,兩年內就要還清,電話的一頭我根本說不出話來,腦袋砰的一聲,好像被石頭砸了一下,我一個月最多可以剩下來1000,我要50個月,就是接近4年我才還得起。

在那一刻什麼雄心壯志都是假的,連區區五萬塊都把我打死了,曾經年少無知狂言千萬不是夢,那會才知道我連5萬都要好幾年來還。那個時候我真的感覺好無助,那幾天腦袋一片空白,工作根本不在狀態,好不容易等到周末,以為可以和女票一起開心過一個周末,女票卻問我,什麼時候結婚,呵呵,結婚要多少錢,我根本不敢想,更何況我還要還債。就這樣我在心理崩潰狀態下熬到了過年,整整一個過年,我都在不斷地找招聘信息,不斷的問人,結論只有一個,在沒關係沒人脈的情況下,要兩年解決這些問題,我只有做IT,只有IT的工資比較高,並且穩定,可能有朋友會說你可以去做業務啊,沒錯,做業務是收入無上限,但也無下限啊,我根本承受不住這個風險,我只能做it了。

這就是當時我轉行IT的原因,不是因為什麼朝陽行業,也不是因為什麼個人發展,我是一個俗人,我有俗人的困難要面對,我有眼前的問題要解決

拿著僅有的一萬塊,住在出租屋裡,天天碼代碼。每天有凌晨沒早晨,但是一天沒後悔。好吧回到正題,那會我只有一萬塊,我只能閉關一個月,因為就算順利找到工作也要再過一個月才能拿到工資,根本沒退路,一個月就要學會,學會就要找到工作(曾在某個問題中回答中提到我用了一個月轉行成功,被不少網友質疑,我不想反駁太多,當你們面臨我這樣的情況,呵呵,找不到嗎?找不到也得找)

第一步:確定學什麼 我打了十幾個電話,找到業內的朋友,甚至是哪怕僅僅靠邊卻不是IT行業的朋友,問現在哪一個IT工種最容易找到工作,最後在綜合幾個朋友的意見決定做Android,不要問我是不是喜歡,是不是狂熱,我僅僅是想入行快一點

第二步:學習路線 大概搜索一下知道,我要做Android必須先學會java,因為Android就是用java編碼的,那好,兩本書,一本是《瘋狂java講義》一本是《瘋狂Android講義》,當時的我其實不知道這兩本書是好是壞,雖然我不懂,但是起碼常識告訴我入門級的書都是差不多的,我僅僅是用來了解概念的,他的pdf能找到,他的源代碼也能下載整套,那就enough了(多年的IT從業後回頭看這個問題,當時的判斷依然是對的)。

第三步:分階段開始學呀 僅僅一個禮拜的時間我看完了java的那本書,我不看很細,更加不去記憶什麼,我的目的是,首先知道java大概的語法怎麼寫,其次隱約java大概有哪些常用API即可,那是怎麼壓縮時間的呢,完全陌生的代碼我會自己打一遍,但是如果與之前看到的相似度很高,那我就直接運行書本代碼,看到現象和自己想的一樣就行,反正我又不去背誦。又花了兩個禮拜我就看完了Android那本書,怎麼看的呢,我把View那一部分重點看了一下估計這個花了一個禮拜,四大組件我又花了一個禮拜,其他零零散散的知識就是走馬觀花的看。第四個禮拜我開始做一個自己的demo,也就是現在所謂的面試作品,那個時候因為自己之前是走馬觀花,等到要做demo的時候,我已經忘記了大部分的View怎麼用,無所謂我又翻了翻之前的書本代碼,我直接copy過去(你沒看錯,我就是直接copy過去的),等到我把該copy的都copy過去之後,又簡單做了一個伺服器,沒錯你也沒看錯,我一個學客戶端的自己做了一個簡單的伺服器,怎麼做的呢,我的筆記本充當了我的伺服器,用socket與我的app交互,就這麼簡單,連續的一個禮拜,我不斷不斷的修改我的界面代碼,盡量的修改到和市面上的app比較相像。那個月我完成了我的demo

找工作其實比較順利

第二個月的第一個禮拜,第一次面試,難道這就拿到第一個offer了?,本來信心滿滿,人家問我你知不知道內存定址是什麼。。。。。。我呵呵了,回到住地,馬上修整,惡補了數據結構 網路 系統等等的面試題,不管大題小題,先刷一遍,當時真的是能理解就理解,不能理解背也要背下來。就這樣又修整了一個禮拜,重新出發,只要有面試一定去,去了我都是先表明態度,我是轉行過來的,我願意學,也願意干,就是希望有機會,可能是我足夠誠心吧,陸陸續續就接到了不少的offer。

工作以後發展如何?

如果說轉行第一份工作可以用謙卑用誠懇去換來,那第二份工作真的就得靠大家的實力了,當時找到工作的我其實明白自己與其他人的差距,惡補啊,敢說當時的那間公司最拼的一定是我,入職的第一天起,我就定下目標,一年之內一定要進大廠,工作之餘不斷看那些大廠的要求,可以說我的第二個工作面試足足準備了八個月,你真的沒看錯,我準備了八個月,最後也如願以償

寫在後面

其實朋友們,不要再去想什麼現在移動互聯已經過去了工作不好找了什麼的,真的,你第一個轉行的工作你也不會想著能進大廠吧,如果是小一點的公司,你真的願意學,又何必在乎說工資開不了多少呢,你真的想找,偌大的中國即便就是深圳,你真的找不到嗎,找了一個月找不到就到處說找工作很難,什麼經濟不景氣啊,其實有些時候是我們沒把自己逼到絕境。當你找不到工作就會餓死的時候,相信我你真的能找到一份程序員的工作。對了,曾經還有人和我說,你那是碼農,不是程序員,我想做程序員,這裡其實是不是更應該擺正心態呢,你想找個機會入行寫代碼,你難道還挑三揀四?就算你剛開始做的是所謂的碼農,難道就不能變成程序員嗎?


我是辛勤的搬運工! O(∩_∩)O~

+++++++++++++++++

培訓

想到就要去做,我們樓下就有一個電腦培訓中心。我告訴他們,我要學C#,問要多少錢?答案讓我吃了一驚,「我們教不了」。

「你們不是電腦培訓嗎?」我有點迷茫。
「你這是程序,我們是教打字上網辦公軟體的」,小姑娘挺無辜。
「那,那,那我到哪裡可以學?」
「吧啦吧啦……」

我回到辦公室,覺得這個問題可能和我想得有點不一樣。怎麼辦?萬能的百度啊(那時候我真不知道百度Google的區別)!結果出來了,哦,原來還是有幾家培訓機構的,但哪一家好呢?

我靈機一動,挨個給這些培訓機構打電話,「喂,xx中心嗎?我是xxx公司,想招幾個程序員,你們能不能推薦幾個?」然後一水一水的年輕小夥子就來了,我怎麼面試呢?沒面試,就做題。題從哪裡來?萬能的百度呀!

被我欺騙的程序員同學們,原諒我吧。 但你們也真得反省一下,就我一份從百度上搜到的爛大街的題目,你們都答不出來,你們究竟有沒有認真準備一下面試?

我也懶得對答案了,很多人一片一片的空白。很明顯,答得最多的勝出!就這家了。

我打電話詢問,「你們學費要多少?」
「我們一共學完,是兩萬三千多的樣子。」電話里妹子的聲音很溫柔。
「你們怎麼不去搶啊!」我噴她一臉的口水!當然,只是在心裡。這不符合我溫文爾雅的形象嘛!我反應這麼強烈,是因為之前我心裡一直以為就應該是七八百兩三千的樣子。兩萬,已經以萬為計價單位了,我裝一套房子報價也才兩萬塊!
整理了一下思路,再問,「要學多久呢?」
「兩年。我們三個學期,第一個學期半年,第二個學期半年,第三學期一年……」

我的心裡的怒火熄滅了,但心也變得冰涼冰涼的一片。

這時候,我已經畢業五年了:一事無成!更重要的是,我是輸得一事無成,我是從九天之上被打落凡塵。更更重要的是,我不是被命運被別人打落凡塵,我是自己一路折騰把自己玩死的。我像一個輸紅了眼的賭徒,我要把所有失去的再一把贏回來。現在你告訴我,要上場,你就還得再等兩年?

短暫的失神之後,我咬了咬牙,一股子倔勁又上來了,「我認準了的事,刀山火海都得上!」

我來到培訓中心,考察了一下他們的課程,然後說了我的方案,「我就學中間這一學期」。這樣我就只需要半年的時間了。接待我的老師大吃一驚,「你這樣不行的!你跟不上進度怎麼辦?我們沒辦法給你文憑……」

「我什麼都不要!你就把我當成個旁聽生就行了,學成學不成都不怨你!」我大手一揮,氣壯山河。

然後,我關了公司,賣掉了汽車,背起了書包,和一大幫毛頭小子坐在一起,開始了我的編程之路。

真 心坑爹啊!說起來都是淚……我一個文科生,從中間開始學編程,這是一種神馬體驗?是「坐飛機」的體驗呀!我26年的人生中,第一次體會到什麼叫「上課坐飛 機」:老師講的每一個字我都聽得懂,但連在一起我就什麼都不懂,完全不懂他在說什麼。上機好一點,我TM至少知道開機。當然,除了開機我其他什麼都不會 了。

怎麼辦?就倆字:硬啃!首先我找同學借來他們第一學期的書,從第一頁開始學。中間不懂的就網上搜,向同學老師問。培訓班課程是一周三天,我就一周七天的趕!

實事求是的說,現在真的是一個非常好的時代。任何知識,只要你想學,總是能找到無數的資源——互聯網帶來了太多的便利。我很快就知道了csdn、cnblogs之類的網站,問的問題很快就會有答覆。

我以一種肉眼可見的速度快速成長,上課我可以舉手回答所有同學都回答不了的問題,csdn上我也可以回答問題賺點積分,現在都還記得csdn上得了第一課小星星時候的興奮和激動。

一眨眼,我的半年培訓就結束了。是該找個地方試試手了!

軟考

稍稍修飾一下簡歷(就不要寫自己是裝飾公司的老闆了,就公司的網站維護吧)。為什麼要轉行?興趣,完全是對代碼無限的熱愛驅使我走到今天!唉,不知道是不是類似的話說多了,有時候我自己都相信了。

所以,給各位HR一個小小的建議,一些敏感問題,問一問聽一聽就行了,千萬別當真。能力尚可,要價不高,就可以了。態度熱情之類的東西,誰知道呢?

我 很快騙到了第一份工作。一家遊戲公司,要招一個人給他們公司做個網站。老闆開始應該沒看上我,第二天我就打了個電話,非常誠懇的表示我非常看好他們的事 業,非常的喜歡這份工作——老闆心一軟,就答應了。(就這麼簡單,面試之後打一個電話,你的求職成功率至少增加五成!可是很少有人這麼做。)

工作比較清閑,因為他們都還忙著開發遊戲呢。而我,就開始了我的另一個重大工程,準備軟考(詳見:計算機技術與軟體專業技術資格(水平)考試)。

進入這家公司之後,就知道了行業內對培訓畢業生的歧視。此時的我,對於歧視,沒有什麼太多的情緒,唯一需要弄明白的是,為什麼會有這種歧視?面對這種歧視,我應該做些什麼,我可以做些什麼?

同 時在實際的學習工作中也發現了自己的不足,有些資料文檔自己還是看不懂,我乾脆就把這個問題原原本本的扔到網上。大概是「IT培訓班畢業生接下來的路怎麼 走」之類的,終於網上有人告訴我,培訓幾乎都是以實用為目的,缺乏「基礎」教育,所以我要想提高的話,最好能去參加一次軟考,過了軟考怎麼怎麼牛B之類 的。

和司法考試一樣,軟考也是有指定教材的;和司法資格考試不一樣的是,這個教材是根本看不懂的!我又在網上下載了視頻,沒用,吧啦吧啦 講的些什麼東西啊?本來熱情高漲的信心被嘩的潑了一瓢冷水,看著那些什麼樹啊、圖啊、狀態機之類的東西,一種無力感悄悄的從心裡升起,隨之而來的就是困頓 彷徨。

公司在郊區,所以平時我們都住在公司的宿舍里。每天晚上,我都出去跑步,在沒人的馬路邊上跑啊跑啊,眼前是昏昏沉沉的夜色,寂靜的 夜裡能聽到我的喘息和蟲兒的鳴叫,迎面而來的風似乎吹走了那些煩躁焦慮,身體的疲乏反而能讓我的思路更加清明——我已經沒有退路,只能向前,向前,跑步向 前。

不就是個軟考嗎?別說你是塊硬骨頭,就是塊石頭,我也要把你啃下來!啃不下你,我就把我一口牙一口血給你!!!

我真的是瘋了!現在寫下這段文字,我的雙手都還止不住的顫抖——那種絕望和力量,就像被逼入絕境的野獸,亮起它的獠牙。

我 慢慢的明白,我之所以看不懂軟考教材,是因為這教材里的每一個章節,都是大學計算機專業里的一門課程。這個教材,更像是一個大綱一個提煉總結,是給那些已 經學過了《計算機基礎和原理》、《編譯原理》、《數據結構和演算法》……的大學畢業生作為考前複習資料看的。所以,我要做的,就是先把這些所有的課程學一 遍。

這家公司沒有我想要的東西,我果斷辭職,全身心的投入,備戰軟考。我來到圖書館,因為這裡的書夠多。比如數據結構,這本書我看不懂, 我就再找一本,還看不懂,我就再找一本……總有一本書,能用我懂的語言,告訴我這究竟是怎麼一回事!一本不行就兩本,兩本不行就三本……空蕩蕩的圖書館 里,我有一種進入了金庸武俠世界,博採眾長,修鍊高深武學的感覺。這種感覺不斷的刺激著我的腎上腺素分泌,那種日夜不止的亢奮,直到今日,我都再也沒有能 體驗到過。

但人終不能勝天,雖然我盡了我最大的努力,但時間還是太緊了。「這一次肯定不成了」,我苦笑著告訴我家人,「身經百『考』,我好歹也要『掛』一次才是圓滿啊!」但說這話時,我的心裡卻沒有太多的情緒。或許,真的開始明白那句很俗套的話,「努力過,奮鬥過,也就夠了!」

沒有想到的是,這一次,老天給我開了掛!試卷泄密,考期推遲。你能感受到我知道這個消息之後的心情嗎?老天都幫我,我TM不整出點響來我對得起誰?

走出考場,我就知道,這次我肯定過了。成績出來,我一樣的冒出合格線一大截。我開了一瓶紅酒,和家人一起慶祝這次勝利。

我 是真的高興,比高考司考過了都高興。在沒有任何基礎的情況下,我用4個月的時間,完成了大學四年的教程,一次性的通過了據說很多計算機專業畢業生都通不過 的軟考!我像狼一樣的嚎叫,我淚流滿面咬牙切齒的叫囂,「就算我以後一輩子都是個笑話,我有這一次證明就夠了!就夠了!」

十年磨一劍,重劍已經成型!

+++++++++++++++++++++++++

不斷的有同學問我究竟是怎麼做到的。我想,最主要的,應該是壓力,是那種強大的壓力激發了我的全部潛力。當時,我已經畢業六年,創業失敗公司破產,「不務正業瞎折騰」的冷言冷語變成血淋淋的現實;老婆挺著大肚子,我不想我的孩子一睜眼就看到一個落魄潦倒的父親……

「窮寇莫追」,因為沒有退路的人是最可怕的!

+++++++++++++++++++++++++

再戰上海灘

接 下來的日子特別忙碌而甜蜜,因為我家的小天使誕生了。這個新生命的降生,讓我第一次對生命滿懷敬畏。從此我就不再是為一個人而活,從此就有那麼一個可愛的 小精靈,她把你當成天當成地,當成英雄當成玩伴當成牽掛。所以後來,我看YY小說,「推倒」都迅速略過,最爛俗的「下崽兒」還看得津津有味。是啊,穿越到 這個世界,直到當了爸爸,才證明你在這個世界紮下了根,這個世界才不再是一場遊戲一場夢。

「男人啊,等他娶了婆姨生了娃兒,就自然有個定性了。」這句我常常取笑的台詞,原來是真的。人,真的可以一夜成熟!

很抒情,是吧?但抒情不能當飯吃,我這個無業人員也得給孩子掙點奶粉錢表示表示啊!一轉眼就過了春節,我決定再到上海去看看。

「紙上得來終覺淺」,有了上一次創業的血淚教訓,這一次我一定要腳踏實地一步一個腳印的把這門核心技術學到家。閉門造車是絕對不行的,只有大上海,才有足夠多的機會讓我能接觸高人開闊視野。(三線城市做軟體開發的與大城市的差距有多大? - 自由飛的回答)

所以,就像一個出門求學的遊子,我告別了我三個月大的小女兒,再一次踏上了漫漫征途。

到 上海的第一個感覺就是這裡的互聯網非常發達,從機場到市區的路上,我就看見了好幾個大概是訂餐網站之類的大幅廣告牌。找工作自然也是通過網路,「海投」 (就是不看招聘要求大量的投遞)唄。招人的公司太多了,實在看不過來。然後就挨家挨家的面試,因為抱著見世面交朋友的想法,我一點都不急,各種各樣的公司 我都去看一下,至少可以看看他們的裝修風格嘛。說實話,就連裝修,上海都比我們那裡高出一大截。我在心裡嘆氣,「見識啊見識啊!」

第一份工作來得十分搞笑。去了之後,簡單聊了幾句,給我兩頁紙一支筆,做題吧!咦,這些題好眼熟?我就挨個挨個的答吧,答到第二頁,面試官走過來,「哦,答了這 么多了?後面的就算了吧。」繼續談,「期望薪資多少?」我記得好像最後談成3500。第二天入職報到,一周過後,我終於證實,面試我的人根本就不懂技術, 他就一美工,面試題都是網上隨便下載的。讓人不由得感概命運的神奇——要知道一年前,我就是這樣挑培訓機構的,哈哈哈!

我開始了我真正意 義上的程序員工作——從切圖開始。這是一個移民中介公司(不知道面試時我的準備出國留學經歷有沒有給我加分),我屬於市場部,負責網路推廣中的技術支持。 公司就我一個程序員,另外一個是美工,基本上也就能把效果圖做出來而已。大概差不多切了兩星期的圖,陸陸續續就有一些簡單的開發任務。沒有人可以幫我,任 務扔過來,我就得想辦法把他弄出來。經常弄起性子來就忘了下班,反正一個人在上海,晚高峰地鐵擠得要死,回家還是看書。

上海的天黑得早,走出辦公室,外面已是一片燈火輝煌。忙完了一天的工作,回家的路上,塞上耳塞,百聽不厭的歌聲就響了起來:


曾經多少次跌倒在路上
曾經多少次折斷過翅膀
如今我已不再感到彷徨
我想超越這平凡的奢望
……

伴著旋律的行走有一種特別的感受,彷彿在雲端。

慢慢的,對代碼就有了感情。那是一種操控感,給人一種成神的幻覺——是的,在代碼的世界裡,你就是神。你制定這個世界的規則,你操控一切,你賦予代碼生命和 靈性,一個個字母從你的指尖流出,像一個個跳躍的音符。尤其是當辦公室里後排的美眉,一次聊天時有些好奇有些崇拜的問我,「看到你一天到晚就在鍵盤上敲呀 敲呀,完全看不懂的東西,你是怎麼弄懂的?」百分之兩百的爽爆了,有木有?!

炒魷魚

但很快,我發現這裡有 點喂不飽我了。工作雖說不是遊刃有餘,但也基本勝任了;關鍵是周圍沒高手沒氛圍啊,純粹一手工作坊的感覺。我千里迢迢到上海,就為了這樣一份工作,不值得 啊!但考慮到「頻繁跳槽」好像不太好,就將就待滿一年吧,自己也趁機再夯實一下基礎。我這樣打算著。

但很快發生的一件事打亂了我的部署。一次部門開會,我和老大吵架了,拍了桌子摔了門。老大涵養很好,後來找我談了次話,反正意思傳達到,誤會誤會冰釋前嫌;我其實沒把這當回事,就順驢下坡,趕緊認錯道歉。老大還自掏腰包,請大家吃了個飯,把酒言歡,其樂融融啊!

差不多十來天過後,老大的屠刀亮出來了。就在我試用期快滿的前幾天,「勸退」(這我當時學會的新名稱,還挺委婉)。「哈哈哈哈」,我在心裡仰天大笑,「小樣兒,還挺陰險!」但臉上還要表現出正常的驚訝憤慨不甘悔恨羞愧的複雜表情,讓他爽一把嘛!

接下來辦離職,人事的姐姐看著我就忍不住的笑,笑了一下午。「你有點同情心好不好?我被開了好不好?你笑得這麼happy,讓我情何以堪?」她笑得更歡了,「我實在忍不住,是你的表情太搞笑了!」咦,難道我裝得不像?演員的自我修養還得要提高啊!

些許蠅營狗苟魑魅魍魎,不值一提。但我比較心虛的是,我老婆過兩天就要來上海了;她剛到上海,我就告訴她我被炒魷魚了?

去 機場接她的時候買了一束花,老弟在旁邊笑死了,「哥還挺浪漫!」其實我的心裡,是一份愧疚和感動。很久很久以前,我追她的時候,她就很擔心,「我們現在都 還在讀書,以後畢業了找工作,誰知道能不能在一起?」我不以為然,「你擔心這個幹嘛?就這樣,我一句話撂這裡了,『以後你去哪我就去哪!』」少女的心裡滿 滿的踏實和安穩,一臉羞澀的讓我握著她軟軟的小手。我牽著她的手,這些年卻是東奔西走,我走到哪她就跟到哪,從來沒有一句怨言。就像這一次,我知道她不想 來上海,但她知道我想來,於是她就來了。不知道她是否還記得我當年的承諾,但我記得,一輩子都會記得!

作者:自由飛
鏈接:《折騰》三卷:孕育 (初稿)哪裡可以看到? - 自由飛的回答
來源:知乎
著作權歸作者所有,轉載請聯繫作者獲得授權。

+++++++++++++++++

又一次重溫這些滾燙的文字,想起那往昔的崢嶸歲月,心潮湧動;
再一次的踏上漫漫征程,彷彿看到旌旗飛揚地動山搖,壯懷激烈!
願所有過去的痛苦和光榮,賜予我前行的智慧和力量。

—— 2016年9月27日夜


唉!沒想到還是「轉行做程序員」這一部分火爆。
知乎真的是碼農一統江湖啊。
要乾貨的同學:

自學入門:

  • 如何轉行(自學/培訓)到IT/編程/互聯網/軟體開發/?
  • 自學編程需要注意什麼?
  • 如何自學成為程序猿?

對自學/培訓程序員的看法:

  • 野生程序員:優先招聘
  • 程序員歧視培訓出身的(是不是這樣?),那麼同樣歧視自學出身的人嗎?

如果入門了,有興趣提高:(其實現在就可以看,大部分是外行都能看得懂的)

  • 項目管理和架構之路 - 知乎專欄

關心我所有過往的:

  • 《折騰》 - 知乎專欄

一個水產養殖的本科畢業生距離成為一名程序員有多遠?--來自我的好朋友LJ

這張天安門的照片是17年1月2號晚上 LJ 發我的一個微信小視頻,我截取的。

這是LJ第一次到北京,公司外派出差。

幾年前 LJ 本科畢業,學的是水產養殖(一個供不應求的行業),去了一家養殖場,幹了一年,感覺不喜歡,就辭職了。

後來準備考計算機的研究生,沒考上。

6個月前,LJ還在重慶,那時候他說想去深圳。

之後過了有1-2個月,他去了深圳,學習了大約3個月PHP,然後就找工作。

一個月前,我們聊,他說找到工作了,在深圳一家創業公司干,試用期5k,轉正7k的樣子。

「恭喜LJ正式成為了一名碼農!」

一個水產養殖的本科畢業生距離成為一名程序員有多遠?

差不多半年的時間,雖然只是超級菜鳥級的程序員。是不是很快?


瀉 @origin 葯。

你邀請了我回答這個問題,我沒做過測試,還專門跑去請教了我的室友(阿里巴巴高級測試專家,p8)對這個問題的看法。
他說了幾句話,希望對你有所啟發:測試轉開發在阿里很常見,方法很土,你只要儘可能多地接下團隊里的開發需求,慢慢把研發能力鍛煉上來就行了。但是整體來說電子商務公司(比如阿里)都是急功近利的,希望你一旦進入新環境就要立刻奉獻,不像google有著完整的培養計劃和試錯環境,所以社招靠純自學是不太現實的(不系統),最好能藉助現在的團隊/環境利用項目上手去轉。

大概意思就是這樣,我這個人從小語文比較差,你看懂就行啦。

書還是要看的(基礎),但是項目更重要(實操)。


寫一下自己的自學歷程

2009年中旬(還在大學)開始學譚浩強C語言程序設計,啃了整整1個學期

2009年寒假開始啃數據結構和演算法,300頁的小薄皮,啃了1個寒假

2010年開春又補習了王爽版的彙編語言;還順帶學了一系列雜書,比如TCP/IP,單片機,鳥哥的linux私房菜等等

2010年暑假繼續啃高級UNIX編程;把大部分習題能做的都盡量做了

2010年10月份去北京實習,進去就開始參與正式開發工作,第一份工作就是使用C+vala語言混編,開發一個MQ供公司內部使用。

=========================輾轉的7年過去了的分割線=========================

對於學習IT技術,其實有一個方向,就是從外向里學。

從操作系統來講:

操作系統使用----&>腳本和運維基礎---&>應用開發和api開發----&>驅動和內核開發

從左往右看,知識結構是不斷從外層向內層遞進的;而且剛好是運維人員---一般開發人員---高級開發人員的知識結構的遞進。


還有一個方向,就是輕語言,重演算法。如果專註於語言,學了一堆的開發語言,演算法該不會還是不會;但是如果學了一堆的演算法,而且自己實現起來比較6,那麼學習開發語言就是勢如破竹。


自己寫個小型stl庫真心沒必要,很多人會寫,卻不會用,建議選擇並深入一下自己的方向,客戶端軟體就研究下mfc和開源界面庫,伺服器開發就學習下網路io模型和資料庫


謝邀。

給題主說點有用的東西吧:

我見過不少測試轉開發的,這些人的情況一般是:

1、在上家或者上上家公司是開發,到這家公司開始是測試,後來因為開發確認而轉開發;

2、測試直接找開發的工作。

不知道題主公司性質怎麼樣,如果公司有測試轉開發的先例,可以嘗試跟開發部門的領導溝通一下,這種方式最容易。

如果公司沒有這種先例,那麼只能走第二條。

第二條就是跳槽找新工作。

首先你要選好你找工作的方向,看題主的經驗都是C++,那麼你測試的東西是否是C++開發的?如果是那麼還好,如果不是,請問你為什麼學C++而不是C或者Java?要知道你目前的工作經驗如果能傳承到你的下一個開發工作中,那麼這是一個加分項。

按照題主的目前的水平,有兩種選擇:

1、自己接受作為一個應屆生的水平去筆試面試。

2、提高自己的水平。

不要認為第一條很不好,實際上如果自己跟一群應屆生PK,你自己難道不會勝出嗎?還是連這點自信都沒有?實際上很多時候跳槽如果是改行、做自己從來沒做過的東西的時候,都需要有勇氣去把自己當成一個應屆生。我過去從網路跳到設備驅動開發,實際上也經歷了類似的過程。

如果是第二條,那麼就趕緊做點項目出來,寫一個超過一萬行代碼的項目,代碼規模越大,越能考驗你的編程能力,如果能做到這一點,那麼找工作是有望的。

看多少書是基礎,寫出多少東西才是你找工作的底牌。看書的多少沒必要寫到簡歷上,寫上去不會是你的加分項,甚至可能成為你的減分項,比如,你讀過《c++primer》,那麼如果有人考了你其中的某個問題,你回答不上來怎麼辦?所以,還是不要輕易寫你讀過什麼,除非你確認你真的認真讀過。

另外,也可以通過先跳到小公司做而打醬油的開發,然後再跳大公司的,以小公司作為跳板也是可以的。

不太建議偽造工作經歷,當然這個看情況了……

大概就這些了。


我是北京某不知名學校的專科生,對於有關編程的領域專科生一直毫無立足之地。高中因為頹廢所以沒有考上大學,但是在編程方面的學習我一直富有激情。從VB入門,後來由《DirectX 遊戲開發終極指南》的引導開始自學C++和DirectX。現在開發出了一個較為完整的遊戲引擎,雖然不夠健壯,但是五臟俱全。現在正在以此為基礎開發我的第一款有關坦克大戰的遊戲,當做入門作品。此時處在解決剛體碰撞問題的階段。
對於在這裡的大多數人來說,我自學的應該更加純粹。不僅編程全靠書和百度,甚至數學和英語都從零基礎開始。與DirectX相關的程序開發需要大量的線代知識,於是就去網易公開課自學。由於起始設定比較低,所以我的自學經歷應該更富有借鑒價值。當然現在還沒到找工作的水平,也談不上分享,希望混個臉熟。


我自己的經驗對你沒有參照意義啊。我是從生物信息學項目里得到的編程訓練,先是shell,然後是Perl,後來閑得蛋疼就學了C++。做的軟體項目也是研究課題直接相關的,大都是基因組分析工具。
我覺得你可能需要做一些實用工具,可以讓自己的能力得到綜合鍛煉。比如自己YY一個簡單的語言,實現一個編譯器。


謝邀.
贊同上面簫同學看法.
你可以邊工作,邊學習.
你自己學習C++的路徑,沒有太大問題.可以按照這個思路繼續.
簫同學寫過不少C++學習方面的答案,自己可以去翻翻看.

提醒一點:
想1年內掌握好C++,並找到合適的C++崗位的工作,不太容易.
C++崗位招聘,對初級C++程序員新手,很不友好.通常不太願意帶新人,都喜歡熟手.
你投一下簡歷,面試一下,就知道了.
自己把握.
提供2個策略.
策略1:

可以先去應聘C程序員崗位,慢慢再轉崗.
進了公司,再轉C++崗,就容易很多.

策略2:

公司內部轉崗.測試轉開發.

你現在在公司里做測試,如果公司還不錯,沒必要跳.
努力學好,然後證明自己的工作能力.
再找你部門老大和想轉崗的部門老大,一般公司內轉崗要求低太多.

@vczh 也有提到過,代碼寫的不錯的測試,很容易轉去做開發的.
大部分公司一般傾向內部找到合適的人員.
我也有知道的測試同事,這麼干成功的.


其他方面,我覺得沒啥可說的.
我下面這個答案,說了一些行業內的狀態.可以了解.

文科生如何轉行當程序員?考研是最好選擇嗎? - 知乎用戶的回答

good luck.


機會會青睞有準備的人, 我只講個身邊的例子給樓主打氣吧, 另外, 謝邀.

例子很簡單, 有個男測試, 也是一直自學, 經常來找我問些基礎的問題. 半年後, 公司組建新開發部門, 技術負責人想招些新手開發, 我順嘴推薦了下, 負責人考核了下覺得可以, 於是他就轉開發了. 再半年後跳槽到一個更靠譜的公司與項目

多嘴一句, 為什麼要跳槽呢, 因為待遇沒變2333


推薦閱讀:

有哪些看似簡單其實非常精妙的代碼?

TAG:程序員 | 編程 | 信息技術(IT) | C / C++ |