軟件開發有(yǒu)些管理(lǐ)者喜歡讓開發人員同時在幾個任務(wù)上展開工(gōng)作(zuò),而不是順序地完成它們。 這樣做可(kě)能(néng)基于以下理(lǐ)解:
任務(wù)越早展開,越能(néng)盡早暴露問題,從而便于及時解決,降低管理(lǐ)上的風險。
開發任務(wù)緊,多(duō)任務(wù)安(ān)排可(kě)以增大開發人員的負荷,防止他(tā)們偷懶。
多(duō)個任務(wù)具(jù)有(yǒu)相同的優先級,而且彼此之間沒有(yǒu)依賴關系,因而應該同時展開。
任務(wù)啓動的早,并不能(néng)消除問題,隻是把問題提前了。從這個角度講,問題的總量并不會減少。既然這樣,過早地暴露出問題有(yǒu)什麽好處呢(ne)? 在項目的可(kě)用(yòng)資源(人力、時間)一定的情況下, 我看不到這樣做的好處。 如果項目資源可(kě)以增加, 一人多(duō)任務(wù)的情況就不會出現,也就沒必要讨論了。
通過多(duō)任務(wù)來提高開發人員的工(gōng)作(zuò)強度并防止他(tā)們偷懶的做法,我認為(wèi)是幼稚的。管理(lǐ)者應努力和開發人員建立起信任關系,并通過其他(tā)方式激發他(tā)們的幹勁。 當他(tā)們像負重的駱駝一樣被對待時,作(zuò)為(wèi)會說話的智能(néng)生物(wù),開發人員知道如何把超額的重物(wù)放在原地,而令管理(lǐ)者覺得他(tā)們在負重前行一樣。
一人多(duō)任務(wù)的安(ān)排的問題在于,人不是多(duō)核系統。 他(tā)隻能(néng)采用(yòng)交替工(gōng)作(zuò)的方式來“同時”展開多(duō)項任務(wù)。當他(tā)在不同任務(wù)間切換時,特定任務(wù)上的工(gōng)作(zuò)時間就不再連續了。就像單核CPU執行多(duō)任務(wù)一樣,這是讓開發人員的大腦應用(yòng) TDM 技(jì )術。不幸,人腦不是高效的 TDM 設備。
無論如何,一人多(duō)任務(wù)的安(ān)排都應該努力避免。 如果僅僅因為(wèi)優先級相同,那這些任務(wù)可(kě)以随機地順序安(ān)排。
*[TDM]: Time-division multiplexing,即時分(fēn)多(duō)路複用(yòng)。