2021年6月8日 星期二

Clean Coder 專業程式設計師的生存之道

薄薄一本書,但許多章節都讓人產生共鳴,

大師果然是大師,位在頂端的視野,

描述一路走來的困境與對應方法,

即使方法不一定正確,但能讓一個人成為大師,

我想這些方法也不會差到哪去。

非常值得一看,這邊列出幾個闔上書之後還印相深刻的重點。

團隊合作

在看這本書之前,

我就對於公司內部的團隊配置頗有意見,

現況是一件專案來了,專案負責人變會開始去找他想配合的成員,

來完成這項專案,專案一結束,這些人員很大機會被分配至其他專案,

無法同一批人再繼續合作進行下一個專案,甚至很大的機會是一人專案。


這樣會導致什麼問題?

當專案結束後,原本建立起來的團隊默契,無法再度被利用,

實在非常可惜,例如我在apple專案與A工程師搭檔,

我們互相配合,了解彼此之間的介面如何定義,

甚至也彼此了解軟體架構的習慣,因此如果軟體執行有bug時,

問題馬上可以釐清再誰負責的部分,假使是A工程師負責的,

也不需要把A工程師叫來身邊找問題,

自己也能夠依照彼此的默契與習慣大略知道問題在哪,再提出修改建議給A工程師,

不會因為不是自己的負責範圍,而讓進度延遲。

效率大大的提升,配合越久,效率越高。


從專案角度來看,如果團隊之間成員沒有彼此了解負責的業務(可透過codeReview建立),

都只專注在自己的部分,長期下來,團隊成員便無法互相成長,

其中如果有成員離職、請長假,而該業務範圍又出狀況,也沒人可以應付。


團隊的好處有太多,完全在第十三章被描述出來,

好希望主管單位能夠看到書中這第十三章進而修改團隊執行模式,

但會被寫在書上的,往往都是最理想、也最不可能被實現的部分吧。


職場應對的建議

書中其他章節也提供了非常有用的建議,

如何say no , say yes,

如何判斷時程,

如何做出承諾等等,

都是在描述一個理念,

「態度必須堅定,回答任何問題都不能有模糊空間,必須相信自己的專業」。


而這些如何實踐?

基礎都在於讓你的程式碼非常有說服力,

而產生說服力的方法,就是透過"測試"。


有效率的專心方法

另一個我印象非常深刻的建議,

則是作者不建議我們進入心流,

一開始我很訝異,進入心流狀態不是效率最高,生產力最好的時候嗎?

但他便舉了例子,說明這樣的狀態的確讓生產力達到高峰,

但也很容易進入盲區,關注的範圍便少了,導致要考慮的層面也變少了,

寫出來的作品往往還需要再大量修改,

克服這種情況最好的方法就是 – 結對設計 ( Pair Programing)。

但如果沒人可以陪你一起寫程式怎辦?

我自己的習慣則是選擇回覆訊息,你可能會認為同時在兩件事情穿插不是很沒效率嗎?

但我自己的經驗來說,這樣反而讓我效率更好,思考層面也更廣,

讓另一件不需要花太多腦力的事情協助你保持專注力的廣度,我想應該不會造成太大的負擔。


輔助工具

作者列了許多輔助工具,

其中測試工具佔了大多數,我把他列出來,讓自己一項一項的去學習與摸索,

如同大師提到的學徒時期(剛踏入工作階段)與熟練工時期(約五年經驗),

我在學徒時期沒有人來引導,現實壓力也不大,導致學習態度較散漫,

如今感受到了現實生活的壓力,再慢慢進度熟練工時期後,

必須開始把學徒時期該會的工具給熟悉起來,

並以目前熟悉的工具,擴展學習其他工具,讓自己更全面。


會議

最後一個印象深刻的建議,

便是作者建議不要參與太多會議,盡量縮短再10分鐘以內,

和我認知的敏捷開發內的會議模式一樣,講重點,讓大家有更多時間做該做的事,

可惜事與願違,會議動輒兩三小時,

如同我在上面說的,書上提到的建議,

往往就是現實面最難達成的部分。


結論

作者不斷地提倡 TDD 與 Pair Programing ,

很可惜現實不容易達成,而我也努力改變公司環境,

推動工具的使用,與主管建議合適的團隊模式,

希望能慢慢走向大師建議的路,並奔跑起來。



=========================

[持續建置工具]

Jenkins

[單元測試工具]

JUnit [JAVA]

NUnit [.Net]

Midje [Clojure]

C/C++ [CppUTest]

[元件測試工具]

FITNESSE

RobotFX

Green Pepper

JBehave

Cucumber

[GUI的測試工具] [作者不建議透過GUI進行測試,但還是有一些測試必須經由GUI來完成]

Seleium

Watir

[UML/MDA]


沒有留言:

張貼留言

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。