在前文中提到,改善程式設計者的工作環境,讓程式設計者能有個舒適而且適合工作的硬體環境,可以提高他們的工作效率。此外,盡量避免程式設計者進入「多工」的狀態,可以免除「Context Switch」占去有效工作時間的情況。「專注」的工作情境對程式設計者來說十分的難能可貴,因為許多程式設計者都會被要求要同時處理多項工作。而程式設計者自己也會因為工作平臺便在電腦上,而電腦上的各種應用愈來愈多,常使得程式設計者分心在這些像是電子郵件、MSN即時通等等的應用程式上。程式設計者想要提高自己的工作效率,分心便成了兵家大忌,在工作的管理及安排時,得十分的留意。

想要提高工作效率,還有一個關鍵因素,便是工作流程的自動化。

以批次自動執行作業取代人工,可避免一些非必要錯誤
在程式設計者的日常工作中,除了單純的撰寫程式碼之外,還會涉及到許多其他的工作類型。例如系統的部署、以及測試等等。許多工作都需要人,也就是程式設計者本身介入。而事情向來如此──人都會犯錯,只要人的因素被捲入,就可能因為人所犯的錯誤,而造成工作最後也出了差錯。犯錯之後要找出錯誤、都是最耗時的。想要避免工作的時間浪費在無所謂的錯誤之上,就必須要盡量避免因為人為的疏失而造成時間的損耗。
例如,我們有個應用程式,其客戶端程式在運行時會連接到固定域名的伺服器去,以和伺服器上的應用程式溝通。在測試伺服器端程式時,伺服器端的應用程式會被部署至測試環境上,但因為客戶端程式是連接至固定域名的伺服器去,為了進行測試,我們都會修改作業系統上etc/hosts檔案,將該域名指向測試環境的IP位址去。若是接著要測試正式環境上的部署版本時,再進一步取消etc/hosts檔案中的設定。

上述的動作,一開始是以人為的方式進行。但後來慢慢的,程式設計者會忽略掉進行設定、甚至是取消設定。

所以當搞錯設定時,程式設計者可能以為自己在測試測試環境上的版本、但其實是在正式環境,或者以為是在正式環境、卻是在測試環境。好比測試環境上已修正某問題、正式環境則尚未修正,卻一直連至正式環境,還以為自己沒有修正該問題。如此一來,便有可能浪費許多時間,因為環境組態的認知根本就完全錯了。

如果能夠自動化這個過程,連至測試環境時固定執行一個Script來設定etc/hosts檔案為測試環境的組態,同時啟動應用程式的客戶端,而連至正式環境時,同樣的固定執行另一個Script來設定etc/hosts檔案為正式環境的組態,同時啟動應用程式的客戶端。在自動化流程之後,如果將原先人工設定的方式,改為程式自動設定,便可以避免人為的疏失,當然也就可以避免掉因為人為疏失所衍生的時間浪費了。

此外,自動化工作流程,除了避免因為犯錯而浪費時間之外,也可以節省人為操作所耗去的時間。人的動作再怎麼快,也比不上程式工具的速度。如果一項工作可以節省一分鐘,而這項工作每天要執行一百次,那麼,將這項工作自動化後可以節省的時間,每天可能就高達一百分鐘。這是利用自動化機制取代人工操作的另一項威力所在。

用程式開發的方式,來解決程式開發面臨的重複操作問題
如果你曾經觀察過程式設計者的工作模式,你會發現,許多程式設計者在各式各樣的專案中,都會有不同內容的工作流程,而且常常都是以人工操作的方式進行。例如,固定要手動的將某些檔案複製到另一個目錄下去,或者手動的編輯某些設定檔。這些人工為之的工作,常常都是犯錯的溫床,一旦發生了錯誤,就會有為數可觀的時間流逝。而即使是不犯錯,這些人工操作的動作,執行起來也花時間。因此,自動化自己在每個專案中的工作流程,其實也是能否提升程式設計者工作效率的重要關鍵之一。

從自動化流程衍生出來的議題,便是時常聽到人家會提到的「Eating your own dogfood(吃你自己的狗食)」 這句話。

對軟體公司而言,這句話的意思便是,程式設計者要開發自己使用的工具,來解決自身所遭遇的問題。換言之,若換成了軟體公司的立場,則是公司要開發公司內部使用的工具,來解決自身開發軟體時所面臨的需求。
當你試著利用一些程式工具來自動化你的工作流程時,其實你已經是在吃自己的狗食了。除了自動化工作流程之外,許多公司或程式設計者甚至會自行打造一些像是程式碼產生器的程式,因為他們的應用領域十分專精,在長久耕耘之後,已經掌握住該應用領域的一些共通的特性,也觀察出程式碼總是反覆不斷重複的模式。

當然,也可以選擇繼續以人工的方式反覆撰寫這些也總是在重覆形式的程式碼,但聰明的開發者,便會想到開發自己專用的程式碼產生器,將共通的邏輯萃取出來,使得餵給此程式碼產生器時,便能自動地產生出自己所需的程式碼。這麼一來,不僅省去了人工撰寫程式碼的時間,也避免掉因為撰寫程式碼而造成犯錯的機會,雙管齊下,自然能大幅地提高工作時的生產力。

「吃自己的狗食」的精神便在此處:程式設計者或開發團隊,透過觀察自己的工作流程或模式,是否有可以利用工具自動化或避免發生特定問題的可能性,進一步為自己量身打造軟體工具來達成自動化的目的或是解決問題,最後達成了提高工作效率的目的。

「吃自己的狗食」,是一種投資,因為你得花費一些時間來建造你自己的工具,甚至得花上一段時間持續地加以調整。許多人或許不願意對此投資,但這無疑是一種短視的態度。只要初期花一點力氣,在後期反覆不斷持續地運用,你的投資報酬率絕對是高得驚人。

時時檢視自己的工作模式,才真正有機會找出可以改善的部分
你是否觀察自己在工作中總是不斷地重複一些工作,然後有時還在這重複性的工作中犯下或大或小的錯誤,導致自己的進度因此受到延誤?你是否觀察到,在你的工作中,是否充斥著一些必須人為介入的作業?而這些人工作業存在自動化的可能性,若能自行開發自動化的工具,便能大幅提升這些作業的效率?

「吃自己的狗食」的真正重點,不在於如何撰寫你的工具、或者需要撰寫什麼工具,這句話真正的關鍵,在於你是否有花心思,時時去觀察自己的工作模式。

只有懂得時時觀察自己工作模式的人,才能從中找出改善的空間,也才能知道究竟有什麼環節是可以透過自己量身打造的工具去加以改善。如果沒有打算觀察問題、找出問題,自己寫工具的能力再怎麼好也是枉然。又倘若,沒有時時存著找出待改善項目的心思,那麼想要從中發掘出可改善的契機,不過只是亂槍打鳥,光憑運氣。

專欄作者

熱門新聞

Advertisement