遠程軟件工程師的10個最佳實踐
【引子】最近又要關(guān)注研發(fā)效率,《如何提高團隊的研發(fā)效率呢?》是一些總結(jié)與思考,當(dāng)然,閱讀與學(xué)習(xí)也必不可少,這一篇編譯自 “The 10 Best Practices for Remote Software Engineering”,作者Vanessa Sochat,發(fā)表在“Communications of the ACM, May 2021, Vol. 64 No. 5, Pages 32-36 10.1145/3459613”,很有參考價值,融入了老碼農(nóng)的一些視角和觀點。
從表面上看,當(dāng)考慮軟件工程師研發(fā)效率的時候,我們可能會想到時間管理、溝通和任務(wù)完成的有效性。問題是完成任務(wù)或者有一個預(yù)期的時間表并不一定等同于生產(chǎn)力。對于遠程工作的軟件工程師而言,正面臨著常規(guī)思考、責(zé)任和目標(biāo)設(shè)定的新挑戰(zhàn)。

最佳實踐之一:做自己關(guān)心的事情
不言而喻,快樂和興趣是核心要素之一,然后才是生產(chǎn)力,重要的就是致力于我們所關(guān)心的項目或軟件。事實上,快樂的工作者更有效率,糟糕的心情對生產(chǎn)力是一種損害。
因此,后退一步說,在討論任何最佳實踐之前,應(yīng)該享受軟件工程的實踐,讓它成為我們?nèi)粘I畹囊徊糠帧H绻淮_定自己是否處于正確的狀態(tài),就根據(jù)工作中的那些小任務(wù)來評估一下。把一天的工作分解成小的事情或者任務(wù),然后記下自己是否每一件都喜歡。
例如,一個軟件工程師可能會意識到他們喜歡在 GitHub 上公開開源代碼和編寫文檔,但是不喜歡在用戶論壇上回答同樣的問題。弄清楚這一點將有助于軟件工程師推動那些更符合他們志趣的項目和職責(zé)。如果不能識別,或者所有被識別的項目都被認為是負面,那么是時候批判地看待自己的角色了。如果工作不是從正確的方向開始,就不會有一個最佳實踐的清單可以讓我們快樂。如果工作中沒有讓我們快樂的事情,那么將很難有規(guī)律地保持高效率。
最佳實踐之二:為自己定義目標(biāo)
作為軟件工程師,有時并沒有我們的職業(yè)階梯或者上升通道。在很多人所在的團隊里,可能也沒有那個意識到并支持我們個人與職業(yè)發(fā)展的管理者。這可能會有問題,因為目標(biāo)設(shè)定通常會對績效產(chǎn)生正向影響。
在這種情況下,尤其是當(dāng)與團隊遠程協(xié)作的時候,我們必須把個人發(fā)展掌握在自己手中。這意味著需要考慮自己想做的工作,或者更廣泛一點,我們想在短/中/長期內(nèi)完成的目標(biāo)是什么。例如,短期的目標(biāo)可能是學(xué)習(xí)一門有用的新語言。如果感到孤立無援,目標(biāo)可能是與一個新社區(qū)的互動,或者在日程安排中創(chuàng)建一個新任務(wù),以便與同事討論項目或工作。如果喜歡研究,目標(biāo)可能是提交一篇論文。
短期目標(biāo)可能是一周或一個月的目標(biāo),可以是解決一個特殊的問題,給軟件系統(tǒng)增加一個特性,或者寫下自己的思考。這些目標(biāo)對我們的生產(chǎn)力很重要,可以更好地理解我們的工作是如何融入到自己的長期發(fā)展中的。如果和同事或上司分享自己的目標(biāo),他們可能會發(fā)現(xiàn)這些目標(biāo)重要性,并且有興趣支持或關(guān)注我們的進展。
最佳實踐之三:定義自己的生產(chǎn)力
如果能夠明確地得到某種產(chǎn)出,那么,可能很容易根據(jù)產(chǎn)出的單元來衡量和定義生產(chǎn)力。然而,現(xiàn)實是,我們不僅需要寫代碼,還需要與人進行交互,澄清需求并給出設(shè)計方案等等。雖然可以根據(jù)代碼量或文檔輸出等研發(fā)活動來定義生產(chǎn)力,但這樣定義并沒有考慮到個體差異。軟件工程中的研發(fā)工作存在著巨大的差異,量化或定義研發(fā)生產(chǎn)力將是一項艱巨的任務(wù)。但是,即使缺乏定義,我們?nèi)匀豢梢哉J識到高效的一天是一種什么樣的感覺。
或許,我們不需要有一個全面的定義,但需要知道在一天結(jié)束時是否感覺良好。富有成效的一天是我們完成了工作并且感到滿足,這樣的工作才是有意義的。因此,可以通過評估日常工作并決定它們是否有助于產(chǎn)生滿足感來定義自己的生產(chǎn)力。一般地,我們會創(chuàng)建一個清單,并在某件事情已經(jīng)完成時向清單中添加新的項目。這些項目可以是重要的工作項目,也可以是比較溫和的目標(biāo),比如促進合作或增加社區(qū)活躍度。這個清單對于更好地了解自己,以及什么能使人快樂,或者什么讓人更有效率是非常有用的。盡管快樂和生產(chǎn)力并不完全一樣,但密切相關(guān)。

最佳實踐之四:建立工作習(xí)慣和工作環(huán)境
工作環(huán)境和工作習(xí)慣中的一些小細節(jié)都會極大地影響我們的工作效率。一般地,我們會注意工作空間的照明、噪音水平和舒適度。如果發(fā)現(xiàn)自己會被某些事情分心,可以考慮改變當(dāng)前的工作環(huán)境。另外,明確的選擇習(xí)慣性的重復(fù)可以建立良好的工作習(xí)慣。
越是能夠在特定的環(huán)境中重復(fù)一個行為,就越有可能變得輕松自如。例如,如果享受網(wǎng)上沖浪,可以讓自己在午餐后干這件事,并選擇在不同地點用不同的設(shè)備瀏覽,以避免與工作聯(lián)系在一起。如果喜歡在咖啡店工作的感覺,可以嘗試在家里模仿這種體驗,營造幾個不同的工作場所,并通過午間散步來模仿在不同場所間切換。如果想擺脫一個不適應(yīng)的習(xí)慣,可以考慮改變自己的的工作環(huán)境。例如,遠程通常會是單獨工作,但如果不喜歡這樣,可以考慮嘗試一個與他人有更多規(guī)律互動的環(huán)境。如果感覺效率不高,可以考慮換個工作場所,或者鍛煉十分鐘。
環(huán)境的切換是在工作時間和非工作的時間之間建立一個明確的分隔。這對于在家工作來說尤其重要,因為原來上下班的行為方式都不復(fù)存在,家變成了唯一的空間。最后,要包括工作以外的日常安排,也就是為了個人快樂的一些活動,例如,與家人在一起的時間等,這些也是必須考慮的。
最佳實踐之五:對工作負責(zé)
如果自己的一種角色是為用戶提供支持,或者團隊中已經(jīng)有一個設(shè)置好的任務(wù)列表,那么,就有了被動工作的傾向。雖然每天都會從待辦清單上劃掉一些項目,但這并不一定意味著已經(jīng)對自己的工作擁有了所有權(quán)或承擔(dān)了責(zé)任。擁有這種所有權(quán)可以讓我們更關(guān)心自己的工作,從而提高生產(chǎn)力水平。
這是一個如何獨立識別和處理團隊或社區(qū)問題的挑戰(zhàn)。越有能力決定去做一些重要的事情,制定計劃并且執(zhí)行這個計劃,我們就越能擁有獨立性,學(xué)習(xí)新的技能,并且感覺到對自己的工作擁有所有權(quán)。如果與老板或團隊分享自己的想法或項目經(jīng)驗,他們也會看到這些積極的品質(zhì),這有助于建立信任,這在遠程工作的環(huán)境中非常重要。事實上,參與組織決策可以給人一種心理上的主人翁責(zé)任感,這也會進一步自己的滿足感。在這兩個層面上都擁有所有權(quán),通過它建立信任,可以鞏固團隊對自己的看法,他們會對我們更有信心。
最佳實踐之六:承擔(dān)人際溝通的責(zé)任
在剛剛開始遠程工作的時候,溝通負擔(dān)的沉重在團隊中是很常見的,更不可能有既定的協(xié)議和最佳實踐。很多人都是在偏離正軌的時候才艱難地認識到這一點。如果我們與團隊乃至社區(qū)脫節(jié),就會感到孤獨,并對快樂程度產(chǎn)生負面影響。
在這種情況下,問題在于缺乏人際溝通。尋求人際溝通意味著要參加虛擬研討會,電話會議,或者參加例行會議。如果要尋找更多一對一的人際互動,可能需要建立一個虛擬的“快樂時光”讓其他人參與進來。雖然在工作中與同事溝通是常見的,但是我們?nèi)鄙俚目赡苁桥c朋友或家人的聯(lián)系,因此與家人共進晚餐或者好友的云聚會都是非常有意義的。在工作環(huán)境中,分享工作的技巧和心得可以作為建立人際溝通的工具。不管具體策略是什么,改變一些工作方式,就會感覺不那么孤獨。

最佳實踐之七:保持同理心
軟件工程需要大量的技術(shù)交流。無論在聊天的窗口、視頻通話,還是代碼評審中,肯定會遇到很多不同類型的人,他們都有不同的期望和激勵方式。同理心是必不可少的。溝通可以帶來良好的生產(chǎn)力,良好的工作效率可以讓我們成為一個更好的溝通者。
例如,如果遇到一個代碼倉庫的維護人員看起來很刻薄,可能要考慮到他們肩上的責(zé)任,他們需要評審的提交數(shù)量,以及他們是否空閑,他們可能處于一個緊張的工作狀態(tài)中。另外,還可能會考慮交流中的文化差異,在他們的團隊中,簡潔的回應(yīng)可能更為常見。當(dāng)把這些因素考慮在內(nèi)時,我們的反應(yīng)可能會調(diào)整為友善的溝通,并且可以更進一步,嘗試我們?nèi)绾慰梢越o他們提供有成效的幫助。可以說,組織層面的溝通質(zhì)量依賴于個人溝通的質(zhì)量,更好的溝通會帶來積極的結(jié)果。保持同理心意味著自己的積極參與,便于清晰地描述問題,并使對方容易理解。
最佳實踐之八:自我同情
我們可以盡最大的努力去定義個人目標(biāo),建立日常習(xí)慣,做有意義的工作,讓自己感覺富有成效,但這并不總是意味著自己完成了一天的工作后,就會感覺自己很成功。這就是自我同情的意義所在,自我同情可以廣義地定義為寬恕自己,它對心理健康和快樂指數(shù)有積極的影響。
擁有自我同情,意味著回顧一天經(jīng)歷的時候,不會因為不完美而苛責(zé)自己。可以嘗試一些對自己不起作用的新日常活動,也可以考慮建立新的工作方式,因為沒有真正的失敗狀態(tài)。試著把自己想象成另一個人是有幫助的,如果別人帶著同樣的經(jīng)歷和消極的想法來找我,我該如何安慰他們?我很可能會以同情心做出反應(yīng),這也是必須為自己找到的同情心。如果批評來自外部,盡管我們不能左右別人,但可以選擇用善意的方式回應(yīng),并試著在這種情況下找到幽默。然而,如果有人違反了某些行為準(zhǔn)則,則不該默默承受。因此,自我同情也意味著知道什么時候該為自己挺身而出。
作為一個遠程工作者,可能生活在與世隔絕的環(huán)境中,但我們不是在與世隔絕中工作。

最佳實踐之九:學(xué)會說是
作為一個軟件工程師,參與的每一個項目都有一系列的問題需要解決,需要與他人合作,以及需要學(xué)習(xí)新的編程語言或新技術(shù)。我們都可能是一個很容易說“是”的人,為一個項目做貢獻,或者提供幫助。
雖然這是一個獲得成長的好方法,但是也要知道什么時候說“不”: 當(dāng)我們可用時間受限的時候。當(dāng)然,說“是”也是可以的,但是要把自己的貢獻限制在一個可控的時間范圍之內(nèi)。為了最大化我們的生產(chǎn)力,保持對自己任務(wù)清單中的項目有著清醒的意識,以及什么時候提高或者減少參與度,專注于那些對團隊或者社區(qū)來說最有價值和重要的項目是必不可少的。
最佳實踐之十:選擇正確的溝通渠道
當(dāng)遠程工作時,有許多方式可以與他人交流。人們有著不同的工作環(huán)境和時間表,理想的情況下,通信是異步的。但是,應(yīng)該根據(jù)交流的需要謹(jǐn)慎地選擇方法,而不只是依賴于IM工具。文檔的討論首先可以使用協(xié)作文檔工具,但是經(jīng)過一些增強之后,可能要將其轉(zhuǎn)移到版本控制中。有時候,一個快速的電話比試圖寫出一封冗長的電子郵件更有效率。
重要的細節(jié)是,無論選擇視頻電話、電子郵件還是IM消息,都需要考慮是否適合所討論問題,考慮交流的透明度和開放程度,以及自己的舒適程度。如果對視頻或者語音聊天感到不舒服,可以劃出特定的時間段,讓它成為日常工作中可以預(yù)測的一部分。

結(jié)束語
這里推薦了10個最佳實踐來激發(fā)遠程軟件工程師的快樂,從而提高遠程開發(fā)人員的生產(chǎn)力:
在關(guān)心的事情上工作
為自己定義目標(biāo)
為自己定義生產(chǎn)力
建立日常習(xí)慣和工作環(huán)境
對自己的工作負責(zé)
承擔(dān)人際溝通的責(zé)任
練習(xí)同理心
自我同情
學(xué)會說是
選擇正確的溝通渠道
這里的大多數(shù)要點都可以歸結(jié)為確定控制點。軟件工程師應(yīng)該感覺可以控制自己的工作,并且有處理不確定性和壓力的心理技巧,這樣就能更好地應(yīng)對不確定性,隨著時間的推移,會變得更有效率,而且更快樂。成功和生產(chǎn)力不是出現(xiàn)在我們面前,而是我們選擇去創(chuàng)造的東西。
【關(guān)聯(lián)閱讀】
關(guān)于軟件開發(fā),都應(yīng)該知道的10個常識
