大師眼中的程式設計師

最近在讀 The Clean Coder, 對於其中所講到的專業程式設計師的素養及應具備的能力, 以及台灣現階段軟體工程師的困境, 是有些感觸的。

單純以完成被交付程式任務的能力, 相信台灣的工程師的能力, 並不遜色于國外的工程師, 但很多時候, 完成被交付的任務, 應該是在開發產品的過程中, 最為簡單跟被系統化的一環。

(假設)好吧!?我們(工程師宅宅)都有能力完成你說的出來、或者有人做的出來的軟體功能, 有了一定功力的程式設計師, 應該都有這樣的自我感覺, 或者說自信!?
在 The Clean Coder 一書中, 工程師被分為三個等級: (下面內容節錄自The Clean Coder)

大師

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

熟練工

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

學徒/ 實習生

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

必須很坦白的說, 在這個階段以Uncle Bob的定義來說, 可能我也只能被歸類在學徒/ 實習生的那區。

如果有人可以在我剛踏入職業生涯時, 能以帶學徒的方式將專業程式設計師的素養, 用身教言傳的方式讓我知道何謂專業,那麼也許Lenny今天又是另外一片光景也說不定 (笑)。

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

它讓我想起了 曾君宇 (Chun-Yu Tseng) 跟我說過的一段話 “同樣都是三年的工程師, 有的程式設計師有了半年的經驗, 然後重複用了三年, 也有的工程師扎實地用對的方式, 這三年經驗, 一樣嗎?”、

“不要再寫Dirty code了!”

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

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

專業的工程師的素養:

1. 擔當責任

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

2.對自己所犯的錯誤負責

程式難免會出現Bug, 但這並不意味著你不用對它負責; 沒人能寫出完美的軟體, 但這並不表示你不用對不完美負責。

專業人士要練習的第一件事就是道歉, 道歉是必要的, 但這還不夠。 你還必須能不會一而再、再而三地犯相同錯誤。 失誤率永遠不可能為零, 但你有責任讓它極接近零。

3.要確信程式碼正常工作

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

4.不要破壞結構

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

專業的工程師的職業道德

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

這些都是你自己的事。

Bob大叔這樣說或許會讓某些人不以為然, 認為這又可以讓慣老闆有理由壓榨可憐的軟體工程師了, 不過他用的例子也許可以說明為和他會這樣說。
摘錄自The Clean Coder: 
僱主出了錢, 你必須付出時間和精力。 以一周工作40小時的美國標準, 這時間應該用來解決僱主的問題, 而不是你自己的問題。
你應該計劃每週工作60小時, 前40小時是給僱主的, 後20小時是給自己的。
在這剩餘的20小時裡, 你應該看書、練習、學習, 或者做其他能提升職業能力的事。

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

在大師的眼中的專業, 真的跟我自以為的專業有相當大的落差! 有空的程式設計師的朋友們, 可以找時間翻翻這本書!

博客來連結

覺得這篇文章好嗎? 請分享給您的朋友

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *