[心得] 一個程式設計師該會幾種語言

看板Soft_Job作者 (時間太少事情太多)時間12年前 (2012/07/25 03:15), 編輯推噓8(8043)
留言51則, 24人參與, 最新討論串1/10 (看更多)
一個程式設計師該會幾種語言? 一般的面試分成三段:第一段聊resume,第二段考技術,第三段閒聊 閒聊其實是我認為最重要的部份,因為閒聊的時候人最容易展現真實的一面 因為面試時間通常只有短短的45分鐘,一個準備充份的面試者 很容易在resume或是技術的部份"作弊",所以第三段就變成很重要… 這是其中一個我最喜歡在面試別人時候問的問題(第三段)。 我也特別喜歡留20分鐘給第三段。 我知道標準答案是"看情況"或是"不一定" 但我想分享一下我的答案,以及為什麼這是一個很好的問題 首先,在看下去之前,我會請你想想你會怎麼回答… (我說真的,想想看) 十之八九,我聽到的答案是"不一定" 我會要求對方,沒關係,總是給我一個數字再說...,然後再要求對方解釋 如果對方堅持不給數字,或是說"看情況", 這都不重要,我會開始把問題慢慢導到 「就你自己而言,你覺得你應該要會幾種語言,是那些?你又會了幾種? 到那種程度?為什麼?」 我先承認,我自己的答案也不一定是最好,但是要能回答這個問題 人必須先省思,自己到底把自己定位在那裡 先聊聊三種我傾向會拒掉的情況,不管前面他表現的多好 1)回答只需要一種:通常理由是,我會java,什麼我都能寫得出來 與其什麼都不精通,不如像我專攻一樣,然後達到最高境界 我先解釋為什麼這個不好,首先,某些程度上,這沒有錯 如果我確實是想找一個資料庫的專家,你專攻sql,我只是請你來改寫我們的script 那沒有問題,只是這種時候,我需要的是顧問,只想解決單一問題 當然,也許有例外,也許公司找你是來當javascript工程師,本來就定位非常清楚 但我這裡比較談是,不是這種特例… 十之八九,說只需要一種的,要不只會一種,要不對於其它新東西/新技術 永遠都保持著"不需要""不必要"也"不想要"的態度 當然,少數的人能言之成理,說服我他的答案 這就另當別論,如果你能在不強辭奪理的情況下說服我,我也能接受, 不過機率真的很低… 2)回答愈多愈好,然後告訴我他一直在學習bla bla bla 這就不用多說了,我會直接再補一題技術問題(不要是考古題) 十之八九就會發現這傢伙根本沒有經驗 當然,也許找pm或是找tech sales是特例,或是特定角色只要你懂個皮毛就行 但通常我要找的程式設計師,也不會是這種特例 3)打死不回答,跟我打太極,把這個問題當成mba的作文題 至於其它的答案,一邊追問下去,通常可以對這個人的背景及野心有一個初步的概念 我曾經被問過這個問題,下面是我的回答(當然中間改了很多次) 我想一個好的面試官,要幫住面試著探討他自己的定位 最少要會C++/Java/C#/VB.Net或隨便一個這一類的物件導向語言 這裡所謂的會,最少大概可以想成不看考古題勉強考過認證的程度 也就是說,常用的library要熟,大型專案裡面,分工作給你,你接的起來 這裡比較擔心的是,如果公司都是用java,你的專長在c# 轉換會需要時間,但下個工夫,一個月可以上手 對於一個合格的資工畢業生,或是有一些工作經驗的人,這不會是大問題 至少也要perl或python或類似的scripting langugae 很多日常工作,上述的scripting language可以一分鐘作到十分鐘的事 沒有理由不需要會這些語言 至少要摸過tcsh/bash/zsh/...任何一類的shell script 不需要很懂,但不會這些os level的script很多問題 當然,如果你是前端工程師,也許你的答案會變成javascript/css/html 但我這裡聊的是比較後端/RD部份的軟體工程師 其實重點不是什麼語言,而是為什麼你需要會這個語言 我自己的答案是至少要會這些(7),然後最多精通1~2個 - Java - Python - bash - awk - sql - pig - scala + scoobi 當然,我有我的道理,而描述"為什麼",或是"怎麼會"的過程(經驗) 我就解釋了我是一個什麼樣專長的人(我的過去/未來) 例如,SQL,因為在學校是database group,當助教也教sql,自然就熟悉 也因為工作過,很多小project都是用LAMP,自然mysql是第一選擇 後二者代表我為大公司工作過,而且有map-reduce的background (或是打算往這發展) 其實,閒聊還可以看到很多有趣的問題 像是,一個人怎麼可能精通7種 人的時間有限,頂多二種,你精通的愈多,廣度愈夠,深度愈不夠 我自己的歸劃是 1~2種主要 (最近期/或是目前的工作需要) 舉例來說,如果你說java,例是你不能說出java 5, 6, 7的不同 那就很不合理,你自己平常每天工作要用,卻不follow最新/近的變革? (有可能此人缺乏主動學習的動力) 2~3種次要 (沒在update,停留在上次/先前工作的狀態) 剩下的可以是 "有在碰",但是需要一邊google才有辦法完成任務 舉例來說,如果那個人答bash是有在碰,我也傾向推薦錄用他 我會馬上弄來一台電腦,請他十分鐘內寫出一個很簡單的題目 寫個處理 countline.sh *.txt 把一個資料夾裡面所有的文字檔(算幾行) 如果很快完成,請他再補上請算只包含數字開頭, "."結尾"的行號 這樣的考題順便又考了regular expression, wc -l 或 grep 怎麼解不重要,但是多花個十~二十分鐘檢查他宣稱的事實,是值得的 當然,如果不錄用,這個練習就不需要的 我自己interview和被interview的經驗,其實"超過預定"時間是錄取的正向訊號 對方其實根本就想用你,只是再進一步確定一下而已 當然,真正的情況視情況而定 舉例來說,我沒回答html,沒回答css,沒回答javascript,難道就沒碰過? 我假設的情況,他的回答,就告訴你,他想從事什麼想的工作 我這裡並不是想提供正確的答案,只是分享一下自己interview別人的方式 只是比問那種「你遇過最大的困難的問題是什麼?五個詞形容自己?」 我寧願選擇這種題目來問… 也歡迎大家分享自己怎麼快速判斷一個人的潛力:) 舉例來說,如果你聽到的是 - C / 打工用過 - lisp / 作業/修課 學 - R / 博士班 寫paper - Matlab / 碩士班 老闆的計畫 - html/css/photoshop 自己興趣 (XD我真的聽過有人把photoshop當語言) 重點,其實你可以猜出或多或少這個人的背景,不是嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 216.113.168.141 ※ 編輯: chucheng 來自: 216.113.168.141 (07/25 03:15)

07/25 04:16, , 1F
學生或應屆畢業生的背景.
07/25 04:16, 1F

07/25 04:57, , 2F
沒意外一般面試場合回1才是正常.內心OS: 語言從以前到現在都
07/25 04:57, 2F

07/25 04:57, , 3F
不是重點...
07/25 04:57, 3F

07/25 04:57, , 4F
回1的理由是 出對方想要的 而給於對方想要的 至於其他? 在商
07/25 04:57, 4F

07/25 04:58, , 5F
言商
07/25 04:58, 5F

07/25 08:14, , 6F
我都回答2說...
07/25 08:14, 6F

07/25 09:33, , 7F
找資工教授來回答這個問題 會得到怎樣的答案呢?
07/25 09:33, 7F

07/25 09:40, , 8F
印象中 講法很多都是:深入一種,之後有碰到再學 這樣的概念
07/25 09:40, 8F

07/25 09:46, , 9F
個人的話是回答java相關加上依任務而定。java相關的framew
07/25 09:46, 9F

07/25 09:47, , 10F
ork都學不完了
07/25 09:47, 10F

07/25 10:07, , 11F
工具不需要多 合手好用夠用就好 但是用久了還是會想換
07/25 10:07, 11F

07/25 10:33, , 12F
沒法說出java 5 6 7 的不同 @ -> 可能缺乏主動學習動力
07/25 10:33, 12F

07/25 10:34, , 13F
可能我太弱了 不是很能認同這樣的說法
07/25 10:34, 13F

07/25 10:43, , 14F
我也沒辦法說出visual studio 2003/2005/2008/2010的不同處
07/25 10:43, 14F

07/25 10:44, , 15F
雖然不是語言本身....
07/25 10:44, 15F

07/25 12:02, , 16F
沒法說出 CPU 的差異, 可以說不會寫程式嗎?
07/25 12:02, 16F

07/25 12:02, , 17F
無法說出tomcat 3,4,5,6,7 的差異, 可以說不會tomcat
07/25 12:02, 17F

07/25 12:42, , 18F
我才不會去記哪個版本多了什麼東西.... 知道現在有什麼可用
07/25 12:42, 18F

07/25 12:43, , 19F
就夠了..... 除了像是,JAVA 8要出Lambda這種讓我高興的東
07/25 12:43, 19F

07/25 12:43, , 20F
西才會去注意
07/25 12:43, 20F

07/25 12:44, , 21F
沒用到當然就不會記得 又不是考大學 太刁難了這題
07/25 12:44, 21F

07/25 13:56, , 22F
推...這些問題在自己面試別人的時候才會想到
07/25 13:56, 22F

07/25 14:14, , 23F
對於版本間的差異不需要說很詳細的了解改版內容
07/25 14:14, 23F

07/25 14:15, , 24F
大概說些重大更新就夠了~就像玩遊戲有更新當然也不會全數
07/25 14:15, 24F

07/25 14:16, , 25F
記得,但是對於本身有干係的(職業)多窩少少會有些關注~
07/25 14:16, 25F

07/25 14:16, , 26F
我想原PO的意思大概是這樣吧
07/25 14:16, 26F

07/25 17:09, , 27F
要是有人說的出java 5 6 7的不同 但I/O package觀念不清
07/25 17:09, 27F

07/25 17:10, , 28F
這是java 1.0的東東喔 我承認我以前是這樣XD
07/25 17:10, 28F

07/25 18:04, , 29F
不要只用工程師的觀點看軟體或IT產業。
07/25 18:04, 29F

07/25 18:12, , 30F
另外你的標題改成 "一個程式設計師該會那些技術"
07/25 18:12, 30F

07/25 18:12, , 31F
才會討論到重點。
07/25 18:12, 31F

07/25 18:17, , 32F
如果lib很熟,可是資結演算法忘光光咧XD
07/25 18:17, 32F

07/25 21:50, , 33F
我覺得計算幾種真的沒什麼意義, 20年前的人可能回答需要會
07/25 21:50, 33F

07/25 21:50, , 34F
3種, Cobol, Fortan, Basic. 因為它們在各領域各佔一片天,
07/25 21:50, 34F

07/25 21:51, , 35F
但現在還用到這三個語言的場合寥寥可數, 那20年前的回答
07/25 21:51, 35F

07/25 21:51, , 36F
算是對還是錯呢?
07/25 21:51, 36F

07/25 21:52, , 37F
執著於幾種語言真的沒有必要, 不必等大環境變, 有時公司
07/25 21:52, 37F

07/25 21:52, , 38F
換一下就會把你的設想整個洗牌了. 其實答案真的就只有當下
07/25 21:52, 38F

07/25 21:52, , 39F
需用到的那一個就夠了, 剩下的只是隨時對應調整的心調.
07/25 21:52, 39F

07/25 22:21, , 40F
sql也能歸類到程式語言喔!?
07/25 22:21, 40F

07/25 22:43, , 41F
SQL算是declarative程式語言.不然PL/SQL總該算是程式語言
07/25 22:43, 41F

07/26 00:27, , 42F
sql command算的話,那RegExp也算一種? 不能這樣說吧
07/26 00:27, 42F

07/26 02:45, , 43F
SQL算不算不我是不清楚~不過以前寫BI的同事的確只會寫SQL
07/26 02:45, 43F

07/26 02:46, , 44F
還沒聽過只會RegExp的 有飯吃!!
07/26 02:46, 44F

07/26 11:18, , 45F
只看語言的話 我lab一個學弟只會C 但上Google
07/26 11:18, 45F

07/28 13:13, , 46F
覺得會多少不是重點 重點在於你的學習力 學得快又好的比較
07/28 13:13, 46F

07/28 13:14, , 47F
重要 給你一個月的時間你能會多少比較重要
07/28 13:14, 47F

07/28 21:58, , 48F
程式語言會幾種不是重點,語言只是工具而已
07/28 21:58, 48F

07/28 22:09, , 49F
最重要的語言是英文吧!
07/28 22:09, 49F

07/30 16:16, , 50F
我的回答很簡單:客戶要。我就生給他。
07/30 16:16, 50F

07/30 16:17, , 51F
管他是會幾種~~~~~~會10種,都用不到。等於不會。
07/30 16:17, 51F
文章代碼(AID): #1G3lGrm5 (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 10 篇):
文章代碼(AID): #1G3lGrm5 (Soft_Job)