Fw: [討論] 如何定義 "會" XXX 程式語言
※ [本文轉錄自 Soft_Job 看板 #1FJOjeAv ]
作者: chucheng (時間太少事情太多) 看板: Soft_Job
標題: 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)
推
02/29 10:54, , 1F
02/29 10:54, 1F
→
02/29 10:54, , 2F
02/29 10:54, 2F
→
02/29 10:57, , 3F
02/29 10:57, 3F
推
02/29 11:47, , 4F
02/29 11:47, 4F
推
02/29 12:45, , 5F
02/29 12:45, 5F
→
02/29 12:45, , 6F
02/29 12:45, 6F
→
02/29 13:48, , 7F
02/29 13:48, 7F
→
02/29 14:20, , 8F
02/29 14:20, 8F
→
02/29 14:21, , 9F
02/29 14:21, 9F
→
02/29 14:22, , 10F
02/29 14:22, 10F
→
02/29 14:23, , 11F
02/29 14:23, 11F
→
02/29 14:23, , 12F
02/29 14:23, 12F
→
02/29 14:25, , 13F
02/29 14:25, 13F
→
02/29 14:27, , 14F
02/29 14:27, 14F
推
02/29 14:38, , 15F
02/29 14:38, 15F
→
02/29 14:39, , 16F
02/29 14:39, 16F
推
02/29 14:41, , 17F
02/29 14:41, 17F
推
02/29 15:21, , 18F
02/29 15:21, 18F
推
02/29 17:45, , 19F
02/29 17:45, 19F
推
02/29 17:59, , 20F
02/29 17:59, 20F
推
02/29 20:22, , 21F
02/29 20:22, 21F
推
02/29 23:01, , 22F
02/29 23:01, 22F
推
02/29 23:40, , 23F
02/29 23:40, 23F
推
03/01 03:49, , 24F
03/01 03:49, 24F
推
03/01 11:10, , 25F
03/01 11:10, 25F
推
03/01 11:13, , 26F
03/01 11:13, 26F
→
03/01 11:47, , 27F
03/01 11:47, 27F
→
03/01 13:09, , 28F
03/01 13:09, 28F
→
03/01 14:37, , 29F
03/01 14:37, 29F
→
03/01 15:09, , 30F
03/01 15:09, 30F
推
03/01 17:24, , 31F
03/01 17:24, 31F
推
03/01 18:26, , 32F
03/01 18:26, 32F
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: loriandkkk (140.133.76.12), 時間: 03/01/2012 18:26:50