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

語言: 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不僅會教給你規則,還會告訴你什麼時候該打破規則。他不僅會啟發你認識什麼是最佳實踐,同時還會讓你發現適合自己的最佳實踐。本書中包含了大量的資源和示例,它是你編寫代碼的最佳指南,將讓你從同行中脱穎而出。

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