1. 程式人生 > >如果你正在學前端,請謹記10年老程式設計師這3條忠告,看完我懵逼了

如果你正在學前端,請謹記10年老程式設計師這3條忠告,看完我懵逼了

點選上方藍色字型【學習web前端】可【快速關注

640?wx_fmt=jpeg

2018年各大網際網路公司對前端技術人才的需求缺口依然很大,然而公司招不到人和學生找不到工作的矛盾卻更加突出,這一切都與前端技術的飛速發展息息相關,公司對前端人才的開發經驗要求、技術要求逐漸提高。那麼企業到底需要什麼樣的人才呢?請看下文詳細分析(筆者用通俗易懂的直白語句做了詳細的分析)。

一、2018年IT網際網路招聘需求是什麼?

我們先來看看各大網際網路招聘網站上面的招聘需求(以北上廣為例):

640?wx_fmt=jpeg

1、像上面的招聘資訊,外面並沒有寫工作經驗和學歷要求,但是具體資訊裡面卻寫明瞭學歷及工作經驗要求,你或許遇到過很多這樣的例子,為什麼會這樣呢?

2、技能要求:移動端、框架(vue/react/angular其中之一)、瞭解一門後臺語言,這似乎是大部分企業招聘需求必寫的,同時也是大部分學員的短板,又或者自己感覺自己這些都學過,但是也一樣找不到工作,到底企業要的是什麼呢?

3、到底原生js重要還是框架重要?在後面的段落中將一一為你解開困惑!!

二、沒學歷沒經驗的我如何找到一份滿意的工作?

諸如上面的問題,相信很多初學者都會有這樣的疑惑。那麼,沒有學歷的我能否找到工作呢?學歷真的不重要嗎?企業都需要有工作經驗的,而我還沒工作過怎麼找工作呢?

首先,我們來思考一個問題:公司為什麼要招聘人,公司到底需要什麼樣的人?

我們先來看一個誤區,很多的應屆生有這樣的想法:我先找個實習機會,哪怕不給我薪資都可以,然後邊工作邊學習(公司都會培養)。那麼公司會不會培養新人呢?

第一:小公司招人主要是為了解決當前的專案問題;

第二:大公司招應屆生是為了儲備人才,招有經驗的是為了幫助團隊解決問題、盈利,招實習生是響應政府的號召,透露個小祕密(我當年那會招聘一個大學生免稅3.5萬呢)。

那麼,你適合進哪種公司呢?為什麼會有學歷經驗的限制呢?

第一:有很多人說前端飽和了,但是有哪個行業缺人呢?為什麼公司又招不到人呢?因為缺的是真正有技術的人,不管是哪個行業,特別是2015年之後前端的飛速發展,還有鋪天蓋地的培訓機構大肆吹噓,很多的人選擇學習前端(入門門檻低),所以造成初級的前端很多,競爭壓力很大;

第二:公司雖然經常很難招到合適的人,但是也不缺投遞簡歷的人,北上廣深一線城市基本一個崗位能收到200-500份簡歷左右:

640?wx_fmt=jpeg

那麼要從這麼多人中篩選出一個人,面試成本得有多高??而這還是在招聘需求提高的前提下,如果沒有學歷、經驗的限制,是不是會收到成千上萬的簡歷呢??因為這個招聘需求會篩選了很多人,從而減少了招聘成本而且能招的真正有技術的人。這也就是上面提出的第一個問題的答案,外面沒有寫學歷、經驗限制或許是為了提高點選檢視率,而必須得招有技術的人,裡面有把具體招聘需求加上了。

那麼沒有學歷沒有經驗的我如何找工作呢?

我們再來思考三個問題:學歷到底重不重要?學歷代表了什麼?什麼是經驗?

如果是工作了的同學就應該有深刻體會,就是大學學的東西很散很廣而且很基礎,到了公司很多東西壓根用不到,不管你是專科還是本科畢業,進了公司就是一張白紙,都得從零開始,而大公司招應屆生也就是因為應屆生是一張白紙可以按照自己想要的結果來培養,但是2017年795萬多的應屆畢業生,招誰呢?有學歷高的肯定是招學歷高的啊,雖然高學歷也是白紙,但是高學歷能代表這個人學習能力強或者學習態度很OK,公司肯定願意培養這樣的人,所以學歷還是蠻重要的。但是就能否勝任工作來說和學歷就沒關了,看個例子:

那是不是有學歷就行了呢?答案是本科生一樣很難找工作,因為哪裡都不缺人,缺的是有技術經驗的人。

那什麼是工作經驗呢?要明確工作經驗不是你工作了幾年就有幾年的經驗,你這幾年都在打醬油,都在混日子,這樣就算你工作五年還不如別人一年的經驗,所以真正的工作經驗不是你確實工作了幾年而是你做了多少專案,有多少專案經驗。所以沒有學歷怎麼辦,沒有經驗怎麼辦?那就突出你的專案經驗,突出你的技能,很多人會覺得是不是可以靠吹牛逼呢,我想說牛逼是要吹的,但是更重要的是要能證明自己吹的牛逼是真正的牛逼,如果證明不了那你就是在吹牛逼,到頭來你會很慘(普遍是這樣)。

但是問題又來了,很多人會說我也有專案啊,我也拿著專案去了啊,但是還是很難找工作。那麼什麼是專案經驗呢?要做什麼樣的專案才行呢?是不是專案做的多就代表我有專案經驗呢?

我們繼續思考:

第一、開發一個專案真的很難嗎?(一萬個人有一萬種寫法,誰的更好呢)

第二、你真的瞭解企業標準、企業開發流程、企業需求嗎?(如果你寫的專案都不是企業所需要的,那麼怎麼能稱之為有專案經驗呢)

第三、怎麼證明自己真的有技術呢?

綜上:不管有沒有學歷、經驗都必須拿著專案去找,而且你的專案還必須得是企業需要的,符合企業標準的,能夠證明你確實有技術的!

可是什麼樣的專案符合這個標準呢?下面列舉了幾個

1、符合大企業開發標準(不懂可以百度bat公司標準)

2、多終端相容PC+移動端專案,而且有上線的專案

3、前後臺分離資料互動處理業務模型

4、個人技術部落格(記錄自己的學習歷程或者技術總結、技術分享,能夠讓人看到你學了哪些東西,掌握情況以證明你確實有技術)

5、程式碼效能優化、網站載入效能優化

6、熟練掌握原生js並能夠自己開發常用元件、外掛為團隊提供問題解決方案

那麼上面的這些具體是啥,如何達到呢?請看下面的分析。

三、初級前端工程師的命運何去何從?

相信大家經常會見到這樣的言論:IT男很難找女朋友,IT行業天天加班,IT都是吃青春飯。

我們再來思考幾個問題:公司裡面到底什麼樣的人才能拿高薪?什麼樣的人吃青春飯?原生js重要還是可以速成學習當下最火熱的框架就行?

在公司裡面技術崗能拿高薪的人一定是有一技之長的人,直白點就是當專案遇到了問題,團隊裡面只有你能解決這個問題,那你就是那個能拿高薪的人;或者你能夠為團隊提供解決方案,什麼是解決方案呢?比如jquery外掛庫很龐大,我們在自己的一個小專案中最多用到了它10%左右的功能,但是引入了這麼龐大的一個庫,如果我們能自己封裝一個只適合自己當前專案的小庫呢?這就是提供解決方案,而不是能開發專案的人,3000薪資的人能寫專案,2萬、3萬月薪的也能開發,差別在哪呢?再直接點:IT行業寫程式碼的人都是最底層的人員,俗稱碼農。每個大公司都有自己團隊研發的很多自己的功能庫、框架,只是沒有開源出來而已。而只有這樣的人慢慢的才能走上管理崗位(技術總監,技術主管,首席技術官,首席架構師等)而不再吃青春飯,因為當你成家有孩子老人要養的時候你不可能天天加班熬夜趕專案了,而這個時候你的學習能力,精力都會大大下降,你就會跟不上網際網路發展的速度,從而逐漸被淘汰。30幾歲、40歲的時候不得不考慮轉行。

我們再來探討一下原生js重要還是可以速成學習當下最火熱的框架就行?框架是什麼東西?為什麼需要用框架?

來看個知乎上面的面試例子:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

要清楚框架都是用原生js封裝出來的,用來解決一類專案問題,提供開發效率等。但是框架不是萬能的,也不能解決所有的專案問題,所以隨著網際網路的發展,專案需求的提高,就會源源不斷的出來新框架、新技術以解決當下的專案需求問題。綜上,如果你選擇走捷徑,只想快速的學個框架技術然後找個工作,那麼你就會吃青春飯,因為每個新技術出來你學習起來都會很吃力。但是如果你把原生js基礎打撈,設計模式學好,最終達到你自己都能封裝外掛、封裝框架的高度,再來學習別人的框架,看別人的原始碼是不是很簡單了呢?雖然我們不需要重複的造輪子,但是必須得知道造輪子的方法,或者為公司創造自己的輪子。

再想象這樣一個場景,我們去面試的時候能夠拿著自己封裝的外掛庫或者框架去面試,那面試官還會懷疑你的技術麼?就算學歷低又有多大影響呢?而現在缺的恰好就是這樣的人。

一、前端工程師之路

這裡我們來探討一下學習方法。

很多人推薦初學者看W3C、推薦看書,也有很多人確實也是這麼學的。但是我想問問大夥,你們知不知道這些推薦的人當年學習了多久,當年的前端是什麼現狀?而現在的前端已經脫離了茹毛飲血、刀耕火種的原始社會,開始步入了工業時代,工程化、模組化、元件化、全棧化的四個現代化已然來臨。所以如果你的學習速度跟不上網際網路的發展速度,那麼我的建議是不要來糾結網際網路了,因為你永遠在拉後腿,永遠不可能拿高薪。

是不是看W3C、看書就不好呢?不是的,是因為W3C上面的內容很基礎,而且很多過時的,而真正的企業專案開發大有不同,其實他就像一個新華字典,只是當我們哪個知識點不清晰了去查閱一下,而不是作為學習的工具,你會浪費大量的時間去學習一些無用的東西。而看書呢,很多看過書的人就應該清楚,特別是js(比如傳說中的紅皮書、權威指南等),如果一個初學者去看它,你會發現你越看越迷茫,即使你看到第十章你也還不清楚js到底能做啥,到底怎麼用,更寫不出一個具體的案例。因為這些書本都是技術大牛對知識點儘可能詳細系統的羅列,而忽略了初學者如何才能快速上手。這也就是很多人覺得js很頭疼,覺得自己看程式碼也都看得懂,對每個知識點也都知道,就是自己沒思路,寫不出東西的原因。這些東西和大學的很多教學模式一樣,都是很基礎而且脫離實際專案運用的純理論知識。那到底該不該看書呢?肯定該看。當你有一定的思維,能夠熟練的寫一些特效案例,或者能自己獨立寫個簡單的遊戲(打飛機、推箱子等)的時候再去看書,你會發現事半功倍,看啥都懂,而且能夠立馬運用,這就是補充基礎的時候了。

那到底應該如何學習呢?

640?wx_fmt=jpeg

當然是知識點結合案例學習,就是學習了這個知識點就能夠寫出一個相應的案例

這就叫學以致用,這樣子經過大量的案例練習、薰陶才能把基礎打紮實,開啟邏輯思維,最終也才能達到上面所說的能夠開發外掛、框架的高度。記住三尺之冰絕非一日之寒,千萬不要想著速成,不然你會很慘。而當你原生js達到這樣的高度的時候,你會發現那四個現代化也只是最簡單的運用而已了,但是如果你達不到這樣的高度,你就很難理解其中的奧祕,而很苦惱於前端永無止境,學不到頭。

再談到2015年之後非常火爆的HTML5也是一樣,很多人覺得自己H5會了,就是js不行,其實他連HTML5真正重要的東西都不知道,H5離開了原生js就不叫H5了,更沒有任何的優勢了,比如繪圖、多媒體、流媒體、地理資訊等等完全依賴於js,再比如H5開發webApp需要涉及到的與裝置的底層互動如下這些:

640?wx_fmt=jpeg

都是H5新增的很強大的介面,都離不開原生js。

題外話:很零散的分析了一通,希望讀者諸君能夠抓住重點,提供學習效率,做一個能在這個行業有所成就的人,而不是混個工作而已,對於高手來說是事業而不是工作!