軟體開發人員如何提高個人和團隊工作效率

語言: CN / TW / HK

一個程式設計師如何提高 生產力,從而成為一個卓越的程式設計師。關於這個主 題可以寫(而且已經寫了)一整本書。本文會介紹一些可以用來 提高個人和團隊工作效率的技術。文末再推薦一本軟 工好書給你,不能錯過!

0 1

合理選擇選件開發工具

作為一個軟體開發人員,你將大部分時間花費在使用軟體開發工具上,並且工具的質量對生產力有巨大的影響。遺憾的是,選擇開發工具的主要標準似乎是對工具的熟悉程度,而不是工具對當前專案的適用程度。

請記住,當你在專案開始時選擇工具的時候,你可能需要在整個專案期間(甚至更長時間)都必須使用這些工具。例如,一旦你開始使用缺陷跟蹤系統,由於資料庫檔案格式不相容,你可能就很難切換到其他系統,原始碼控制系統也是如此。幸運的是,軟體開發工具(尤其是IDE)現在已經相對成熟,而且許多工具之間都是可互操作的,因此你不太會做出錯誤的選擇。儘管如此,但是 在專案開始時仔細考慮如何選擇工具,可以為你省去很多後續的煩惱。

對於一個軟體開發專案來說, 最重要的工具是選擇使用哪種程式語言,以及使用哪種編譯器/直譯器/轉換器。 選擇最佳的語言是一個很難解決的問題。你很容易證明一些程式語言是正確的,因為你熟悉它們,你不需要再去學習它們;然而,未來新的工程師在學習程式語言的同時還要維護程式碼,他們的工作效率可能會低得多。此外,選擇某些語言可以簡化開發過程,充分提高生產力,以彌補學習語言所損失的時間。正如前面所提到的,選擇一種糟糕的語言可能會浪費很多開發時間,直到你發現它不適合這個專案,於是不得不重新開始。

編譯器效能 (每秒可以處理一個普通原始檔的多少行程式碼)會對你的生產效率產生巨大的影響。如果編譯器平均編譯一個原始檔只需要2秒鐘而不是2分鐘,那麼使用更快的編譯器可能會提高效率(儘管更快的編譯器可能會缺少一些特性,從而在其他方面降低了效率)。工具處理程式碼的時間越少,留給設計、測試、除錯和優化程式碼的時間就越多。

使用一系列能夠很好地 協同工作的工具 也很重要。今天,我們認為使用整合開發環境(IDE)是理所當然的,它將編輯器、編譯器、偵錯程式、原始碼瀏覽器和其他工具整合到一個單獨的程式中。這使得我們可以在螢幕的同一個視窗內,快速地在編輯器中進行更改,重新編譯原始碼模組,並在偵錯程式中執行結果,極大地提高了工作效率。

然而,你經常不得不在IDE之外處理專案的某些工作。例如,有些IDE不支援原始碼控制或者缺陷跟蹤(儘管許多IDE都支援)。大多數IDE沒有提供用於編寫文件的文書處理程式,也沒有提供簡單的資料庫或者電子表格功能來維護需求列表、設計文件或者使用者文件。最有可能的是,你不得不使用一些IDE之外的程式,例如文書處理、電子表格、繪圖/圖形工具、Web設計工具和資料庫程式等,來完成專案所需的所有工作。

在IDE之外執行程式不是問題,只要確保你選擇的應用程式,與你的開發過程和IDE生成的檔案是相容的即可(反之亦然)。如果在IDE和外部應用程式之間移動檔案,你必須不斷執行一個轉換程式,那麼你的生產效率將會降低。

我能為你推薦一些工具嗎?不能。因為專案的需求多種多樣,所以我在這裡無法給出這種建議。我的建議是 在專案開始時就注意到這些問題。

但是我可以給出一個建議,就是在選擇開發工具時 避免有“為什麼我們不嘗試這種新技術”的想法。 在使用了一個開發工具6個月之後(並基於它來編寫原始碼),如果你發現它不能夠完成工作,那麼後果可能是災難性的。除了考慮產品開發,你還要認真評估這些工具,只有在確信新工具確實有用之後,才能選擇使用它們。蘋果公司的Swift程式語言就是一個典型的例子。在Swift v5.0釋出之前(大約在Swift首次釋出的4年之後),使用Swift語言一直是令人沮喪的。每年蘋果公司都會發佈一個與之前版本程式碼不相容的新版本,迫使你不得不修改舊的程式。此外,該語言的早期版本中缺少許多功能,並且一些功能並不完善。直到5.0版本(在編寫本書時釋出)以後,Swift語言才變得相對穩定。然而,那些早期迎合這一潮流的可憐的人,為該語言的不成熟發展付出了代價。

遺憾的是,在許多專案中,你自己無法選擇開發工具。這個決定來自上級的命令,或者你沿用產品以前的工具。抱怨它不僅會浪費時間和精力,還會降低你的工作效率。相反,你應當充分利用你所擁有的工具集,併成為使用它的專家。

0 2

管理開銷

對於任何專案,我們都可以將工作分為兩種型別: 與專案直接相關的工作(例如,為專案編寫程式碼或者文件)和與專案間接相關的工作。 間接的活動包括會議、閱讀和回覆電子郵件、填寫考勤卡和更新日程安排。這些都是日常開銷活動,它們增加了專案的時間和成本,但是並不直接有助於完成工作。

通過遵循Watts S. Humphrey在Personal Software Engineering(《個人軟體工程》)中介紹的方法,你可以跟蹤在專案期間將時間都花費在了何處,並且很容易地看到直接花費在專案上的時間,以及花費在間接的開銷活動上的時間。 如果你的開銷活動時間超過總時間的10%,那麼你應當重新考慮日常活動。 你應當試著減少或者整合這些活動,來降低它們對你的工作效率的影響。如果你沒有跟蹤專案之外花費的時間,那麼就會錯過通過減少管理開銷來提高生產力的機會。

0 3

設定明確的目標和里程碑

如果不是最後期限迫在眉睫,人們往往會放慢工作節奏,當最後期限臨近時,他們又會進入“超級模式”,這是人類的天性。如果沒有目標,那麼人們就很難高效地完成工作。如果沒有最後期限,那麼人們就很難有動力及時去實現這些目標。

因此,為了提高你的工作效率,一定要有明確的目標和子目標,並將其附加到里程碑上。

從專案管理的觀點來看,里程碑是專案中的一個標記點,它代表了工作的進展程度。一個好的管理者總是會在專案進度中設定目標和里程碑。然而,很少有時間進度計劃會為單個程式設計師提供有用的目標。這就是個人軟體工程需要發揮作用的地方。 要想成為一個超級高效的程式設計師,你需要對自己專案中的目標和里程碑進行微管理。 一些簡單的目標,例如,“我要在吃午飯之前完成這個功能”或者“我要在今天回家之前找到這個錯誤的根源”,可以讓你集中注意力。而另一些更大的目標,例如,“下週二我將完成這個模組的測試”或者“今天我將執行至少20個測試程式”,可以幫助你評估生產力,並確定你是否實現了自己的目標。

0 4

練習自我激勵

能否提高工作效率取決於你的態度。雖然別人可以幫助你更好地管理時間,或者在你陷入困境時幫助你,但是最重要的是你必須主動改善自己。 你需要時刻注意自己的節奏,不斷努力提高自己的表現。 通過跟蹤自己的目標、努力和進步,你會知道什麼時候需要“讓自己振作起來”,通過更努力地工作來提高工作效率。

缺乏動力可能是提高工作效率的最大障礙之一。 如果你的態度是“啊,我今天還要做這件事”,那麼你完成這個任務所花費的時間可能比你的態度是“哇!這是最棒的部分!這將會很有趣!”更多。

當然,你做的每一個任務並不都是有趣的。這是個人軟體工程需要介入的一個領域。如果你想要保持高於平均水平的生產力,那麼當一個專案讓你感到“缺乏動力”時,你需要有足夠的自我激勵。試著創造一些理由讓這份工作更有吸引力。例如, 為自己創造一些小挑戰,並在完成後獎勵自己。 一個高效的軟體工程師會經常練習自我激勵:你對一個專案保持動力的時間越長,你的工作效率就越高。

0 5

集中注意力,消除干擾

專注於一個任務並消除干擾,是另一種能夠顯著提高生產力的方法。 你應當能夠“進入狀態”。通過這種方式工作的軟體工程師比那些一心多用的人更有效率。為了提高工作效率,你應儘可能長時間地專注於某一個任務。

在沒有任何視覺刺激(除了顯示屏)的安靜環境中,專注於一個任務是最容易的。有時候,工作環境並不利於讓你專注。在這種情況下,戴上耳機,播放背景音樂可能有助於消除干擾。如果音樂太讓人分心,則可以試著聽聽白噪聲,網路上有一些白噪聲的應用程式。

無論什麼時候你在工作中被打斷了,你都需要時間恢復狀態。事實上,你可能需要半個小時才能完全集中精力工作。當你需要集中精力完成一個任務時,可以貼一個告示說只有緊急的事情才能打斷你,或者在你的工作臺附近貼上“辦公時間”,即你可以被打斷的時間,例如,你可以允許別人打斷你5分鐘。回答同事們自己能想明白的問題,可以節省其10分鐘的時間,但是這可能會浪費你半個小時。你必須作為團隊的一部分工作,成為一個好隊友,然而,同樣重要的是, 需要確保過度的團隊互動不會降低你(和其他人)的生產力。

在一個典型的工作日中,會有許多已經預定的工作中斷時間,例如用餐時間、休息時間、會議、行政管理(如處理電子郵件和時間核算)等。如果可能的話,你可以試著在這些事件周圍安排其他活動。例如,關閉任何郵件提醒,因為在幾秒鐘內回覆郵件很少是必需的,而且如果有緊急情況,別人會親自找到你或者打電話給你。如果別人確實希望你能快速回復,那麼你可以設定一個鬧鐘,提醒自己在固定時間查收郵件(對待簡訊和其他干擾也是如此)。當你接到很多非緊急電話時,你可以考慮把手機調成靜音,在休息時每隔1小時左右檢視一下簡訊。如何做取決於你的個人和職業生活,但是 你受到的干擾越少,你的工作效率就越高。

0 6

如果你覺得無聊,那就做點別的事兒

有時候,無論你多麼有動力,你都會對自己的工作感到無聊,也很難集中注意力,你的工作效率會大幅下降。如果你不能進入狀態,無法將注意力集中在任務上,那麼就休息一下,做一些其他事情。不要以無聊為藉口,在一個又一個任務之間來回奔波,卻又完成不了多少工作。但是,當你真的遇到障礙,無法前進時,不妨試著換一些你可以做得更有成效的事情。

0 7

儘可能自立

你應該盡力嘗試處理所有分配給你的任務。 雖然這不會提高你的工作效率,但是如果你不斷地向其他工程師尋求幫助,則可能會降低他們的生產力(記住,他們也需要保持專注,避免干擾)。

如果你正在做一個需要更多知識的任務,而你又不想經常打斷其他工程師,那麼你可以有以下幾種選擇:

  • 花點時間自學,這樣你就能完成任務了。雖然這可能會影響到你短期的工作效率,但是你所獲得的知識將幫助你完成未來類似的任務。

  • 去見你的經理,解釋你遇到的問題。討論一下是否可能把任務重新分配給更有經驗的人,然後給你分配一個你能夠更好地處理的任務。

  • 與你的經理安排一次會議,在不太影響其他工程師工作效率的時間(例如,在工作日的早上)尋求幫助。

0 8

識別何時需要幫助

有時候,你的自立態度可能會有點過頭。你可能在一個問題上花費了太多的時間,而你的隊友只需要幾分鐘就能解決這個問題。成為一個卓越程式設計師的一個方面是,認識到自己陷入困境,需要幫助才能繼續前進。當你被困住的時候,最好的方法是設定一個定時鬧鐘——在被困在這個問題上幾分鐘、幾小時甚至幾天之後,尋求幫助。 如果你知道該向誰尋求幫助,那麼就直接尋求幫助。如果你不確定,那麼就和你的經理談談。 最有可能的情況是,你的經理會指引你找到合適的人,這樣你就不會打擾到那些無論如何也幫不了你的人。

團隊會議(每天或每週)是向團隊成員尋求幫助的好地方。 如果你手頭上有好幾個任務要做,而你又被困在一個特定的任務上,那麼可以把它放在一邊,做其他任務(如果可能的話),然後把你的問題留到團隊會議上來問。如果你在會議之前把工作做完了,則可以讓你的經理分配一些其他工作,這樣你就不必打擾別人了。此外,在處理其他任務時,你可能也會找到解決方案。

0 9

克服士氣低落

沒有什麼比團隊成員士氣低落能更快地扼殺一個專案了。這裡有一些建議可以幫助你克服士氣低落:

  • 瞭解專案的商業價值。 通過了解或提醒自己專案的實際用途,你將對專案投入更多的熱情,也更感興趣。

  • 對專案(你的部分)負責。 當你對這個專案負責時,你的驕傲和榮譽就與它綁在一起了。不管發生什麼事情,請確保你總是可以談論自己對專案所做的貢獻。

  • 避免在你無法控制的專案問題上投入精力。 例如,如果管理層做出了一些影響專案進度或者設計的糟糕決定,那麼就在這些限制範圍內盡最大努力工作。當你可以努力去解決問題時,不要只是坐在那裡抱怨那些管理決定。

  • 如果你的個性給你的士氣帶來了問題,請與你的經理和其他受影響的人員討論一下。 溝通是關鍵。 任由問題繼續下去,只會導致更大的士氣問題。

  • 時刻警惕可能會降低士氣的情況和態度。 一旦專案團隊的士氣開始下降,通常就很難恢復。你越早處理士氣問題,就越容易解決它們。

有時候,財務、資源或者個人問題都會降低專案參與者的士氣。 作為一個卓越的程式設計師,你的工作就是躬身入局,戰勝挑戰,繼續編寫卓越的程式碼,並且鼓勵專案中的其他人也這麼做。 這樣做並不總是容易的,但是沒有人說過成為一個卓越的程式設計師是容易的。

本文節選自 《程式設計卓越之道(卷3):軟體工程化》 一書!

想要了解如何更好地進行軟體開發,走向卓越嗎?

推薦閱讀本書!

程式設計卓越之道(卷3):軟體工程化》

[美] Randall Hyde(蘭德爾・海德) 著

張若飛 譯

  • 媲美高德納 TAOCP 的程式設計領域經典系列

  • 100 本書都沒有講明白的事情被這本書說清楚了

  • 機器原理→底層語言→高階程式碼→團隊生產力

本書深入介紹了從開發方法、生產力到面向物件的設計需求和系統文件的方方面面。

通過本書,你將學習到:為什麼遵循軟體匠藝模型可以讓你做到最好;如何利用可追溯性來加強文件的一致性;如何通過用例分析來建立自己的UML需求;如何利用IEEE文件標準開發出更好的軟體。

通過對高質量軟體開發中技能、態度和道德方面的深入講解,本書揭示瞭如何將工程原理應用於程式設計的正確方法。在這個過程中,Hyde不僅會教給你規則,還會告訴你什麼時候該打破規則。他不僅會啟發你認識什麼是最佳實踐,同時還會讓你發現適合自己的最佳實踐。本書中包含了大量的資源和示例,它是你編寫程式碼的最佳指南,將讓你從同行中脫穎而出。

全網最低價限時優惠 ,電子工業 出版社官方發貨