寫給轉(zhuǎn)行學(xué)IT朋友的話
最近有很多朋友咨詢我關(guān)于想轉(zhuǎn)行學(xué)IT的問題,我想結(jié)合自身的經(jīng)歷和思考和各位聊幾句,本文帶有比較強(qiáng)的主觀色彩,因此文中觀點僅供參考,如有不當(dāng)之處,敬請海涵。
筆者19年本科畢業(yè)于一所中流211,畢業(yè)之后一直在做Java開發(fā),我并沒有進(jìn)大廠,也沒有年薪百萬,就是蕓蕓眾生中普通的那一個。現(xiàn)在回顧當(dāng)時入行的經(jīng)歷,基本是摸著石頭過河,因此在有了一些經(jīng)驗之后,就想給和我當(dāng)時一樣處境的朋友一點建議,希望能對你有所啟發(fā)。
很多問題其實都要結(jié)合個人的實際情況來看,每個人的知識、能力、經(jīng)歷都各不相同,所以無論做出任何決定,都需要結(jié)合自身的情況。
是否有必要參加培訓(xùn)機(jī)構(gòu)?
這個問題的答案是因人而異的,核心點在于你是否有足夠的恒心和自制力。
現(xiàn)在互聯(lián)網(wǎng)上的學(xué)習(xí)資料已經(jīng)非常多了,足夠支撐你從零學(xué)到能夠入行的過程。如果你的自制力比較好,那么你就可以嘗試自學(xué),不過自學(xué)的過程是孤獨的,也是難熬的;如果你的自制力一般,無法在不是“學(xué)校”那么環(huán)境下進(jìn)行學(xué)習(xí),那就可以考慮培訓(xùn)機(jī)構(gòu)。
需要特別強(qiáng)調(diào)的是,不能以為進(jìn)了培訓(xùn)機(jī)構(gòu)就以為一定能夠就業(yè)了,說到底,學(xué)習(xí)這件事情,還是要靠你自己,別人是沒有辦法把知識灌進(jìn)你的腦袋里的。培訓(xùn)機(jī)構(gòu)也有一些無法忽視的問題,當(dāng)你畢業(yè)之后,大概率機(jī)構(gòu)會給你偽造一份簡歷,本來學(xué)習(xí)的時間就并不是很長,你很快可能就會發(fā)現(xiàn),培訓(xùn)機(jī)構(gòu)里面學(xué)的比較淺,還不足以應(yīng)付面試官的八股文,這時候你可能就會想先入行再說,然后進(jìn)了一家外包公司,然后開始混日子,這也是筆者見過的最多的案例。
參加培訓(xùn)最大的還是簡歷,培訓(xùn)機(jī)構(gòu)給大家做的項目都是極其雷同的,也可能會在培訓(xùn)結(jié)構(gòu)之后,讓你自己編項目經(jīng)驗,有經(jīng)驗的面試官很容易就能判斷出,你是真的參與了項目開發(fā),還是只是包裝的。另外你可能還會碰到,很多公司需要上一家公司的離職證明和銀行流水,甚至需要你個稅APP報稅界面的錄屏等等問題,這些培訓(xùn)機(jī)構(gòu)并不會告訴你。
總而言之,轉(zhuǎn)行是一件對你的人生來說,是一件極其重要的事情,要反復(fù)思慮,不要腦子一熱,聽身邊的朋友說,那個誰誰誰培訓(xùn)了幾個月就月入過萬,然后就稀里糊涂花了幾萬參加了培訓(xùn)機(jī)構(gòu),結(jié)果培訓(xùn)結(jié)束真正找工作的時候又發(fā)現(xiàn)困難重重,現(xiàn)實往往比想象的殘酷。
高中畢業(yè)可以從事IT行業(yè)嗎?
真相是,如果要從事IT行業(yè),大專及以上學(xué)歷是基本要求,不排除個人大專以下學(xué)歷也找到了很好的IT工作,但是在當(dāng)下這么“卷”的環(huán)境下,就是幸存者偏差了。
大專的學(xué)歷我也非常建議你先提升學(xué)歷,有一個本科學(xué)歷。
前端、后端還是測試?
其實從某種意義來說,選擇崗位就是選擇某種編程語言,選擇編程語言也是在選擇崗位,這個問題,你也可以結(jié)合下文編程語言之間的對比,找到自己合適的崗位。大體而言,測試、前端、后端,這三者的難度是依次遞增的(對大部分人而言)。
如果你沒有科班背景,但是又想從事IT行業(yè),那么你可以考慮從事測試、運維工作甚至產(chǎn)品、運營的工作,其實開發(fā)寫代碼并不是唯一的選擇。
如果你有一定的基礎(chǔ),但是邏輯思維又不是那么強(qiáng),那么我建議你可以考慮前端,女生大部分學(xué)習(xí)編程都會選擇前端,前端由于不需要考慮架構(gòu)、性能(大部分場景),因此難度會小一些,對初學(xué)者更加友好。不過,前端經(jīng)過這些年的發(fā)展,知識體系儼然已經(jīng)非常龐大,后期也需要學(xué)習(xí)很多的東西。
如果你有一定的基礎(chǔ),且邏輯思維還可以,那么我建議你可以考慮后端,如果你不知道自己的思維能力怎么樣,可以學(xué)一些Java或者JavaScript語言基礎(chǔ),看看自己是不是能夠比較輕松的學(xué)會。
Java、Python、C++還是JavaScript?
JavaScript
作為一門十天就被開發(fā)出來的編程語言,JavaScript身上的歷史包袱也有很多,但這并不妨礙它的偉大,JavaScript在我們的日常生活中,幾乎無處不在。
JavaScript也是一門易學(xué)難精的語言,雖然上手比較容易,但是后期也需要很多的時間去理解和鞏固。JavaScript是前端程序員最重要的技術(shù),學(xué)好了JavaScript,就能在前端這個領(lǐng)域里無所不能。JavaScript現(xiàn)在也開始逐漸的在其他領(lǐng)域嶄露頭腳,它與TypeScript相輔相成,可以預(yù)見,JavaScript是一門歷久彌新,并且前景良好的編程語言。
Java
如果你已經(jīng)決定了要從事軟件開發(fā)行業(yè),但是還不清楚,要選擇哪一門編程語言,那我推薦你可以學(xué)習(xí)Java,Java這門語言本身雖然并不優(yōu)秀,截止目前,Java已經(jīng)走過了20個年頭,有著非常豐富的生態(tài),web端,它有JSP、Servlet,移動端,它有Android,服務(wù)器端有SpringBoot,桌面端它有JavaFX,也有非常優(yōu)秀的網(wǎng)絡(luò)通信框架,比如Netty,甚至它也做出過操作系統(tǒng)(塞班系統(tǒng)),可以說,Java雖然很爛,但是它真的幾乎無所不能。
不可否認(rèn)Java的成功,但是Java也存在一些隱患,比如在Oracle收購了Sun公司之后,在Oracle不斷地花式作妖下,Java的未來似乎也有些撲朔迷離。除此之外,Java在引以為傲的領(lǐng)域也逐漸有了一些競爭對手,比如服務(wù)端有g(shù)o語言、nodejs,Android的開發(fā)官方首選語言已經(jīng)變成kotlin,JSP的市場基本上已經(jīng)被Vue、React等SPA框架所替代,但是Java卻并沒有開拓出自己新的應(yīng)用場景,雖然筆者認(rèn)為,基于VM的語言并不是消失,但是Java是能否一直守住自己的王座,還是要打一個問號的。
Java目前最多的就業(yè)方向就是服務(wù)端開發(fā),如果你學(xué)習(xí)了Java,那么大概率會做服務(wù)端開發(fā),短期內(nèi),服務(wù)端開發(fā)Java還是很難被其他語言替代。強(qiáng)類型的語言加上對并發(fā)編程的支持,讓Java非常適合構(gòu)建大型的服務(wù)端應(yīng)用,這也是Java最深耕的方向,學(xué)會Java服務(wù)端的開發(fā),也比較方便向大數(shù)據(jù)或數(shù)據(jù)分析崗位進(jìn)行轉(zhuǎn)型。
最后我想說,Java的崗位在我提到的編程語言里面也是最多的,這也是在選擇編程語言很重要的一個需要考慮的點,很多編程語言,看起來很熱門但是,真正學(xué)完去找工作的時候,發(fā)現(xiàn)崗位少的可憐,沒錯,說的就是你,Python。
Python
Python這門編程語言,“膠水語言”的特性讓它看起來也幾乎無所不能,雖然這種能力很有可能來自其他的語言,Python只是作為客戶端,調(diào)用其他語言的類庫。
不夠“底層”其實并不是什么缺點,學(xué)習(xí)Python最大的問題是,是對學(xué)歷有要求,Python應(yīng)用最廣泛的領(lǐng)域,大部分都對學(xué)歷有要求,雖然你可能看過很多投放Python的廣告,自動化辦公、爬蟲等等,但是這些特性在企業(yè)中的崗位是比較少的,而Python擅長的算法、人工智能、深度學(xué)習(xí)等領(lǐng)域都是需要研究生學(xué)歷的。
我們總結(jié)一下,如果你有研究生學(xué)歷,那么學(xué)習(xí)Python是一個不錯的選擇,不過我也見過有的研究生朋友學(xué)完P(guān)ython之后發(fā)現(xiàn)崗位很少,又被迫轉(zhuǎn)Java的案例。
C++
C++相比于其他的編程語言,其入門的門檻的會更高,花費在學(xué)習(xí)語言本身的時間的也會很多。C++在經(jīng)歷過這么多年的迭代之后,語言的特性非常多,會讓初學(xué)者有一種眼花繚亂的特性,實現(xiàn)同一個功能,可能會有很多種寫法。不可否認(rèn),C++是一門優(yōu)秀的編程語言,但是高昂的學(xué)習(xí)成本也讓人望而卻步,如果你不是科班出身,只是想學(xué)一門技術(shù)進(jìn)入互聯(lián)網(wǎng)行業(yè),那C++并不是一個很好的選擇。
C++常見的就業(yè)方向有以下幾種。
服務(wù)器端開發(fā)
游戲
QT
嵌入式
人工智能
總結(jié)來說,C++最適合的還是那些對性能有要求的場景。原來很大一部分C++程序員都是做QT開發(fā),但是C++在桌面端的市場已經(jīng)出現(xiàn)了越來越多的競爭者,比如Hybrid 技術(shù)、React Native、Weex、Flutter,這些技術(shù)讓原來web端的程序員或者移動端的程序員也能寫出跨平臺的應(yīng)用,并且這些技術(shù)保留了他們原本的開發(fā)習(xí)慣,這對QT的打擊,無疑是毀滅性的。
那么C++是不是已經(jīng)過時,或者即將被淘汰呢?其實不然,C++只是讓出了一些自己不是那么擅長的領(lǐng)域,但是在底層應(yīng)用的開發(fā),C++豐富的生態(tài)和優(yōu)越的性能還是首選。如果你有志在這些領(lǐng)域發(fā)展,那么C++將是你很好的選擇。
隨著越來越多的人對核心自研技術(shù)的重視,這種比較偏底層的崗位,會越來越多,最近幾年,國產(chǎn)操作系統(tǒng)的發(fā)展就是一個很好的例子,在政策的扶持下,各家公司幾乎都在號稱自研操作系統(tǒng),可以預(yù)料,在不遠(yuǎn)的將來,這些核心的系統(tǒng)的研發(fā),都需要大量C/C++語言的人才。
路漫漫其修遠(yuǎn)兮,吾將上下而求索
我非常建議你在決定入行之前,提前找一些學(xué)習(xí)資料,自己嘗試一下是否能夠?qū)W的清楚,并且能從中獲取樂趣。
興趣和恒心是決定你能不能在這個行業(yè)長足發(fā)展的決定性因素。面對海量的,對你而言是聞所未聞的知識,如果沒有興趣,你每天都會深受折磨;這個行業(yè)特質(zhì)決定了我們需要不斷地學(xué)習(xí),沒有恒心,總有一天會掉隊,跟不上技術(shù)更新迭代的腳步。
總而言之,道阻且長,希望本文能對你有所啟發(fā),與君共勉。