天天看點

為什麼你的Web前端工作經驗不值錢?

每年的三月到六月,都是招聘高峰,除了大量的應屆畢業生湧入社會之外,還有一些工作了一兩年尚未找到穩定歸屬感的人,也會開始投遞履歷(沒錯,基本都是在拿了年終獎之後)。

作為前端技術主管,有幸,或者說是不幸,我需要在這些投遞過來履歷的人中,耗費大量精力來篩選符合公司要求、團隊發展、技術基礎三方面條件的人選。

我不是一個擅長技巧的面試官,盡管公司HR也給我們教育訓練過招聘的原則、技巧,但是真正的體驗和感受,卻是在做了大量面試之後自然而然悟出來的。常見的招聘要求中,基本都有“工作經驗”的要求,而且都是以年作為機關。但是實際情況卻告訴我,工作經驗往往不是以年衡量的,甚至有些時候跟時間沒有關系。

今天想要分享的一點,是關于“為什麼你的工作經驗不值錢”,或者“怎麼樣才能讓工作經驗值錢”。庸俗,卻能讓每個人提起精神。

為什麼你的Web前端工作經驗不值錢?

從一個小小的面試題目入手:

<code>編寫一個javscript函數 fn,該函數有一個參數 n(數字類型),其傳回值是一個數組,該數組内是 n 個随機且不重複的整數,且整數取值範圍是 [2, 32]。</code>

如果願意,請先暫停閱讀文章,自己動手寫一下這個函數。是的,老簡單了。我可以等你五分鐘。 

如果你想學習前端可以來這個群,首先是291,中間是851,最後是189,裡面可以學習和交流,也有資料可以下載下傳

華麗的五分鐘過去了 

現在假設你的工作時間為 y 年,經驗系數預設為 1,即工作經驗是:Y = 1 * y。從現在開始,以下的錯誤,你要是遇到了,請自行調整經驗系數。

可用

作為一段需要滿足需求的代碼來說,它最核心的、最低的要求:可用。

如果你沒有産出一個函數( fn ),或者産生了文法錯誤,那就請設定 經驗系數為 0,然後去面壁思過;

請将代碼在控制台運作,并執行 fn(3),看看是否輸出一個數組,數組中包含了三個随機且不同且在[2,32]的整數,如果不是,請将 經驗系數 * 0;

一個參考的半僞代碼是:

為什麼你的Web前端工作經驗不值錢?

其中 getRand 、checkInArr 還另有講究,後面會提到。當然思路和方法不止一個,後面也會提到。

有相當多的面試者,包括不少工作時間為2年以内的同學,都會在這一步犯錯,非常遺憾。

健壯

為什麼你的Web前端工作經驗不值錢?

代碼是否老道,過了“可用”這一關後,就開始見分曉了。

所謂“健壯”,即最基本的相容性處理、邊界處理,異常處理、使用者輸入校驗。很多時候,需求方不會明确告訴你這些邏輯怎麼處理,但并不意味着你不需要處理。

健壯的程式,一定會将這些相容性、邊界、異常、輸入做處理,以保證核心功能的正确輸出。當然,如果你的代碼沒有任何輸入并不考慮相容性(可能嗎?)或者僅僅是内部函數,那這一步要求可以降低,并不意味着你可以完全不做。 

(web前端學習交流群:291851189禁止閑聊,非喜勿進!)

好,回過頭看代碼:

——如果你沒有對 n 的取值範圍做校驗(n必須是 1 到 31 之間的整數),請将 經驗系數 * 0.3; 

——如果你沒有對 n 是否為數字做校驗,請将 經驗系數 * 0.5; 

——如果你沒有對 n 是否存在做校驗,請将 經驗系數 * 0.7; 

——如果上述校驗都做了,但是沒有校驗對,請将 經驗系數 * 0.9;你需要多練習,仔細認真的。

可靠

大多數面試者都止步于前兩關,鮮有進入第三關的:可靠。

javascript沒有強資料類型,函數的傳回值也無法強制傳回的資料格式。但是作為“可靠”的要求,盡可能在任何情況下,都傳回一個可靠的結果,哪怕是異常情況下。是的,這一步很簡單,幾乎不耗費幾個位元組的代碼,但是會讓 fn 的傳回值變得可靠:

為什麼你的Web前端工作經驗不值錢?

如果你留意到并處理可靠傳回值的問題,那請将經驗系數 * 1.2;

另外,一個牽涉的話題就是:異常情況下,是否要抛出 Error,或 console.error ?

關于這個話題,似乎沒有定論,需要自己衡量。我的觀點是:如果異常情況下不會造成太大影響的話(包括定位錯誤),就不用抛錯或提示。但同樣的,這個衡量仍然是經驗性的。此處不再展開讨論。

寬容

如果在你的日常開發中注意“可用”、“健壯”、“可靠”原則的話,你的工作經驗就會大于你的工作時間,也就會更容易受到重視,自己所挖的坑就會少。而我近期面試的人中,甚至包括5、6年工作時間的,幾乎都止步于此。

如果你要想成為一個受歡迎的技術人員,“寬容”是第一步: 對需求寬容、對使用者寬容、對調用者寬容、對維護者寬容。

回到代碼: 

——如果 n 是一個字元串數字,是否可以允許進入處理流程? 如果是,請将經驗系數 * 1.1; 

——如果 n 是一個含有小數的數字,比如 3.000001,是否允許進入處理流程?如果是,請将經驗系數 * 1.1; 

——你的代碼中,是否有足夠多且清晰的注釋? 如果是,請将經驗系數 * 1.2; 

——如果需求調整了 [2, 32] 的範圍,你的代碼是否可以快速調整,甚至不用調整? 如果是,請将經驗系數 * 1.2; 

為什麼你的Web前端工作經驗不值錢?

精益求精

恭喜你完成了前四關!

如果你在實際開發中,時時刻刻留意這些原則,這足夠讓你的工作經驗擴大化,并給你帶來更多的認可,這些認可來自于需求方(或許是那個曾經非常蠻橫的産品狗)、使用者以及你的同僚。但不應該包括你自己,你還需要更進一步。

寬容是寬以待人,精益求精是嚴以律己。内外兼修才是高手。當你将這五個原則(可用、健壯、可靠、寬容、精益求精)變成你自己的開發習慣,你的工作經驗就跟你的工作時間沒有關系了。

為什麼你的Web前端工作經驗不值錢?

前端學習的道路上,除了自學提升外,另一個好方法就是找資深的前端開發工程師交流,借助他人的經曆擷取高效的學習方法和快速進階的方式。

繼續閱讀