天天看點

如何識别人的技術能力和水準?

 這個題目是比較複雜的,它包含的東西比較多,認真讨論估計能寫幾萬字。如果是專業研究,我看能寫一本書了。這裡打算根據自己的學習過程和工作經驗,談一下要點問題,均屬個人看法,歡迎讨論。

如何識别人的技術能力和水準?

  寫這篇文章的初衷,跟前段時間跟朋友們聊招聘有關。因為技術招聘除了考察人的協作精神和工作态度,一大目标便是判斷人的技術能力和實際水準。在這件事情上多做觀察、思考是很有意義的。

  對于考察人的技術等級,學界是有認真的研究的。參見:​​德雷福斯模型解說​​。

  德雷福斯模型把人的技能水準,分成5級:新手、進階新手、勝任者、精通者、專家。

  對不同技能等級的認定是這樣的:

  • 新手:依靠指令清單,必須按部就班。就是必須給出詳細而具體的操作規則,才能工作。比如你做一道從未做過的菜,需要看菜單的說明,第一步做什麼,第二步做什麼等等,直到最後烹饪結束。
  • 進階新手:有限的情景洞察力,同等對待工作的各個方面。對全局性、體系性的東西沒興趣。這是小工的水準。比如他能跟着師傅幹點活,打打下手。可以靠着反複檢索搜尋引擎、StackOverflow解決具體的小問題。
  • 勝任者:能夠獨立解決各種各樣的領域内問題。這是一般的企業招聘,比較希望招到的等級,招進來稍作适應就能幹活了,省心省力。
  • 精通者:經驗豐富,可以自我糾正、自我改進。這類等級的人,思考可以指向内在,通過檢討、回報改善技能。這種在企業可以算上高手、大拿了,培養不易。
  • 專家:依靠直覺工作,不需要解釋和理由。實際你讓他解釋,他可能也說不出個是以然,就是直覺給出答案,然後還是對的。專家人數稀少,需要很長時間訓練、實踐。通常的說法是10年出專家,10000小時定律。

  這個是理論上的研究,實踐中比較缺乏操作性,難以迅速的判定應聘者的實際情況。不信你打開收進來的大把履歷,剛畢業的學生,每個技能名詞上面都是一堆堆的“精通” – 你相信麼?但它可以當成一個職業技能等級判定的參照标準。

  于是乎,各家企業開啟了各種“筆試”、“機試”,多輪面試,并且嚴格要求學曆以及出身院校,試圖以此過濾掉不合意的應征者,留下合格的人選。它當然是可行的,但是效果一般,而且容易出錯,錯失有思想有水準的人。不然也不會催生出各類“推薦式”的招聘。看重學曆、學校當然也有其優點:它是快速過濾的手段,畢竟能考上好學校的人智商不會太差吧。但在大數字公司的一朋友說,公司裡面還有國中畢業,一直精研安全領域的人,技術能力也是十分出色。如果嚴苛對待背景,這些人就會錯過了。因為人的生活多種多樣,有各種曆史的背景因素影響經曆。而部分人的經曆,就是跟一些人不同的,可是不妨礙他們同樣可以變得優秀。招聘,實際上是建立信任關系。如果有充足的資訊證明,應聘者足夠優秀,這就夠了。條條框框隻是輔助手段,并不是目的。

如何識别人的技術能力和水準?

任正非的洞察力一流

  推薦式的招聘實際要靠譜的多,因為人很容易了解熟悉的人的水準。這是靠推薦者的信用背書。人平時溝通時說什麼話,日常看什麼書,關注哪些領域,琢磨過啥問題,哪些東西很熟,這個經常聊的熟人往往都知道。可是,這類招聘局限性也很大:面窄、靠機緣。靠推薦能招幾個好手啊?好手往往是各家争搶的對象,視窗期有限,基本不會缺工作的。

  說了一圈,還是要在技能水準判定上有更高效率的辦法,招進合适的人來。

  回到開頭的德雷福斯模型,既然人的技能是分級的,那麼對待不同的職位要求,也應該側重不同的考察角度。如果千篇一律的走招聘流程,就容易出問題了。比如你明明要找的是“精通者”,可上來就讓人一堆筆試、機試,這是不合适的。對方會十分的厭煩。展現高水準技術能力的并不在默寫什麼“字元串算法”那裡。這反倒是剛畢業的人占便宜,因為才學過不久,印象深。不信你讓工作10年的人跟計算機專業應屆生比比寫排序算法,真未必能赢。但是這并不重要 – 你幹活不看手冊不查文檔嗎?聰明人從不死記硬背。重要的地方在于對問題域的準确、深刻的了解,對各類技術優劣點、各種條件平衡的評判和把握。

  對待初階新人,應着重考察的是基本功是否紮實,專業成績是否優秀。更重要的,是他對職業的熱情,學習能力和研究精神。某類人要說起技術來,滔滔不絕,兩眼放光,充滿熱情,對未知的、新生的各類概念、技術非常好奇,這種人想差都難。因為他會自我驅動,不用督促,自己就鑽研前進。反之,覺得這個職業待遇高,隻是想混飯吃的人,很少走得長遠。這類初階新人以畢業生、工作年限少者為多。測試考核,可以筆試檢視其對基礎概念的了解是否準确,知識領域的大緻範圍。甚至,布置一個有點挑戰性的小任務,讓他嘗試解決,說明思路。

  考察勝任、精通者的政策不一樣。筆試做題沒啥用,原因前面說了。這類招聘是重頭戲,企業都喜歡找這樣的,能幹活。是以考核評估的地方也較多。我覺得可以分成幾個方面去看。意識是否先進,是否會檢討思考;是否善于解決問題,富有創造性;是否有比較深的積累和廣闊的知識面。

  業界的開發思想也是在不斷變化,工具鍊一直在革新。聰明的人不用蠻力,而愛用工具提升效率,喜歡自動化操作解放人力。要檢視人用什麼開發工具鍊,用什麼開發環境,解釋下為什麼?好的開發者會及時注意新出現的工具,挖掘它能解決什麼問題,并嘗試吸收,解決自己的需求。如果沒有這個思想意識,工作效率就會打折扣了。因為你會落後行業發展水準。人善于自我檢討,則會催動自我糾正,這正是精通者的特征。參考:​​優秀的開發者為什麼要學習研究新的程式設計語言?​​

  解決問題的能力是重頭戲,也是企業招聘人的主因。人要善于解決實際問題,而且,要學會聰明的解決問題。解決問題要看思路,看手段,看是否有創造性,這是真正考驗人能力的地方。好的開發者,會考慮很多可能選項,預估各種優劣,給出一個較優的方案。 遇到難題,會用各種方法嘗試。經驗豐富的人,常常會使用技術的組合手段來處理難題,而不是一個語言一個工具到處用。是以,要檢視下過往的項目經曆遇到的問題、困難,是如何解決的,思路如何。一些公司據說不招聘不會用谷歌的工程師。谷歌打不開?嘿嘿,這就是你要克服的困難啊。這你都解決不了,還做什麼研發。谷歌是人類最全、最新知識的總索引,充分利用事半功倍。

  考察知識的深度、廣度,對重要領域的概念是否有深刻的了解和掌握,以及從各類工作經驗中得到的認知。問問他看過什麼書,研究過什麼東西。說白了,知道的東西是否多。一些公司很喜歡用CheckList模式來考核,列一堆領域的知識點、概念,問人懂不懂,知道就是水準好,不懂就是水準差。實際情況并非如此。人的工作過程是獨立的,一些事情如果沒有工作機會去接觸并解決,那麼一些冷僻的問題就永遠都碰不上。當然也就不知道。但你能說沒做過就一定做不好麼?

  另外,人的技能樹,其實也是“犬牙交錯、參差不齊”的。什麼意思?技術領域非常的廣闊,你真的沒辦法每個領域都很精通,實際上是這個做的多,懂的多,那個用的少,知道的少。這個時候,應看具體知識領域,是哪一類。它是否需要複雜的、難度較高的背景。門檻高的技術,需要的配套技能多得多,比如AI、機器學習。而一般産品應用領域則不然,了解核心概念、設計意圖,看着手冊、最佳實踐,也就能上手了。這個暫時不會,實際無關緊要的,工作一段學的認真點就會了。但是門檻高的領域,就需要很長時間的學習了。這是本質的差别。

  我曾看見某公司放出的職員技能樹,包羅萬象,幾乎一切IT領域的知識技能都在裡面了,還聲稱要求“全部精通”。我不知道它如何定義的“精通”,如果按德雷福斯模型的定義,能做到的那是神,不是人類。這個純屬吹牛皮,我壓根就不信。如果真有這樣的人,出來讓我膜拜下。因為每個稍大點的領域,都足夠讓你鑽研一輩子,因為它們也在迅速發展呀。業内流傳“全棧工程師”的說法,鼓吹自己是全棧的人經常是前端工程師。而研究後端工作領域的技術高手經常鄙視這類人:真以為會點Node.js就能解決一堆後端的事務了麼?我也懂一些前端,也能号稱“全棧”,但在不同領域的專業性是什麼水準,自己明白的很。前端要解決的事情也有很多複雜性。全棧實際是反專業化的,是人力資源稀缺時候的低成本選擇。

  更高一層,則是考察人本身了。人的視野夠廣闊麼?其它領域的知識有了解嗎?一些問題的解答并不在問題域本身,而是在外面的領域。所謂“功夫在詩外”。公司講求團隊協作,總要面臨不同的分工合作問題。比如産品、營運的人提需求,可以換位思考嗎?合作意識強麼?誰也不想招個刺頭進來吧?把團隊的氣氛和人際關系搞的一團糟,大家做事都不痛快、不順心,又如何安心做好工作?最終隻能讓團隊工作效率下降,甚至瓦解。

  要說專家,實際上有研究者認為是需要刻意練習+充分實踐才能功成。并不是每個人經過足夠的工作年限,都自動成為專家。有的人工作10年,可能後面9年都在重複第一年的工作任務,毫無改進。而職業上的訓練機會,又跟大環境乃至運氣息息相關,并不是每個人都有機緣的。但是把個人的職業技能做到勝任乃至精通,則是完全可行的,這隻需要認真和勤奮,工作态度問題。

繼續閱讀