為了項目上線而加班,真有必要嗎?

jopen 11年前發布 | 4K 次閱讀 程序員

大家都知道:軟件項目的加班可能真是有百害而無一利,但總還有些時候,有些人有僥幸心理,或是現實情況實在無法讓步,比如項目必須在某個日期上線;在這些情況下,應該跟團隊溝通些什么?Quora 資深軟件工程師 Edmond Lau 在自己的一篇博客中,給出了自己的看法。這篇博客名為《為了滿足項目上線日期要求,我該怎么告訴我的團隊工作更多時間?》。

  文章一開始,Edmond 指出:

在試圖告訴團隊要加班之前,一定要確保一點:為了保證上線日期,你有一個切實可行的計劃。否則,從長遠來看的最佳策略是:根據團隊當前開發能力和效率,重新定義要上線的功能;或者將截止日期重新調整為更現實的時間。

</blockquote>

  接下來,Edmond 列舉了自己的親身經驗。他曾參與過兩個持續多月大型項目,而且團隊成員都是高手,專注投入在這兩個項目上。為了在某個日期之前上線,工程經理要求團隊加班工作,每周 60 到 70 個小時。可是項目最后還是沒有按時完成。Edmond 這樣回顧項目的后果:

這樣的方式讓一些團隊成員筋疲力盡,有些人后來離開了,其他人用了很久才恢復過來。這兩個項目的情況都無法判斷:加班是否真能加快進度,加班的決策在當時也許很合理,但是長遠來看,兩只團隊都深受其害。我們從這兩個項目中學到慘痛的教訓:不管你多么希望項目在某個日期前完成,都對它能否做到這一點毫無幫助。不要將積極思考與現實的樂觀主義混為一談。

</blockquote>

  Edmond 列舉了幾個加班無助于項目盡快交付的原因:

  • 工作更多時間,每小時的效率將會降低。
  • </ul>

    如果你的團隊已經習慣了每周 40 小時工作的生活節奏,而且一年來都是如此,那么很可能他們加班的效率會低于平常,甚至可能產生負面影響。疲累和睡眠減少會傷害認知功能,而且降低工作質量。

    </blockquote>

      他還列舉了 150 年以來的研究文獻,證明這一點,而且有些文獻甚至說明:如果加班過多,

    有問題的工作累計帶來的負面影響,會導致項目完成日期延遲,甚至比同樣的團隊按照每周 40 小時的工作節奏完成得還要晚。

    </blockquote>

    • 很可能你現在落后的時間進度比你以為的還要多。
    • </ul>

      在工程中,做出準確的項目估算非常難以做到。進度已經晚了,說明上個月的工作就估算得不夠。所以,可能過去的工作估算少了,更有可能的是:整個項目都估算少了,包括剩下幾個月的工作。

      我們在項目開始時估算得要比項目結束時準確,因為開始時的工作重點放在可以深入理解的工作之上;到結束時,團隊常常低估整合測試用去的時間> ,而且每個沒有預料到的問題都會讓進度延后一周甚至更多。這些效應疊加起來會產生更多延遲。

      </blockquote>

        他引用了《人月神話》里面的話:

      特別是沒有為系統測試留出足夠時間,這會帶來災難性后果。因為延遲是在項目日程結束時來臨的,除非交付日期快到了,沒人會意識到進度上的問題。

      </blockquote>

      • 額外的工作時間會讓團隊精疲力竭。
      • </ul>

          Edmond 引用了《人件》中的一個癥狀:“undertime”,也就是說:跟隨加班而來的,常常是員工為了要補償生活方面的損失,而在工作中耗費時間去做與工作無關之事。

        我們的經驗指出:額外工作時間的積極影響被大大夸大了,而其負面影響卻從未有人考量。負面影響可能十分嚴重:錯誤、倦怠、失誤不斷增多、補償用的“undertime”等等。

        </blockquote>

        • 額外的工作時間會傷害團隊士氣。
        • </ul>

            在 Edmond 看來,加班之前,可能團隊每個人都有自己的方式來完成每周 40 小時的工作,而且還能保證團隊的凝聚力。一旦要加班,可能某些人就要多完成一些不能多加班的人要做的事情,這會影響彼此之間的關系,以前開心的團隊,現在可能就不開心了。

          • 管理向截止日期的沖刺,需要耗費更多管理開銷。
          • </ul>

            為了管理額外工作而舉行更多站立會議和其他會議,這很常見,因為你希望團隊要彼此溝通,保證每個人都在做正確的事情。然而,這種額外的溝通開銷常常不會放在工作估算中。

            </blockquote>

            • 向截止日期的沖刺,會刺激產生更多技術債務。
            • </ul>

                Edmond 認為:為了趕進度而加班,幾乎不可避免地會令得團隊找捷徑。而且在面臨更多項目壓力的情況下,這些技術債務很可能越積越多,將來一定要付出更多成本償還。

                不過,總有些現實情況不可避免,真到那時候,Edmond 建議在溝通時要強調一下因素。

              • 要理解為什么進度落了這么遠,找出根本原因,還要與團隊溝通。
              • </ul>

                沒趕上進度,是因為人們偷懶,還是因為項目要比想象的復雜,要占用更多時間?如果不能理解根本原因,也就不能有信心同樣的問題不會在未來幾個月出現。

                • 向團隊說明更可行的項目計劃和時間進度,說明為什么要加班才能真正趕上上線日期,還要說明怎么做。

                  </li> </ul>

                  僅僅告訴團隊他們落后了還不夠,如果不能得出更詳細、更明確的計劃達成目標,這就是一個警告信號,說明你比你以為的情況更落后。

                  </blockquote>

                  • 確保團隊每個人都能理解、認同你的新進度安排。

                    </li> </ul>

                    如果關鍵成員不相信你的時間表可行,那就得好好想想:你可能無法在新的指定日期前完成你想完成的工作。要是無法做到所有人都認可,那么可能只有某些人認同加班,除了團隊中會有不公平的感覺之外,可能你還是無法達成最后完成日期。

                    </blockquote>

                    • 重點放在項目、團隊或是組織的整體工作目標上,說明為什么按時上線如此重要。

                      </li> </ul>

                      如果你無法把團隊融合在一起,這就是另一個警訊:說明不是所有人都像你這么有動力去加班。

                      </blockquote>

                        最后,Edmond 指出:

                      如果,在接下來沖刺的兩個月時間里,你發現實際進度比修正后的還要延遲,那就準備放棄這個沖刺吧。接受現實,知道你可能是在馬拉松的半程發起了沖刺,而終點線比你想的要遠得多。不再可能讓團隊更努力去解決問題了。減少損失,不妨想想怎么制訂一個應急計劃應對后續問題。

                      錯過截止日期很糟糕,但要是錯過了截止日期,而且讓團隊精疲力盡,而且沒有應急計劃,這就更糟糕了。

                      </blockquote>

                        這篇博客來自 Edmond 在 Quora 上回答的一個問題,還有很多其他人對這個問題做出了自己的回答。

                      來自: InfoQ
                       本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
                       轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
                       本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!