2010年11月16日 星期二

我以為的軟體工程師九層分級架構

工作至今也兩年半了,待過四個地方做過幾種不同角色的編程員,
今天就來談談我所觀察到的本省軟體工程師並簡單的分級,

我並不以自己身為 "軟體程序員" 為榮,
僅是因為我只待過這個產業所以拿出來講,
若有什麼得罪請見諒,勿戰。

從人的屬性為區格,我簡單的將我所知道的 "純軟" 工程師分為九種角色

第一級:角色扮演 - 語言就好比服裝道具
第二級:說書人 - 說程式的速度比寫程式快32,768倍
第三級:吟遊詩人 - 穩定產能的工程師,可能還兼SA、PM
第四級:戰奴 - 用生命寫code
第五級:魔導士 - 擁有高級技能,可能還兼職傳道
第六級:遊俠 - 身上帶著兩把槍加上不只兩把刷子
第七級:福音戰士 - 各方領袖,受眾人膜拜
第八級:仙人 - 縱橫人間,穿梭三界
第九級:神 - 造物者

要注意一點…這是以人的屬性做區分的…並沒有代表強弱…
我們本就無法將人簡單區分為九種級別…所以每個級別中也是有不同強弱等級之分的…
例如遊俠中也有分初級遊俠、中級、高級等…以此類推…

● 角色扮演

如其名,該種層級的人們並不是真正的工程師,
他們可能從事著其他工作,例如文書、企劃、投資、業務等,
也可能是個高中生,他們也許曾經修過"程式設計"這門課,
對此行業一知半解或有一絲絲嚮往,
所以他們以自己擁有的經驗與知識自居為軟體工程師,
這種層級的角色常常可以在一群非軟體開發產業者的聊天場合觀察到,
例如某人說他們公司最近要找廠商外包 XX 系統,該廠商竟然開價80萬,
這時跳出來說:拜託,這個很簡單好不好,以前我也學過呀,8萬塊就可以做好了!
說這句話的人,有極高的機率是個角色扮演活動的愛好者,
另外,主動以阿宅自居的人、在學中自我感覺良好、成績又不是很好的科班學生
這類型的環境也很容易發現角色扮演者,角色扮演者的存在有好有壞,
好處壞處要看那位角色扮演者自我感覺良好的程度與他的常識、認知是否正確,
好的角色扮演者喜歡偶爾充實自己,除了本身工作做得出色,也能有個不錯的業外興趣,
沒常識說大話的扮演者則會拉垮非本行的人對於軟體程序員的印像。

● 說書人

說書人可能是科班或非科班的,無論如何,
他們有個特色,看過不少書,但是只看前兩章,
其中包含著也許是不少種類的語言或多種設計模式,
但每種語言書的前兩章不一定會進到 HelloWorld,
所以在他們口中 "熟悉" 的語言可能連 HelloWorld 都沒編寫過,
他們總是喜歡列出一長串他們"擅常"的語言,
但這份清單中有極高的機率連一個真正擅常的也沒有,
甚至那些語言的開發環境與工具也沒建置過,
某些這類型的人很喜歡將書本前兩章所提過的理論掛在嘴邊,
部份說書人認為自己了解多種語言,實力夠強,
這種說書人在初入社會找工作時,常常一開始就想跳級做SD或SA,
工作上,對於各種系統需求,在會議中都能提出一些見解與方法,
往往還能說得頭頭是道,翻雲覆雨,會令主管有不錯的印像,
但當主管將工作交給他時,通常會有兩種結果,
第一是在瞬間提出反對剛才他所提方法的言論以推脫責任,
另一種情況是在接下工作2週後,某個人詢問他進度如何時,他才說方法行不通,
或是還在畫圖思考更週詳的計劃,但這份週詳的計劃往往很有得等,
有些說書人喜歡寫Blog,但往往是簡單的軟體安裝文或簡單的設定選項操作文,
多數說書人以身為工程師自豪,部份說書人很堅持己見,而且反應特快,
在他們自己的群體中能和樂融融、自我感覺良好的聊著技術與台灣未來的產業走向,
說得一口好程式與高超的演技是最佳的優點,同時說書人還經常轉換角色,
他們面對說書技巧更好的說書人時就會變成忠實的聽書人(路人甲),
聽著說書人說著故事時,他們鮮少動腦思考其中是否有矛盾或是否有誤,
心中對另一位說書人抱著敬佩的想法,實際做下去才發現被唬了也是常有的事,
完全沒做就能再回頭暢聊一切順利,或根本不知道結果錯了,這也是常發生的狀況,
並不是所有的說書人對於工作都抱持這種態度,有些傻傻的聽與做,
但聽了會誤會意思或聽不懂,做又只能幫忙做些改字串、搜尋取代、調畫面之類的事,
所以我將說得比做得厲害許多,或技術力很基礎的群組都規類在這邊取作這個名字。

● 吟遊詩人

詩人具有一般水準的技術力,鮮少接觸效率問題,沒有特別專精的技術,
他們相較於其他工程師輕鬆一點,因為他們的屬性不必每日追著新技術跑,
真正的詩人往往有自己的風格,像詩人的工程師也有自己的專屬領域,
也許是財務系統、人事系統、供應鏈系統、進銷存系統,不一定,
詩人專長於某個領域,所擁有的技術也被限制於該領域中可能延展開的範圍,
部份詩人鮮少自己動手寫程式,他們擁有不錯的系統分析能力與文件的撰寫能力,
這類型的詩人往往在工作上花大多數的時間與外包廠商接洽,
在自行開發的專案上有個特色,如同寫文章一樣複製貼上是很常做得行為,
他們寫程式也同樣的經常做複製貼上的動作,找舊的類似專案來改,
若新的需求就找範例來改,或找外包廠商解決沒碰過的問題,鮮少自行研發,
詩人常存在於傳產行業的資訊部門,單一產品的小型資訊公司,
他們的工作往往是愉快有自信的,對於工作能在時程內解決,還能有從容的下午茶,
有時他們會遭遇到比寫code更頭痛的事,就是與外包廠商的人溝通協調,
從容的工作使他們樂於以工程師為榮,因為他們鮮少加班熬夜,
反正難題有外包廠商來解決,加班對他們來說也是偶爾偶會發生的事,
即便加班壓力也不會太大,因為同事間有心情可以聊聊天加完班一起吃飯。

● 戰奴

在國內的接案型資訊公司常常存在戰奴這種角色,
戰奴在工作上被要求暴力解決問題,做任何事都要以快速的能動起來為原則,
所以戰奴很習慣開啟舊的專案將之修改為新的專案,系統自然愈來愈肥,
戰奴通常會具備足夠的技術力來看懂別人的程式碼與在中間插入新功能的程式碼,
因為戰奴的耗損率很高,常常打不完一場完整的戰役就陣亡了,
陣亡後總得要有新鮮的肝來接,快速上手是必須的基本技能,
戰奴的複製貼上功力也是一流的,因為公司不停的接案子進來,
沒有時間讓你慢慢研究撰寫適合的類別,找舊的東西來用或改是最快的方法,
因為案子不停的進來,一個戰奴身上時常會揹著不只兩個相異領域的專案,
這必須要有SA來幫他處理不同領域的快速入門工作,
戰奴通常會接到詳細的系統分析文件,包括詳細的 DB Schema,
詳細的類別圖、使用者案例圖,由SA幫忙將整套系統的架構、流程畫清楚,
讓戰奴看著Spec再將其轉換為程式碼,這種情況下戰奴和SA都是非常辛苦的,
這類型的工程師往往操到爆肝又沒什麼錢,工作時數長,沒辦法學習打字以外的技能,
想跳槽時又不太敢真的跳起來,跳了也跳不太走,即使你有5年的工作經驗,
但在較高階的工程師眼裡這種工作模式代表著的是你有1年工作經驗,然後再重覆了4次,
戰奴經常把爆肝掛在嘴邊,因為他們鮮少不用加班,無時不在想是否要放棄這條路,
三不五時後悔為什麼要踏入這行,可以做人,為什麼要寫程式,
戰奴的心中常會期待著轉職的機會,一轉通常是SD、再來SA、PM或技術主管,
戰奴的技術能力一般來說會比詩人強上不少,入門新環境的速度也快上許多,
但剛才說過了,戰奴的生活是每天看著 Spec 敲鍵盤敲到半夜,
在這種情況下想累積轉職必須的技能至一定等級是相當不容易的事,
這讓戰奴經常碰到待在一個環境數年了卻升不動,最後空降主管這種很闇陰羊的事。

● 魔導士

擁有真正擅常的語言、框架、系統,甚至是 "品牌"
對於專精領域擅常的程度常常讓他們成為網友口中的 "大大"
大大們除了專精某種語言外,還懂得如何"拼"一些語言的名字,
叫魔導士的理由是因為只專精於一種語言的工程師常有一種特色,
他們有 "信仰",並且經常從事傳道活動,
在各語言的論壇經常可見到這種人的影子,
他們會分享自己所知道的該語言技巧及經驗,
推銷他們專精的語言給新手是常做的事,
該品牌的語言配上該品牌的系統操作起來得心應手,
好的魔導士擁有好的成就,往往能成為某個品牌的活招牌,
例如 Microsoft 的 MVP 就是一種優良魔導士的實例,
差勁的魔導士因為自我感覺良好而經常參與筆戰,
往往會給人一種"你是因為只懂這個語言才這麼說吧"的感結,
魔導士出現的範圍很廣,且他們常常會帶領幾位戰奴或說書人,
小型軟體公司的技術長或顧問常常可以看到魔導士的縱跡,
魔導士擁有的實力已經蠻強的了,除了語言與框架的專長外,
往往還熟悉一些伺服器系統、資料庫系統與各式軟體、工具的操作,
當然有一部份的魔導士為了滿足自我而傳道,
也有相當大一部份的魔導士是不傳道的,相當低調,這就叫作清修。

● 遊俠

要當遊俠通常必須擁有一定程度的內力才能四處闖蕩,
就我們所知,提升內力有各種方法,各式門派,
遊俠往往在一些語言、一些平台中了解其底層架構與底層API,
進而達到所謂的"打通任督二脈"的效果,
一旦任督二脈打通後,學習乾坤大挪就只要兩個時程,
所以他們常常可以在各個語言、各個框架中游走,
同時他們也是獨立解決問題的好手,
相較於大部份依賴別人解答的工程師來說,遊俠是很珍貴且CP值很高的,
要做到悠游四海必須了解各語言的特性,
他們不擔心學習新的語言或框架是困難的事,因為任督二脈已經通了,
對於專案遭遇到的問題能用好的語言或方法來解決,
遊俠往往會把語言筆戰文章當笑話看,
因為他們了解各種語言有各自的好處與壞處,
不同語言是為不同需求而生的,針論語言只會顯得這傢伙住在井裡,
遊俠的特色是身上往往藏有兩把槍與不只兩把刷子,
與其和人辯強弱,解決問題的速度與更全面的架構才是他們想要追求的。

● 福音戰士

在技術研討會會發現一些熟面孔的講師,
若你常看書,也許也會發現一些知名作者,
福音戰士即是各個特定領域中的領袖,前導者,
往往能在凡人接觸某個新事物時就丟出作品,可能是書籍或作品,
對於語言與框架的悠遊能力不一定在游俠之上,但他們分享,
分享能使他們更專精某領域中的數種語言與框架,因為他們的話是有影響力的,
福音戰士時常在他們熟悉的領域提出各種分享與解決方案,
帶給眾人更筆直寬廣的路,使人不誤入黑暗,如同傳播福音,
當傳播新的福音時,演講場場爆滿的情況也常發生在福音戰士身上,

● 仙人

仙人被我定位成會讓人毫不懷疑而稱作大師的那種人,
他們的著作常常被稱為某領域的聖經,或他們的作品貢獻度極高,
穿梭三界的能力使各仙人不只專精於一種平台、框架,
有時我們看到某作者寫了數本不同語言不同框架的聖經,
這令人不解他是如何做到的,原因很簡單,他已經成仙或成精了。

● 神

與純軟程序員最親密的大概就是某些程序語言與框架、平台等,
神能做到凡人所不能的事,他們創造語言,制定語言的規則、結構,
制定某框架或平台令世人為其瘋狂,關於神的一切我所知道得太少了,
未來若有機會得到更多關於神的一切會再補上來。




這只是簡單的技術能力分級與我在該層見過人的個性,
當然也存在著某些人,擁有魔道士的技術能力,
卻以說書人的態度對待工作與對人,這是個不明智且自貶的行為,
不論出身是不是科班或名校,身為程序員,修心是非常重要的,
最後以侯捷大師說過的話總結:面對人要謙虛,面對專業要有氣勢。

2 則留言:

  1. 這篇文章寫得很好...
    看了之後 想了許多...
    想請問...要如何從戰奴 升級到魔導士呢 =o=??
    因為 我工作到現在 差不多半年了...(品保部門)
    深感始終無法了解 MFC和 ANDROID完整的框架和底層...
    始終希望能有人教我整套的讓我快速的變強
    而不是需要甚麼 再自己去找 感覺學得很零散
    畢竟 大陸的論壇 這幾年實力退步太多了 要找資料也不好找

    如同你所說的...身為一個戰奴的優勢
    就是強大的剪貼能力 和不管如何也想做出來給別人看的念頭...
    每次剪貼到一個階段 回首過去的論壇網頁...
    覺得有9成都是垃圾文...

    不外乎就只是貼 MSDN的連結
    不然就是隨便搜尋個關鍵字 就回覆說 就這樣 超簡單之類的...
    不然就是貼了一堆程式碼 結果 一堆物件都沒交代是哪一個類別的...
    (這對新手來說 真的是很難跨越的障礙 尤其是沒人教的情況下 直接從C++轉MFC)
    等我找到正確的用法之後 回去檢驗這些人發的文
    發現 有6成以上根本就是錯的
    最可惡的就是 明明是錯的 卻還有人在後面說樓上正解+1...
    甚至稱這些不學無術的人叫做大大!?
    看人物狀態 還有很多勳章 等級很高之類的
    這種人被歸類為"魔"導士!! 導人誤入歧途的惡魔 真是當之無愧

    發誤導文 <--魔導士
    樓下喊正解+1 <--魔導士專用戰奴和吟遊詩人

    就是因為這些人的存在...把好的文章埋沒了
    要找資料 還要先跨過這堆垃圾山...

    最近的一次例子
    閒閒沒事突然想看看VB.net是啥東東
    就去晃了一下某大論壇的 VB區
    看了一篇求助 如何用VB遍歷 資料夾下的所有檔案
    結果 沒人回答得出來就算了
    下面還一堆人在問說 是不是想寫病毒!!...

    看了差點沒噴飯...
    這種東西連調用MFC的函數來達成都超簡單的
    結果在相對簡單爆多的VB論壇 卻沒人回答得出來
    反之是一堆等級看起來都滿高的出來 不懂裝懂...
    我只能說看了那個論壇的程度...還滿能安慰自己 其實程度還可以...
    尤其是那論壇叫做 XXDN

    回覆刪除
    回覆
    1. 最近忙錄…好久沒上來了…看到長篇留言有些感動 XD
      其實大家都是邊作邊學嘍…如果你有時間的話…出點作業給自己做…
      從開新專案開始每一行都自己打…即便是找到範例也自己一個字一個字打上去…
      我的感覺是這樣子的記憶會比較深…且可以培養手感 :P
      其實上網找資料已經是獲得知識的眾多方法中 CP 值最高的了…
      有些人覺得參加研討會、交流會有用…但小弟我跑過幾次總覺得社交、推銷、炫技的成份太高…
      且若是有品牌的技術…在台上講的通常不是純的技術人員…同樣時間下 CP 值不比在論壇上找資料來得高…
      所以還是別放棄在論壇上找答案…綀習更快的判斷這是不是篇有用的資訊也是個不錯的訓綀嘍 :D

      刪除