程式設計的工作,可以說是一個和工作地點是否在正規的辦公室比較無關的工作。而許多的工作,其工作場域相較而言反而比較受限,例如像半導體工廠中的工作,由於和許多複雜、大型的機臺設備相關,因此,幾乎只能夠在廠房中工作。或像銀行的服務人員,由於要服務的顧客會集中於特定的場所,即銀行本身的所在地,因此,也都得在特定的場所裡工作。但程式設計的工作不同,大多情況下,只需要有夠快的個人電腦,現在或許還得再加上一個可以連網的環境,幾乎就可以完成全部的工作。因此,可以說是,不太需要綁在特定的工作場域中,就可以完成工作。

也因此,「在家工作(Work at Home)」,對程式設計工作者來說,其實是很可行的選項。所謂「在家工作」,可能並不單指在家裡,可能是在家裡、也可能是到外面的咖啡店、公園,總之,廣義的「在家工作」泛指的,應該是不在特定辦公室裡固定工作的工作型態,或許大多數時候在家裡,但也可能隨著情況或甚至心情「外出取材」。

離開城市、多人集中作業的辦公室

對「在家工作者」而言,這種工作型態不需要綁在特定地點上,這使得他們在工作地點上得到了很大的彈性,進而最佳化了許多工作的條件。例如,可以避掉上下班時尖峰時刻的擁擠交通,省去了大量的通勤時間。其實很多人每天從家裡到辦公室的通勤時間都很可觀,甚至來回可能多達兩小時,若是省去了這兩小時,等於是每天多出了許多額外可支配的時間。此外,甚至實際居住的地方可以離公司所在很遠,甚至在不同的城市,這等於是可以選擇一個他覺得更適合自己居住的城市,也許是房價更低廉、也許是生活環境更習慣、……等等。

我就認識一位遠端工作的「在家工作者」,他的工作即是開發軟體的程式設計者,他的公司位在臺北、也有實際的辦公室,有許多同事都在那兒工作,他卻住在臺南工作。這樣子的遠端工作,他已經從事了好幾年,工作情況都很穩定,工作成果的產出也持續都在軌道上,頂頭上司及同事也都很滿意他的工作表現。而居住在臺南,讓他得以天天和故鄉的父母在一起生活,也有他更喜愛的悠閒生活步調,而生活所需的成本也比臺北低了不少。這些正是遠端工作的「在家工作」型態所帶來的優點。

網路使人無遠弗屆,工作可以跨國協同作業

程式設計工作以現在的科技及環境,是很適合「在家工作」的,而這主要是拜網路的發達及協同工作的各種服務盛行之賜。就像許多大型的開發原始碼專案的開發一樣,這些參與的開發者幾乎都位在各個不同的國家,但是他們可以一起共同開發,完成了許多了不起的大型專案,這說明了遠端的協同工作,對程式設計、軟體開發工作來說,是相當可行的。既然這樣的跨國遠端合作是可行的,那麼在家裡或是任何一個非辦公室的場所,與其他不在同地點的人一起工作,也應該是沒有什麼問題的。

透過網路,即使在不同的地點,也能利用各種合適的通訊軟體來溝通,就像是同部門或同專案的同事,可以在傳訊軟體中的同一群組裡交換各種即時的資訊,利用通訊軟體來溝通,相較於面對面討論或是打電話來說,它更具備非同步的特質。面對面討論需要時間和地點都同步,因此強制性很多,而打電話雖然地點可以不需要同步,時間卻需要同步,這使得一通來電,就有可能打斷原先進行的工作。但通訊軟體的溝通則沒有這個困擾,每個人都可以選擇先埋首於工作中,直到工作完成一個段落後,再回到通訊內容上,處理其他人的訊息。

無論開發者距離遠近,版本管理系統始終扮演重要角色

透過好的版本管理系統,多人一起開發也能妥善管理。像我們公司利用 GitHub 來管理部份專案的原始碼,而同事們除了利用它所提供的Git機制來管理原始碼的版本之外,也利用它的議題追蹤系統來管理各種工作議題(issue)。

同事們將議題追蹤運用在每個個別工作的管理之上、不單只是瑕疵的追蹤,而是包括各種待進行的工作情況的追蹤。每當有一個新的工作產生時,同事就會產生一個新的議題,描述待解的問題或工作,而在這個問題有了任何新的資訊或進展時,即將相關資訊,更新於此議題的補充說明中,當該議題被解決、或毋需再被解決時,即將其關閉,並說明關閉的理由。在這樣的作法裡,即可以累積整個工作議題一路被完成的所有歷程及資訊,當然也可以看到最後的結果。

此系統會將每個議題的每次更新,都透過電子郵件系統發送予參與者,這使得其他人得以隨時透過這個系統,了解到每個同事正在處理什麼的工作,以及這些工作目前進展、甚至是否已經完成。

即使身為管理者,並不實際參與專案的開發工作,也能利用這樣的機制,甚至完全不需要任何的會議,就足以了解到每個成員的工作情況。這樣的例子,正是網路基礎設施及相關服務發達之後,帶給軟體開發團隊的好處。

對於工作的投入,距離並不是最大的問題,信任的背後,是對於紀律的認知與實踐

正因為網路能夠無遠弗屆的連接分處在不同工作地點的軟體開發者,而且甚至讓他們工作的更緊密,這更突顯出將他們聚集在同一辦公室的需求其實並不高的事實。一群開發者不需要實際面對面的開會,就能完成絕大多數需要的溝通。是否規定他們必須位在辦公室工作,大概只剩下對他們是否不在辦公室中卻仍能夠繼續工作的信任心理障礙了。

其實就和之前討論過的工作時間一樣,即使透過打卡的制度,開發者即時準點到辦公室上班,仍然沒辦法保證他的生產力,因為這並不是勞力取向的工作,那麼容易的從工作時間換得生產力。你需要的還是對開發者的信任,信任他們會投入足夠的時間,完成你預期的產出。

疑人不用、用人不疑,與其把不信任的人放在團隊裡,然後利用各種沒有效率的方式來防止他做弊,不如就不用他了。就像許多承接外包專案的開發者,時常會被客戶要求駐點開發是一樣的,其實有些客戶要求駐點開發不見得是基於效率考慮,他們只是不信任開發者是否如實的投入工時罷了。

只要對自己團隊中的開發者有信任感,讓他在家工作並不會有什麼大問題。

不過,想要在家工作,有個要素很重要,那就是「紀律」,也就是開發者對工作紀律的要求。投入與工作承諾相稱的工時是必要的,這是回應所得到的信任。當團隊相信你可以在家工作時,就必須建立紀律,持續的投入穩定的工時,而不是反而基於此信任而取巧。或許在家工作換來了更彈性的工作時間、工作地點,但是工作的品質不應該受到影響,而這取決於開發者對自己紀律的要求。

除此之外,工時太短固然不好,工時太長也不好。有些在家工作者,正因為在家工作了,反而工時拉的更長,因為只要在家或甚至可以上網就可以工作,基於對工作的自我要求,反而投入了更多的工時。但是,每個人都需要工作、也都需要有自己的生活,工作時間和工作以外的時間最好都能保持穩定,在工作時認真工作,工作時間結束就好好的去過自己的生活,這樣才能在工作時間內提供最好的品質。而不是讓工作滲透進自己的生活,反而變成生活中只有工作,長期來看並不是很良性的。對此,一樣需要紀律去維持。

最後我想說的是,即使軟體開發工作很適合遠端工作,但是,和同事還是需要保持面對面的接觸,一來是有些討論面對面的確會有更效率,二來是,這會更有人味,不會讓自己看起來太過於離群索居的樣子。或許每週保持一個下午或一天,和同事坐在同一辦公室工作,一起吃個午餐,隨口聊聊,那也都很好。

專欄作者

熱門新聞

Advertisement