留言討論


分享本文至 E-mail 信箱

陳建隆:工程師宅宅們,你們知道究竟什麼叫專業嗎?

2014 年 06 月 27 日

文/陳建隆(利昇科技 共同創辦人)

最近在讀The Clean Coder,對於其中所講到的專業程式設計師的素養及應具備的能力,以及台灣現階段軟體工程師的困境,是有些感觸的。單純以完成被交付程式任務的能力,相信台灣工程師的能力,並不遜色于國外的工程師。但很多時候,完成被交付的任務,應該是在開發產品的過程中,最為簡單跟能被系統化的一環。

(假設)好吧!?我們(工程師宅宅)都有能力完成你說的出來、或者有人做的出來的軟體功能,有了一定功力的程式設計師,應該都有這樣的自我感覺良好, 或者說自信!?

在 The Clean Coder一書中,工程師被分為三個等級:
(下面內容節錄自The Clean Coder)

大師Kent Beck、Uncle Bob

他們是已經領導過許多重要軟體專案的程式設計師。 一般來說, 他們擁有10年以上的從業經驗,曾在多個不同類型的系統、語言和作業系統上工作過。他們懂得如何領導和協調多個團隊,是熟練的設計師和架構師,能遊刃有餘的進行程式設計。

熟練工

他們還處於受訓期當中,不過已能勝任工作,而且精力充沛。在職業生涯的這個階段,他們將會學習如何「在團隊中卓越工作」和「成為團隊的領導者」。他們對當下的技術十分了解,但是對於其他許多系統尚缺乏經驗。平均經驗水準在五年左右,但彼此間的經驗水準差異可能很大。

學徒/實習生

畢業生會從學徒這一步開始他們的職業生涯。學徒沒有自治權,他們需要在熟練工的緊密督導下工作。他們不會單獨承接任何任務,只能作為助手或熟練工的小幫手。這個時期是學習紀律並強化各項實踐的階段(ex. TDD、 Design patterns、refactoring等)。

必須很坦白的說,在這個階段以Uncle Bob的定義來說,可能我也只能被歸類在學徒/實習生的那區。
如果有人可以在我剛踏入職業生涯時,以帶學徒的方式將專業程式設計師的素養,用身教言傳的方式讓我知道何謂專業,那麼也許Lenny今天又是另外一片光景也說不定(笑)。

然後今天這篇文章,好像敲醒了我
低薪?沒人才? 台灣哪裡沒人才了 人材多的是

它讓我想起了小曾跟我說過的一段話「同樣都是三年的工程師,有的程式設計師有半年的經驗後,重複用了三年;也有的工程師扎實地用對的方式,這三年經驗,一樣嗎?「不要再寫Dirty code了!」

現在想想,他真的沒說錯!感嘆的是,在台灣這個環境,工作上你很難遇到真的大師,多的是文章中說的用錯誤方式在做事的人,就算專業素養到一定程度,會不會帶人跟領導團隊似乎又是另一件事。

一個人自以為很厲害,永遠組不了一個團隊!

專業的工程師第一個也是最重要的素養:擔當責任

說起來很簡單,但要真能做到可沒那麼容易。

對自己所犯的錯誤負責

程式難免會出現Bug,但這並不意味著你不用對它負責;沒人能寫出完美的軟體,但這並不表示你不用對不完美負責。
專業人士要練習的第一件事就是道歉,道歉是必要的,但這還不夠。
你還必須能不會一而再、再而三地犯相同錯誤。失誤率永遠不可能為零,但你有責任讓它極接近零。

要確信程式碼正常工作

專業的工程師要知道自己寫出的程式碼是否能正常運作,Uncle Bob指出,要做到這點唯有Test Driven Development能達成。

不要破壞結構

專業的工程師不會因為新功能而破壞專案結構。基本上這點是指出不要貪快、時間壓力、貪圖方便等等,便破壞原本的程式結構或者原本就該依循的開發紀律等。

專業的工程師的職業道德

職業發展是你自己的事。僱主沒有義務確保你在職場上能夠立於不敗之地,也沒義務培訓你送你參加各種會議或給你買書籍充實知識。 這些都是你自己的事。

Bob大叔這樣說或許會讓某些人不以為然,認為這又可以讓慣老闆有理由壓榨可憐的軟體工程師了,不過他用的例子也許可以說明為和他會這樣說。

摘錄自The Clean Coder:
僱主出了錢,你必須付出時間和精力。以一周工作40小時的美國標準,這時間應該用來解決僱主的問題,而不是你自己的問題。你應該計劃每週工作60小時, 前40小時是給僱主的,後20小時是給自己的。
在這剩餘的20小時裡,你應該看書、練習、學習,或者做其他能提升職業能力的事。

專業的工程師應該堅持學習,不懂就學,不要畏難。

在大師的眼中的專業,真的跟我們自以為的專業有相當大的落差!
有空自詡為專業的程式設計師的朋友們,可以找時間翻翻這本書:
無瑕的程式碼(番外篇):專業程式設計師的生存之道

關於作者


懶泥陳

我是Lenny, 手滑背單字的設計者跟開發者。 目前在台南創業中, 希望能為科技帶來濃濃的人情味。

留言討論


網站更新隱私權聲明
本網站使用 cookie 及其他相關技術分析以確保使用者獲得最佳體驗,通過我們的網站,您確認並同意本網站的隱私權政策更新,了解最新隱私權政策