作者:小傅哥
部落格:https://bugstack.cn
沉澱、分享、成長,讓自己和他人都能有所收穫!?
一、前言
20萬行程式碼寫完,畢業了找一份工作不是問題!
剛一畢業因為找不到工作,就得報名去參加Java培訓的大有人在。並不是說參加培訓就不好,只不過以你現在這個畢業的時間點參加,就會顯得特別匆忙。因為你的壓力既來自於培訓還需要花家裡一筆不小的費用,也有同班同學已經找到一份不錯的工作開始賺錢的比對。
大學四年其實有足夠的時間讓你學會程式設計,也能從一個較長時間的學習中,知道自己適合不適合做程式設計師。就像我的同學裡雖然都是計算機或者軟體工程專業,但畢業後並沒有都從事軟體開發工作,或者從事了一段時間發現並不適合這個行業而選擇到其他領域發展。
所以如果你是真的喜歡程式設計,那麼在這個行業裡工作你會很開心,如果不是那麼往後路還長,你所要面對的晉升
、加薪
、跳槽
都可能成為一道道障礙。目前可能你還是新人不瞭解自己是否喜歡程式設計開發,那麼可以在以後的學習中體會,自己是否願意為一個執行結果調來調去,輾轉不寐的研究分析,只為最後那一個執行通過而激動!
當你可以在激動和開心中寫完20萬行程式碼,對於畢業後的求職找工作來說幾乎可以叫你一聲麵霸,也可能你在實習時就被公司直接留下,這是個人才組織需要你!
20萬行程式碼看上去很多,但放在4年的大學學習中並不會有多難。平均每天200行,一個月是6000行,一年算10個月是6萬行,三年就有18萬行。這20萬行程式碼會把你從一個程式設計小白,帶入到熟練使用Java相關API,也能給你帶入到初級工程師的水平。
初學程式設計你可能想把一句程式碼完整敲下來都不容易,就更不用說執行出結果了。因此此時你的大腦和手還並不能迅速理解你眼睛裡看到的這一行行程式碼都是啥,要幹啥。這就像新買回來的鋼琴手指頭上去摸肯定是生硬的,敲出的聲音也不連貫。這個階段只能是照著例子大量的寫,度過一個熟練期才能更好的學習。
為了可以讓更多的小夥伴理解這件事,我會從我的在校
、培訓
、外包
、跳槽
、階段成長
以及找什麼樣的工作分享給大家作為參考,最後再把我整理出資料
一併分享給大家。
二、經歷
12年10月25日,在CSDN發的一個帖子 拿到兩個offer,一個7k,一個轉正稅後4.5k。求意見! 距離現在它已經過去好久了,當時也是因為拿到了兩份offer的選擇糾結,所以發了個帖子求問。好氣的是當時竟然不知道去面試面試網際網路公司,資訊太閉塞了,而且培訓的地方並沒有說過網際網路一些公司的資訊。
講一講我這7k的經歷;
- 12年07月,校企合作來北京昌平一個小縣城的地方參加中軟培訓
- 12年10月,培訓接近尾聲,開始找工作,月薪7k的中軟就是最後的選擇的地方,放棄了在北航院內的國家科技
- 12年12月,雖然拿到中軟Offer但遲遲不讓入職,電話聯絡了很多次我說可以先去實習,但都說等通知。沒辦法,在北京也不可能就硬待著,回家的話也麻煩行李、住宿都得折騰,所以又面了一家中科軟進去實習了三個月,賺點錢養活自己
- 13年03月,中軟的通知終於來了,但竟然是參加崗前培訓,又被培訓了一次,當時特別討厭培訓,每次都是講Java基礎,差點生氣懟老師
- 13年09月,在中軟正式轉正,也就是說培訓完又是實習,7月份畢業後9月份才入職為正式員工,心裡有點不爽,埋下了一個後續跳槽的種子。哪有實習這麼久的!
- 15年04月,第一次有跳槽準備,畢竟寫了兩年的C#寫夠了,面試了第一家網際網路公司,樂視致新,不過後來沒去,被公司留了下來
- 15年08月,之前談的留下來漲薪,但最後少漲了1千塊錢。所以繼續面試,還算順利面了兩家,最後在8月25日跳槽進網際網路完成。
以上整個過程就是我從學校
到實習
到找工作
以及最後跳槽
的一個階段性經歷,也有過在這條路上跌跌撞撞。就像;
- 雖然我面到了中軟管培生,但錯失沒選擇要北京戶口,而是要了400塊房補
- 在中軟9月份從實習轉正式員工,錯過了第二年的入職滿一年才漲薪的條件(但我覺得這個有點故意坑了)
- 明明是學了那麼多Java,但卻寫了兩年C#,大家還是要選擇自己喜歡的語言進行工作,否則會很麻煩
- 提了離職,基本就不要想著再留下來,無論什麼條件。哪怕錢和職位滿足了,心裡也有隔閡以及個人對沒經歷過事情的一個期許
- 從傳統外包跳槽的網際網路,並不那麼容易,技術使用的不同、開發場景的不同、組織關係的不同,一切都可能是從一個較低的位置重新開始。你需要自身技術不錯,也需要一個好人帶
- 但當時在的傳統也有不錯的點,比如可以5:30下班,帶我的經理人很不錯,公司也不那麼累,有時候還可以出差溜達溜達。
三、學習
一個大學生會經歷在校、實習、就業幾個階段,其中在校學習屬於蓄力階段,要學習很多知識才能支撐起來將來的實習和平穩就業。
蓄力階段的學習,主要是對程式設計技術的基礎的夯實,以及多學習與數學相關的內容,比如;資料結構、演算法邏輯,這些知識對將來在技術上的提升和造詣都是非常好的基石。下面就是整個大學過程中在程式設計學習過程中需要經歷的階段,如圖;
- 熟悉工具:初學程式設計後你大概會接觸到一系列的研發工具,包括IDEA、Eclipse、Navicat、Maven、Git、Tortoise、SourceTree、Visio、Xmind等等,工具的熟練會讓程式設計更流暢。
- 編寫程式碼:此時你需要大量寫程式碼,寫很多的程式碼,因為你幾乎就是需要靠寫程式碼把整個所學的程式語言熟練使用起來。總不能手生到寫完 public,寫不出來 class,這跟我不會彈鋼琴一樣,敲完了1,後面不知道要在哪找下一個音符♪了。
- 功能開發:小的功能開發是綜合鍛鍊技術使用的階段,比如做一個計算器、求一個水仙數、從一篇html中摘取你要的資訊等等。此段經歷會解決你之前感覺學完技術沒出用的痛苦,現在你可以想象出各種場景問題,之後用程式碼去處理。還可以幫助英語系的小師妹,把她需要背的單詞從網站中爬取下來,彙總出各類熱詞、語句、摘要等
- 專案開發:小功能練手後,接下來你就可以做做專案了。比如你常聽到的圖書管理系統、教師教學管理系統等等。如果覺得沒有意思,你可以從哪裡獲取專案呢?從你用到的各類APP中,把這裡用的功能簡化,之後做一些專案開發。比如一個簡單的商城、抽獎、全物流單號查詢。另外你還可以在github中查詢一些專案,去參考學習並自己動手實踐。
- 資料結構:可能初學程式設計並不會對資料結構有多少思考,也想象不到這類內容是用在哪的。但其實這類技術內容早已被你天天使用,例如:LinkedList、ArrayList、HashMap,這裡就包括了
陣列
、連結串列
、棧
、佇列
、雜湊表
、樹
、堆
等各項資料結構,當你將來要開發一些較大型的網際網路應用程式時,你所有的邏輯設計都會考慮到資料要如何存放,資料結構如何設計才能更合理的被程式使用。 - 演算法邏輯:學完資料結構接下來要做的就是對演算法邏輯的學習,這裡不僅僅是簡單的刷題,而是在資料結構的上使用演算法將資料更合理的存放和讀取以及做相應的操作。就像你能逐步瞭解的;排序、二分、旋轉、洗牌等等,以及將來還會在閱讀JDK原始碼中會看到,擾動函式、負載因子、拉鍊定址、開放定址、雜湊雜湊、除法雜湊法、平方雜湊法、斐波那契(Fibonacci)雜湊法等等。
- 設計模式:當你開發了很多很多程式程式碼以後,你會逐步的思考怎麼才能讓這些程式碼有可複用性呢,怎麼寫才能讓更多人讀懂呢、怎麼實現才能讓再接需求時能更快的承接呢。這些都會隨著你開始實習真正接觸到公司級的程式碼開始逐步的感受到的,寫程式碼不是一錘子買賣,也不是炫耀技術,當你有更寬的視野範圍時,就會思考的更多。這裡推薦閱讀《重學Java設計模式》 這是一本基於網際網路真實案例編寫的Java設計模式實踐圖書。全書以解決方案為核心,從實際開發業務中抽離出交易、營銷、規則引擎、中介軟體、框架原始碼等22個真實場景,對設計模式進行全面、徹底的分析。幫助讀者靈活地使用各種設計模式,從容應對複雜變化的業務需求,編寫出易維護、可擴充套件的程式碼結構。
以我個人經歷和經驗來看,想搞定這些學習範圍和內容,最大的動力是來自於對程式設計的熱愛和折騰。就像我這樣做過很多土專案
,如下;
- 串列埠通訊、線上考試、考試抽題、彩禮管理、成績管理、即時聊天、計算器還有後來折騰過的仿微信聊天,這些專案都可以不斷的夯實個人的技術能力,每一次做新的一個專案都會把之前所遇到的問題,又考慮新的實現方式再折騰一遍。
- 程式設計的學習中重要的並不是結果,而是在這個過程中經歷了什麼。哪怕是犯了很多的錯也沒關係,因為每一次犯錯都是學習的機會,都可以找到更多的資料,每一個資料裡又可能教會你其他的知識。
四、就業
不只是我,可能很多在上學階段並不知道都是做Java開發,就業的企業也分為傳統行業、國企、半國企、外包、外企、網際網路等這麼多型別,尤其是我這樣在13年畢業的時候,既沒有所謂的就業指導,也沒有有經驗的朋友瞭解,就只能跟著大家走。好在現在大家可以在網際網路中獲取到這些資訊,也就能早早的幫助畢業同學進行擇業。
1. 傳統行業
- 難度:⭐⭐
- 公司:金蝶、用友
- 發展:在傳統行業方面有較強的技術積累和產品沉澱,一般其他公司也都有傳統行業研發的產品。另外現在的傳統行業逐步包括了網際網路的領域開發以及技術使用,只不過會比純網際網路少一些高併發場景,因為大部分這類軟體面對的並不是C端人群。所以個人進入此類公司會相對比較穩定,但如果後期想再跳槽比較麻煩,會出現技術斷層。
2. 國企&半國企
- 難度:⭐⭐⭐
- 公司:聯想、京東方、中軟國際、國家電網
- 發展:早前應屆生入職國企或者半國企一般會有解決北京戶口,但現在可能名額不斷的減少了。像中軟有一部分自己做的東西,也有一部分是承接外包的內容。此類公司做的工作內容可能比較單一,有時候一個專案會用很多年,但同時可能不會太忙,有一些自己的時間,並且像聯想、國家電網福利待遇也都不錯。
3. 外包
- 難度:⭐⭐⭐
- 公司:對日外包、企業外包
- 發展:像是在大連會有一些專門的對日外包企業,還可能需要長期在日本出差。我的兩個同學上學時候日語都學的不錯,現在一直在日本工作,就他們來說挺習慣在外面的生活了。還有一部分外包是企業外包,比如你入職一個外包公司,可能會把你這個人外派給華為、騰訊、阿里等公司,開發他們外包出來的工作,此類工作一般相對來說短期、非核心。但乾的好的也有轉正機會,直接入職大廠,不過比較難。而且外包到企業裡的人員,沒有正式員工的待遇
4. 外企
- 難度:⭐⭐⭐⭐
- 公司:亞馬遜、谷歌、微軟
- 發展:外企工作還是挺香的,相對來說沒有那麼強的加班,福利待遇也比較不錯。例如像這類的公司會明確寫上不加班,以及各種假期和旅遊。但可能是近幾年被國內網際網路擠壓的,也有一些在國內的外企有裁員的動作。
5. 網際網路
- 難度:⭐⭐⭐⭐⭐
- 公司:百度、阿里、騰訊、位元組、京東、美團、滴滴等等
- 發展:這類公司在北上廣就多了去了,雖然多但面試難度仍然不低,尤其是現在內卷的情況下,需要你會很多知識以及資料結構或者刷演算法,才可能找到一份不錯的工作。此類的公司的薪資待遇不錯,每年都水漲船高,可能一個剛畢業的重點大學,大學生,入職的薪資就要倒掛各類老員工了。除了有少許的內卷,其他的還是挺不錯的。
6. 出國
- 難度:⭐⭐⭐⭐⭐
- 公司:加拿大的 shopee、美國的臉書、谷歌、蘋果等等
- 發展:如果喜歡國外的生活,又有出去的本事,那也是一個非常好的選擇。像小傅哥熟悉的一個北大的夥伴,入職到了加拿大的 shopee,收入以及整個生活節奏對他來說還是非常滿意的。
以上就是各類公司的一個簡單介紹,每一個人就業時都會有自己的選擇,比如想安穩些、想要戶口、想要高工資、想不那麼加班等等,只要你能對自己的選擇負責,合理規劃好自己的職業發展,那麼就可以了。
五、資料
1. 技術內容
其實現在網際網路的文件、資料、書籍、視訊都已經很多了,但也可能正因為太多了,讓初學程式設計的人找不到所處階段,大一、大二、大三、大四以及畢業了工作了幾年後,都應該找什麼樣的資料學習。
所以我這裡把各類資料進行整合,按照不同階段的學習範圍把資料分到不同的資料夾去,方便所處不同階段的讀者可以有一個相對準確的學習範圍。
2. 實戰內容
如果你已經跨過了初級階段,需要做一些實踐型的專案,可以關注下我的Github,如下:
- 內容:本程式碼庫是作者小傅哥多年從事一線網際網路Java開發的學習歷程技術彙總,旨在為大家提供一個清晰詳細的學習教程,側重點更傾向編寫Java核心內容。這部分資料也是我所寫部落格中實踐專案的原始碼,在這裡你可以學到Netty、位元組碼程式設計、設計模式、領域驅動設計、規則引擎、面試、架構以及職場經歷的分享。
- 地址:https://github.com/fuzhengwei/CodeGuide/wiki
六、總結
- 如果一個大學生不怎麼關注技術部落格,也不知道有哪些技術部落格,那麼大概率你基本不會了解到你要學什麼技術,也沒有渠道可以讓你擴充自己的知識面。並且尤其是在現在的軟體基於人群喜好推薦下,你知道的越少的東西,就越少知道這個東西。所以主動有意識的學習,幾乎是你個人成長最快的方式。
- 做一件事,就把一件事做好!認認真真的長期堅持下來,你會在所走的路上收穫很多,千萬不要急於求成,否則你能獲得的只是微乎其微。當你有一天真的要拿手裡的這幾張牌,出去闖蕩的時候,會被人家炸哭。
- 另外在大學裡進來不要去做一些不會給自身帶來長久價值的兼職工作,如果你真的缺那份錢另說,否則儘可能把這些時間用在你將來要找的工作所需的知識學習上。時間不多,做有價值的事更有益個人成長。
- 酒香不怕巷子深,放在現在是幾乎就是不可能的。因為酒不在是你一家酒了,誰能曝光的更多,宣傳的更足,展示的更好,誰就更有機會可能成為佼佼者。否則站在臺上那個不一定比你強的人,卻可能比你過的更好。