選擇了IT行業,就選擇了一個充滿於挑戰的行業。對於軟件工程師而言,項目的成功和失敗對他們很重要。由於一行行的代碼他們不知道熬了多少個通宵,腦細胞死了多少而寫出來的。若是項目失敗了,就意味着辛辛苦苦的一切付諸東流。這不得不使人沮喪。本文就有尚觀教育給你們講解一下是什麼緣由會讓一個項目在不知不覺中慢慢地且不聲不響地走上失敗之路。架構
一、成員流動工具
每家公司都會經歷員工或承包商的流動,但關鍵人物太過於常常變更,多是一個項目註定失敗的領先指標。有不少緣由能夠說明爲何人員流動對項目會有不利的影響。第一,它會形成其餘團隊成員心理上的影響,而下降生產力。其次,失去關鍵人物可能會致使歷史性和重要的信息會永遠遺失,這會放緩發展的腳步。最後,替換隊員須要對新的成員進行訓練,並跟上團隊的腳步。這是一個會令人分心的工做,會讓其餘成員放下手邊的開發工做來教導新的成員,結果會致使開發成本的增長和延長交付時間。測試
二、走走停停症候羣設計
孩子被教導說,「不要喊狼來了。」這話是一個警告,不要誤發假警報。這種警告有一種「進行!中止!進行!」的週期,在項目中很容易被忽略。一位經理、客戶,或其餘一些單位猛烈地催促他的團隊,聲稱該項目要在某一日以前完成。開發人員所以週末加班,投注更多的心力。而後,就像這股來得很快的催促之力,忽然之間卻又嘎然而止。個月後,它又再次告急。 「快點,咱們必須在X以前出貨!」 而後一樣的事情又再次發生。3d
項目這種走走停停一再重複的緊迫性將會對開發團隊形成心理層面的影響。開發人員再也不相信任何的迫切性。事實上,他們會有一種心態,開始以爲這個項目並非一個須要認真對待的項目,它很快將再次中止,那麼爲何還要投入任何的努力?日誌
因此,不要對項目喊狼來了!blog
三、完美主義者的態度開發
許多工程師都有一種完美主義者的態度。這種態度所帶來的問題是,不可能開發出完美的系統,撰寫出完美的代碼,或者在最適當的時間推出產品。完美主義是鏡花水月,若是完美主義是公司文化的一部分,它將會是產品可能會不斷修正,直到公司破產倒閉的標誌。原型
正確的心態不是完美,而是成功。爲了能夠成功地推出產品,什麼是最低的成功標準?設下成功的標準,並在一旦達成後,當即推出產品。以後能夠用啓動加載器(boot-loader)來添加功能並解決那些小錯誤。產品
四、加速的時間表
要迅速地開發出一個嵌入式系統,事實上,設計團隊事實上要放慢腳步,這彷佛違反直覺。但依據加速的時間表(accelerated timetable)工做,會由於壓力和,更重要的是,有比較高的可能性會產生錯誤,而使得效率下降。錯誤將直接影響小缺陷的數量,而這些小缺陷隨後又會增長測試時間和返工的時間。
另外一個問題是,當開發人員都搶着和努力知足加速的時間表時,他們會圖省事而走快捷方式。好比,代碼沒有批註及說明。像是架構圖和流程圖等設計文件也付之闕如。相反地,設計只留存在程序設人員的心中。放慢腳步,把事情作正確,會更快地獲得最終的解決方案。
五、 不良的結構化軟件
嵌入式軟件是嵌入式系統的血液;沒有了它,產品就沒法運做。不良的結構化軟件是一個很明確的失敗徵兆。嵌入式系統的系統結構須要具備靈活性,以便將來成長之用。它要有用於測試、除錯和進行日誌記錄的空間。一個架構不佳的系統將會使得施做不良,而致使該軟件錯誤百出而難以管理,從而註定要將它的歲月花在除錯上,直至項目最終死亡爲止。
六、 本末倒置
開發一個新產品是一種會使人興奮的奮鬥過程。其中有不少事情要作,而公司一般是急着想把產品從概念化成能夠生產的產品。這種匆促的舉動是極其危險的,尤爲是當生產決定浮現時。
當產品的機械設計或外觀和感受被拿來推進其電氣需求時,這就是一個很好的例子。在工做的電氣和軟件原型被驗證以前,生產工具就準備好要生產了。在這種狀況下,彷佛老是有電路板沒有檢查,須要進行調整的問題。對那些匆匆忙忙、且太快就試着要把全部的事情同時拉在一塊兒的項目,最終結果老是因爲修改而落入花更長時間和更多成本的結果。
七、 範圍潛變
每一個項目都有範圍潛變(scope creep),但範圍潛變的程度能夠是該項目是否會成功或失敗的決定性因素。範圍潛變最危險的一個領域是,它是暗中爲害的。某天在電路板上增長了一個簡單的傳感器,幾個月後再加一些上去,這些看起來徹底無害。但他們多是致命的。
範圍潛變的最大問題是,變化一般是微小的。乍看之下,改變看起來只是短短几天的工做。可是,每次加一點點,系統的複雜性也隨之增長了。複雜的系統須要更多的測試,可能也須要更多的除錯。隨着時間的發展,範圍潛變能夠將系統改變到使原來的軟件體系結構和設計變得過期,或甚至變成是不正確的解決方案!最終的結果是使一個項目變得遠遠地超出其預算範圍,實際進度落在交貨日期以後,此一項目不多或幾乎沒有結束的跡象。
結論
不論是什麼樣的嵌入式工程師,在開發新的嵌入式系統時,沒有人確保這個項目百分之百會成功。影響項目的成功有許多因素,而咱們工程師們須要作的就是把失敗率降到最低。你能夠從以上總結中吸收經驗。判斷本身的項目是否在走着一條緩慢且邁向失敗的路。