管理開發(fā)時(shí)間,需要維護(hù)一個(gè)簡(jiǎn)明且實(shí)時(shí)更新的計(jì)劃。一個(gè)工程計(jì)劃是一個(gè)估計(jì),一個(gè)時(shí)間表,一系列取得進(jìn)步的里程碑,還有對(duì)你的團(tuán)隊(duì)或者你的時(shí)間在每個(gè)任務(wù)的估計(jì)和安排。這也應(yīng)該包括你需要記得去做的其他事,比如與質(zhì)量保障人員見面,準(zhǔn)備文檔,或者訂購設(shè)備。如果你在一個(gè)團(tuán)隊(duì)里,工程計(jì)劃會(huì)是一個(gè)共同承認(rèn)的協(xié)議,不論是在開始,還是進(jìn)行的過程中。
功能工程計(jì)劃存在的意義是幫助做出決定,而非展示你是如何組織的。如果一個(gè)工程計(jì)劃太長(zhǎng)或者不是最新的,它對(duì)做出決定將是無用的?,F(xiàn)實(shí)中,這些決定通常是關(guān)于獨(dú)立的個(gè)人的。計(jì)劃和你的判斷讓你決定你是否應(yīng)當(dāng)把任務(wù)從一個(gè)人身上移到另一個(gè)人身上。里程碑標(biāo)識(shí)了你的進(jìn)步。如果你有一個(gè)奇妙的工程規(guī)劃工具,不要被為工程創(chuàng)建一個(gè)表面巨大設(shè)計(jì)(Big Design Up Front)所迷惑,但可以用它保持清晰和實(shí)時(shí)性。
如果你沒有一個(gè)里程碑,你應(yīng)該采取即時(shí)的行動(dòng),比如通知你的 boss 工程已經(jīng)滑過的部分中進(jìn)度的完成。這種估計(jì)和時(shí)間表可能不會(huì)在開始時(shí)很完美,這會(huì)產(chǎn)生這樣一種幻覺,你能夠填補(bǔ)工程的上一個(gè)部分中錯(cuò)過的日志。你可以。但這很可能是因?yàn)槟愕凸懒四莻€(gè)部分或者高估了一部分。所以工程進(jìn)度的完成已經(jīng)滑過了,不管你是否喜歡。
確保你的計(jì)劃包括了:內(nèi)部團(tuán)隊(duì)會(huì)議,寫代碼,文檔,規(guī)劃周期活動(dòng),集成測(cè)試,處理外部關(guān)系,疾病,休假,已有工程維護(hù),還有開發(fā)環(huán)境維護(hù)。工程計(jì)劃可以作為一種為局外人或你的 boss 準(zhǔn)備的關(guān)于你或你的團(tuán)隊(duì)正在做的事情的視圖。因?yàn)槿绱耍运鼞?yīng)該是短且及時(shí)更新的。
一個(gè)工程通常依賴于它所不能控制的組織,第三方軟件危機(jī)是每個(gè)相關(guān)的人都必須意識(shí)到的。
永遠(yuǎn)也不要把希望放在蒸汽上面。蒸汽是任何所謂的尚未可用然而聲稱可用的軟件。這是最確定的一種破產(chǎn)的方式。僅僅懷疑一個(gè)軟件公司在某個(gè)日期對(duì)于某個(gè)軟件產(chǎn)品的某個(gè)特性的承諾是不明智的。更明智的做法是完全忽略它,并且忘記你曾聽說過這種事。不要在你的公司使用的任何文檔里寫下這些東西。
如果一個(gè)第三方軟件不是蒸汽,它仍然是有風(fēng)險(xiǎn)的,但至少它是一個(gè)可以處理的蒸汽。如果你正在考慮使用第三方軟件, 你應(yīng)該早點(diǎn)投入一點(diǎn)精力去評(píng)估它。人們可能沒聽說過,評(píng)估三個(gè)產(chǎn)品的適合性要花兩個(gè)星期還是兩個(gè)月,但這必須盡可能及早做。沒有合適的估計(jì),集成的代價(jià)不能被準(zhǔn)確計(jì)算。
理解已有的為某個(gè)特殊目的的第三方軟件的適用性是非常見仁見智的東西。這是非常客觀的,并且通常住在專家心里。如果你發(fā)現(xiàn)了那些專家,你可以節(jié)省很多時(shí)間。很多時(shí)候,一個(gè)工程會(huì)如此完全地依賴于第三方軟件,以至于如果集成失敗了,工程就失敗了。像時(shí)間表里寫的那樣清晰地表達(dá)了危機(jī)。如果危機(jī)不能被盡早消除,試著訂一個(gè)為意外準(zhǔn)備的計(jì)劃,比如可用的第二方案,或者自己寫下功能點(diǎn)的能力。永遠(yuǎn)不要讓時(shí)間表依賴于蒸汽。
使用咨詢師,但不要依賴他們。他們是神奇的人,非常值得尊敬。因?yàn)樗麄兛催^許多不同的工程,他們通常比你知道更多具體技術(shù),甚至是編程技術(shù)。最好的使用他們的方式是像家教那樣用例子教學(xué)。
然而,他們通常不能像正常員工那樣用相同的感覺融入團(tuán)隊(duì),可能僅僅是因?yàn)槟銢]有足夠的時(shí)間去學(xué)習(xí)他們的優(yōu)點(diǎn)和缺點(diǎn)。他們的工資更低。他們更容易離開。如果公司做得好,他們可能得到的更少。有些可能是好的,有些可能與平均水平一致,有些可能挺糟糕,但希望你對(duì)咨詢師的選擇不會(huì)像你對(duì)雇員的選擇那樣仔細(xì),這樣你會(huì)獲得更多不好的咨詢師。
如果咨詢師要寫代碼,你必須在你使用它們前仔細(xì) review。有著大段帶風(fēng)險(xiǎn)的代碼,你到不了工程的終點(diǎn)。事實(shí)上這對(duì)所有的團(tuán)隊(duì)成員都是成立的,但你通常有更多與你接近的團(tuán)隊(duì)成員的知識(shí)。
仔細(xì)考慮會(huì)議的代價(jià):這花費(fèi)了隨參與者數(shù)量倍增的時(shí)間。會(huì)議有時(shí)候是必要的,但越小越好。小會(huì)議的交流質(zhì)量更好,過度浪費(fèi)的時(shí)間更少。如果一個(gè)人在會(huì)議感到厭煩,把這當(dāng)做會(huì)議應(yīng)該更小的標(biāo)識(shí)。
非正式交流值得做任何事情去鼓勵(lì)。更多有用的溝通工作在同事間的午飯可以進(jìn)行,而非其他的時(shí)間。許多公司沒有意識(shí)到或者不支持這一點(diǎn),這是一種遺憾。
異議是一個(gè)做出好決定的絕佳機(jī)會(huì),但這需要被謹(jǐn)慎處理。你可能會(huì)覺得你充分的表達(dá)了你的想法,并且在決定做出前,你的意見已經(jīng)被聽取。這種情況下,沒有什么可以再說的,你應(yīng)該決定你是否要支持這個(gè)決定,即使你不同意它。如果你可以在自己不同意的情況下,支持這個(gè)決定,就這樣說實(shí)話。這展示了你是多么有價(jià)值,因?yàn)槟闶仟?dú)立的,不是一個(gè)唯唯諾諾之人,同時(shí)是一個(gè)尊重決定的團(tuán)隊(duì)成員。
有時(shí)候一個(gè)你不同意的決定,會(huì)在決策者沒有充分聽取你的觀點(diǎn)前做出。你應(yīng)該在公司和集體的基礎(chǔ)上評(píng)估是否應(yīng)該提出這個(gè)話題。如果在你看來這只是一個(gè)小錯(cuò)誤,這可能不值得重新考慮。如果在你看來這是一個(gè)大錯(cuò),你當(dāng)然必須提出異議。
通常,這不是一個(gè)問題。在一些充滿壓力的環(huán)境下,在一些個(gè)人因素下,這會(huì)導(dǎo)致事情個(gè)人化。例如,一些非常牛逼的程序員在他們有好的理由認(rèn)為一件東西是錯(cuò)的時(shí)候,缺乏挑戰(zhàn)決議的信心。在最糟的情況下,決策者是不安全的,并會(huì)把這變成一個(gè)對(duì)權(quán)威的挑戰(zhàn)。最好記住,這種情況下,人們會(huì)用他們大腦中爬蟲動(dòng)物的部分來做出反應(yīng)。你應(yīng)該私下提出你的爭(zhēng)議,然后嘗試展示新的知識(shí)是如何改變決議做出的基礎(chǔ)的。
不管決議是否被推翻,你必須記住你永遠(yuǎn)不能說出“我的話撂這了,我早就這樣告訴你了”這樣的話,因?yàn)檫@個(gè)決定已經(jīng)得到了充分探討。