面試造核彈,入職擰螺絲,裁員我先來?憑什麼?

這個冬天太冷了。小王交完工牌,搬着東西走出大樓時這麼想到,“爲什麼面試我的時候,恨不得我是超人,入職進來了就只是個 Crud Boy?現在還因爲左腳先踏進辦公室般的可笑理由把我裁了?”小王只是這個季節的一個縮影,畢竟這個冬天,太冷了。

這個寒冬,有多冷?

早上剛上班的時候,InfoQ 的小編髮了這樣一條微博:

1

且不說他昨天六點就下班的行爲夠不夠政治正確,夠不夠得上體驗一把這個寒冬,但從身體層面上,他確實體會到了。

但身體上的寒冬,只是物理攻擊。而心理層面上的寒冬,卻是魔法攻擊啊。

回顧過去不到一個月的時間裏,爆出裁員的互聯網公司有多少?京東裁、去哪兒裁、知乎裁、美團裁、微博裁、錘子倒……當然以上所有消息都被官方闢謠,但……你懂的。

小王們裹緊了身上的同款羽絨服,開始了年底的又一輪面試,只是這次,更難了:很多大型互聯網公司要麼縮招了,要麼乾脆關閉了招聘通道。2018 到頭了,自己工作丟了,鬧心不?

小王們不明白這是爲什麼?是因爲社保的費改稅?是因爲貿易戰愈演愈烈?還是因爲自己技術水平不行?

面試造核彈的童話

小王回想起了自己的面試之旅:爲了拿到 offer,他必須在電話裏完成一個非常複雜的代碼挑戰。他表現得很好,走到了下一輪面試。經過一輪又一輪艱難無比的面試,他就像孫悟空護衛着唐僧一樣,披荊斬棘,文體兩開花,最終成功拿到了 offer。

但在加入公司後,他發現他所做的工作與預期相去甚遠。他的主要任務就是爲運行在虛擬機上的遺留系統構建基本的 CRUD。這就好比取經時他是無所不能、戰無不勝的孫悟空,取完經後他就成了一個桌案上的供奉,每天只能吃點香燭貢品。

其實在招聘中,這類情況一直在發生。企業讓工程師通過嚴格的篩選程序,問他們一些有挑戰性的問題,但在把他們招進公司之後,只是讓他們做一些枯燥乏味的事情,比如負責由五六個服務組成的系統,或者讓頁面看起來更漂亮些。當然,並不是說這些任務就不需要技能,只是這些任務所需要的技能與大多數面試涉及的內容根本不一樣。

入職擰螺絲的管道工作業

軟件是因爲能夠提供業務價值,所以才被創建出來。

雖然閱讀有關軟件開發的書籍並且在軟件技術上追求卓越對小王們來說頗具吸引力,但歸根結底,如果不能形成業務並從中賺到錢(或省錢),小王們的工作就毫無意義。

因此,軟件行業的現狀自有它的道理。就像管道工一樣,他們獲得報酬,是因爲他們瞭解自己所使用的工具,並知道如何使用它們讓設備運轉起來,而不是讓他們重新發明技術,或者花 80 個小時去優化只有 5% 的用戶會用到的東西。

中小型企業很少會去處理與規模擴展或優化相關的問題——一部分原因是硬件變得越來越便宜,一部分原因是基礎的開源軟件已經做得很好了。

所以,企業一方面想網羅最優秀的人才,以便在重大的時間節點、關鍵時刻能夠物盡其用(但通常沒有這種情況),另一方面只派給這些優秀人才以增刪查改的日常工作,最終每個優秀的小王都成了 Crud Boy。

某一天,小王被開發經理叫去了辦公室,他敏銳地意識到這應該是他職業生涯中的轉折點,公司一定出了什麼問題,需要像 Jeff Dean 那樣的技術人才來拯救公司,而他,就是那樣的人!

“小王吧?公司最近業績不好,虧損嚴重,要裁員了,實在是不好意思哈,你去找下 HR。”

公司的確出了一些問題,但卻不是 Jeff Dean 能解決的,也不是他能解決的。他只是在推開門後回頭罵了一句:“你才小王八,你全家小王八。”

技術實力的迷思

很多人覺得,自己肯定不會成爲小王。因爲自己是獨一無二的,特別的那種工程師,而所有現狀的不如人意,一定都是時候未到、伯樂未到,畢竟自己的技術實力擺在那兒。

可技術實力究竟是什麼呢?

“我們組內的 XX 技術實力不如我,竟然他晉升通過了,我卻被刷掉了,評委真的是~!@#¥”……

“面試官問的都是什麼鬼問題,我知道的基本沒問,我感覺他根本不會考察我的技術實力”……

“聽說算法和數據結構最能體現程序員的實力,我要好好啃啃《算法導論》”(然而啃完又忘記了)……

當我們聊技術實力的時候,我們到底在聊什麼?

有的人認爲:技術實力就是指算法和數據結構很厲害……

有的人認爲:研究過 Linux 內核源碼和看懂《深入淺出 MFC》的纔是技術牛逼的人……

有的人認爲:會寫 C++ 的纔是真正的技術高手,因爲 C++ 的對象初始化有 N 種寫法……

有的人認爲:技術高手必須對業務很熟悉……

有的人認爲:貢獻了開源項目代碼的纔是技術牛人……

有的人認爲:只有架構師纔是技術大牛……

其實簡單來說,判斷技術實力的一個總的原則就是:技術實力就是指解決問題的能力!

1)不存在放之四海皆準的技術

簡單來說,問題是和領域相關的,技術是用來解決問題的,因此技術也是領域相關的,不存在放之四海皆準的技術。

有網友說:高斯林來做 iOS 開發,分分鐘秒殺現在所有的 iOS 開發人員,因爲目前 iOS 經驗最豐富的開發人員,經驗也不過 10 年。我認爲這是不可能的,iOS 開發領域面臨的問題,和開發 Java 編程語言面臨的問題差異很大,當然,如果高斯林真的做上幾年 iOS 開發,確實可能超過很多 iOS 開發人員,但一開始就秒殺哪些做了 7~8 年的 iOS 程序員,這個是不可能的。

2)技術要能解決具體問題才有價值

技術只有能夠解決某個領域的問題才有價值,否則光知道某個技術沒什麼用;掌握了某個技術但在當前的領域用不上,這個技術對當前領域來說也沒有價值。

當然,確實存在某些技術可能在當前看起來對當前領域沒有用,但後面可能會用到,因此技術人員需要自己儲備一些當前暫時沒有用的技術以拓寬技術視野,例如當前大火的人工智能和區塊鏈技術,但要注意“可能”這個詞,這需要技術人員自己進行判斷和平衡,不能拿技術儲備作爲託詞一股腦的什麼都儲備,例如數據庫開發工程師至少在這幾年是不需要儲備 VR 知識的。

3)問題的複雜度決定技術實力的高度

問題的複雜度不同,複雜度越高,解決起來越困難,相應的技術實力要求也越高。

打個比方,很多面試官喜歡讓面試者現場手寫冒泡排序、快速排序、鏈表之類的代碼,以此來判斷面試者的技術實力,但我們用這個原則去分析一下就可以發現,這樣並不能考核技術實力,假如招聘了一個會手寫快速排序的面試者,招進來後你會讓他用自己寫的快速排序解決什麼問題?貌似絕大部分場景下都不可能讓一個新來的員工自己寫個快速排序來解決某個問題吧?

我們該如何自處?

我們生活在一個大多數“軟件工程”基本上就是管道作業的世界裏。我們該怎麼辦?這對於我們的職業生涯來說意味着什麼?現金流會一直持續下去嗎?

首先,我們應該認識到並接受這樣的一個事實,即我們可以用更少的資源構建更多的東西。也就是說,我們工作中不是那麼有價值的部分可能進行自動化,或者構建工具,讓業務人員爲我們做這些工作。例如,每當我的團隊中有人想要修改自動電子郵件副本時,我就要去修改代碼。而現在,他們只需要在可視化編輯器中編輯模板,我甚至都不知道它們被改過了。

其次,我們在設計系統時需要考慮到系統的複雜性。如果有現成的解決方案,那麼就用它,不要再從頭開始構建。我們要學會組裝零件,這樣就可以比那些每次在啓動項目時都要自定義構建框架的軟件工匠更高效、更快、更好。

第三,我們應該設定切合實際的期望。大部分編碼工作都只要求 CS 學位,而這些工作所涉及的內容可能只比知道如何導入庫和了解 HTTP 原理多那麼一點點。不過確實有些工作需要進行微優化,但這類工作可能很少,而且離我們很遠。你的軟件可能沒有你想象的那麼特別。

最後,不要陷入了舒適區而不能自拔。這並不是軟件工程師的普遍看法,但我相信在這個領域裏,有很多人拿到的報酬已經遠遠超出了他們所從事工作的難度。有時候是因爲他們是這個領域唯一知道怎麼做這些事情的人,有時候是因爲他們所在的公司無法從人才市場上招到更好的人,有時候是因爲其他工程師故意過度設計,這樣初級開發人員就需要花費很長時間才能理解它。無論如何,如果我們想要保持高薪和不被踢出局,就不能停止學習。加強知識的廣度和深度,並學會如何將炒作從真正的突破性技術中過濾掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章