顯示廣告
隱藏 ✕
看板 SuperTree
作者 dick51207 (SuperTree.bbs@bbs.csie.fju.edu.tw)
標題 Re: [討論] 如何定義 "會" XXX 程式語言
時間 2013年04月03日 Wed. PM 03:29:37


※ 本文轉寄自 SuperTree.bbs@bbs.csie.fju.edu.tw

發信人: dick51207.bbs@ptt.cc (dick51207.bbs@ptt.cc) 看板: SuperTree
標  題: Re: [討論] 如何定義 "會" XXX 程式語言
發信站: 2012/11/28 Wed 16:15:41

看板 Soft_Job
作者 chucheng (時間太少事情太多)
標題 Re: [討論] 如何定義 "會" XXX 程式語言
時間 Wed Feb 29 10:20:22 2012


※ 引述《qrtt1 (lonely)》之銘言:
: ※ 引述《qwer820404 (beans)》之銘言:
: : 到底什麼叫做 "會" XXX 程式語言
: : 常常聽到別人說  我會的程式語言有 XXX、XXX、XXX   零零總總至少有3項以上
: : 但是實際要用的話   卻寫不出來   那跟別人說你"會"  不是在唬爛嗎?
:         因此,要札實地變得強大,你的產出得經過不同人的 review。
:         將你誤解的部分一一由你的觀念確實地修正。
:         你才能謙虛地說,你稍為能掌握某個語言。
當我和別人聊時(不管是Interview還是被Interview)
以下以網路公司為例(就是有網站的軟體公司)

Junior Programmer:
基本上我認為只要能認真的FOLLOW經典的教科書讀完個一遍到二遍
我個人認為懂即可,這裡講的FOLLOW不是全會,但至少觀念都有
丟一個章節給你復習之後,你可以講解每個範例(或不看書重寫出來)

基本上CODE也寫得出來,至於對Library熟不熟,那是其次,基本的懂就好
不懂的Google到會就行,我對懂的定義就是
你Google到的答案你能理解,甚至改用
如果原始Library有錯,你能證明,這樣就行了

基本上,隨便參與一個open source的project
只要一個人能跟上別人的討論,回報BUG,甚至提出一些解法(不一定對沒關係)
我覺得這個程式設計師就合格
上面是普遍對學校畢業的學生的期許~簡單的講,給你問題你能解的了,就行了

Junior Programmer II (碩士以上 OR 大學畢業工作二年以上):
承上,再進一步(熟),如果要稱"熟"
我會期待這個人不只懂語言,還懂一點Framework,以及進階的課題
玩JAVA至少要碰過Spring / Structs / etc.
玩Python至少要碰過 Django / Pylons
簡單的說,我會期待這傢伙至少懂Design Pattern,並積極參與線上社群
通常我第一個問的問題都是,你stackoverflow.com的帳號是?
再來通常我期待你懂multi-thread或是unit-test等進階的課題
當然,你要會用SVN/GIT這一類的Version Control,不用是大師,但要會用

Senior Programer :
承上,再進一步通常就分"專"和"廣"二種
講專的,我期待你在某個framework很熟,也就是說
我不懂的可以請教你,而你給的答案能讓我滿意
你寫出來的CODE都follow convention,也會自動自發的refactoring或是幫助同事
我可把peer review的工作丟給你,你可以看得懂別人的程式並給見解
尤其是你的專業(可能是特定,例如multi-thread高手或是…)
你至少在單一方向要能勝過你的主管,大家以你為主要的"靠山"

至於走廣的
通常期待你參與過不少案子,以一般網路公司來說
你要能懂DB的正規化,什麼是3NF/BCNF/4NF要懂
或是不懂,也有能力快速PICK UP(靠自己)
能夠使用UNIX,遠端SSH用VIM處理或DEBUG問題,懂部署程式的流程
甚至能夠帶領團隊貢獻,並導入工作流程
具體一點的說,(以GIT為例)你知道什麼是branch
我丟給你一個文件,像是
http://nvie.com/posts/a-successful-git-branching-model/
你可以導入這個流程,分析是否適合團隊,然後給一個簡報教大家
以上只是舉例,走廣的,簡單的講就是什麼懂
而且能快速上手一個大家(團隊裡)都不懂的技能

你懂大部份重要的Design Pattern,我期許你對工作上需要的演算法都了解
實務一點,像是UML或其它軟工的技能應該都要能"使用"

Senior Programmer II (有人叫 Programmer Lead):
承上
但這裡專與廣的界線會模糊掉,因為通常你是很有經驗的開發人員
你處理的是一個面,不再是一條線或一個點

舉例來說
我期許你是open source project的active users
以Java為例,我會假定你有FOLLOW http://openjdk.java.net/
簡單的說,Library有Bug時我相信你能解的了(或是想辦法繞過)
再者,如果是PhD,我假定你能把公司的問題當PAPER的研究解決
舉例,對新的規劃,提出一個可行的(Scalable)的Prototype

你follow目前業界的最新規格/標準
你會注意新技術的出現,像是NoSQL的Solution
你除了自己常用的語言外
你最少要能寫Script(Python/Perl),懂Bash, 玩過EC2
此外,你不只能寫對的程式,還能寫好的程式
你知道怎麼最佳化,甚至最好你能找出更好的解法(可能是自己想,可能是看PAPER)
通常你寫過一二本書,再不也也寫個熱門BLOG
總而言之,你可以獨當一面帶領7~8人的團隊完成feature



通常走到這裡,再往上就是
1) 走技術管理職,你的會議愈開愈多,對上對外對PM對客戶
2) 走技術研發職,參與國際Standard的制定,被邀請去CONFERENCE TALK
3) 走RESEARCH 研發,作Prototype的(下一代)系統,負責寫Pattern/Paper
   擔任跨部門團隊的顧問(對外或對內),通常PhD比較多
4) 純管理職:跑去念個MBA,當技術出身的管理人員(管人 > 寫CODE)
5) 創業離職:跑去開公司一類的…



一樣老話,以上只是抓個"精神",而不是真的去定義說你達成幾項或那項沒有
就算你缺乏某一條,不代表你就不合格,也許你其它地方可以補強

不過就我看到的層面,你到底會不會"一個程式語言"
要看你應徵的是什麼樣的職位,這樣比較公平

通常FB在在大學徵人,就算是剛畢業,他們的要求至少都在Junior II以上
不過他們可更強調你對Algorithm的了解和寫CODE的速度及質量
(因為你以後是產CODE的人啊!)

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 131.179.64.185
※ 編輯: chucheng        來自: 131.179.64.185       (02/29 10:22)
※ 編輯: chucheng        來自: 131.179.64.185       (02/29 10:25)
yauhh:這樣的說明好經典,看到senior programmer II段落描述,1F 02/29 10:54
yauhh:眼睛一亮.
yauhh:有很多技術demo會議,示範起來都是做一個面的示範,概括而清析
qrtt1:看 A successful Git branching model 看到入迷了我。4F 02/29 11:47
CGary:好久好久沒有用到3NF/BCNF/4NF了, 好懷念...幾乎沒有任何開5F 02/29 12:45
CGary:發用到過 XD
AvatarH:好奇依本文分類後各等級的薪資為多少?7F 02/29 13:48
chucheng:看公司(有賺錢沒賺錢)、看地區(台/美/歐/…)、看產業8F 02/29 14:20
chucheng:以平均較高(稅也較高、生活費也較高)Junior I約8~9
chucheng:至於BONUS就看個人表現,看公司賺錢情況,(不計STARTUP)
chucheng:抓10~25%當BONUS,合起來如果是N,每進一層約加30%
chucheng:當然這是完全不負責任的推估,只是給個"大概"的感覺
chucheng:台灣的話,Junior台北會抓4~6W台幣當N
chucheng:有興趣可以上www.glassdoor.com就可以查到大概的薪資
LKO:版主有沒有興趣被我挖來當網路公司的技術主管?15F 02/29 14:38
qrtt1:文章應叫樓主吧xd16F 02/29 14:39
LKO:sorry~樓主~17F 02/29 14:41
shemale:我將這篇印下來了,將貼在我的桌前,作為自我的期許18F 02/29 15:21
peanut97:好文我頂!19F 02/29 17:45
genius945:這篇讓自己好有目標XD20F 02/29 17:59
andymai:推~~~21F 02/29 20:22
hisashi:讚22F 02/29 23:01
ga009900:好文推!!~23F 02/29 23:40
LeoJ:好文推!24F 03/01 03:49
cakecjack01:有這樣的文章真是太好了!正好可以當作自我省思的清單!25F 03/01 11:10
StubbornLin:好文26F 03/01 11:13
gname:請問.. 能做到上述的薪水是??27F 03/01 11:47
qrtt1:薪水除了實力外還有機運,這就是為什麼技術!=薪水。28F 03/01 13:09
kvjo:能認識前輩 是一種幸福阿29F 03/01 14:37
TonyQ:@gname 我看過還沒作到這程度年薪就十萬美金的 這樣夠參考嗎30F 03/01 15:09
v7q4:推 技術!=薪水   不過技術越好,薪水高的機率越高31F 03/01 17:24
loriandkkk:借轉~32F 03/01 18:26
tsukiyomi:有深度,大推!33F 03/01 19:41
asleisureto:其實漏掉一點:英文程度能到跟老外全程面試34F 03/01 21:21
hl4:推自我期許35F 03/01 23:48
nopeace:推好文!!觀念好清楚36F 03/02 10:29
Vick753:推!37F 03/04 14:24
belion:自我期許+138F 03/05 22:02
PianoChen:如果我有一個團隊幾乎都是Junior Programmer II的39F 03/10 11:58
PianoChen:卻要做Senior Programmer II的Projects的話...
PianoChen:不知閣下有何好建議??? 目前困擾中...
PianoChen:如果是你來帶這樣的team, 妳你會怎麼做呢?
chucheng:用2~3個Junior的錢去HIRE一個Senior當leader43F 03/12 15:38
lavigneA:謝謝分享 我好弱 我會加油44F 03/19 13:06
LFking:COOL45F 04/11 17:10
liaosankai:推~工程師升級表46F 07/25 07:51

--
※ 看板: SuperTree 文章推薦值: 0 目前人氣: 0 累積人氣: 51 
※ 文章分類: 程式語言
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇