在互聯網系統中,開發效率與系統穩定性與產品成敗非常相關。開發效率在一定程度反映了團隊的執行力,快速開發能力帶來了產品的競爭優勢。系統穩定性(包括安全及性能等)則是產品的后防線,稍有失誤則會給產品帶來很大傷害。因此開發效率與系統穩定性是衡量互聯網系統開發成熟度最重要的兩個指標。
在軟件開發周期不同階段,這兩者如何控制?
在需求階段,對開發效率的影響常見的是溝通理解偏差帶來的技術風險,之外最常見的還有需求變更的風險。后者大多是來自市場環境的變化作出調整,技術主管更多的是積極心態去應對。但對前者溝通理解偏差導致效率問題也不罕見,更值得警惕。
在技術設計階段最大的風險是技術方案,找個無需多講,考驗團隊的架構能力以及對當前系統的駕馭程度。
開發階段最大的風險是單元測試不到位或缺失。很多號稱“敏捷”型項目依賴在線上測試及修改,當模塊增多后,這樣代碼健壯性就會變得比較脆弱,不少團隊也會越走越慢。
Review階段風險是簡潔性及性能。除了壓力測試能達標之外,警惕那些不易懂的代碼,這些代碼將來會成為事故多發地帶。
部署階段最大的風險是上線計劃把控,上線過程中操作錯誤的情況并不罕見,如去年Amazon EC2的故障就是由于操作失誤造成。
從宏觀看來,技術方案的風險最大,由于模塊很多,具有豐富經驗的高手不可能參與每一個環節,這就會出現木桶的短板效應,架構師認為不重要的地方總是會出問題。給用戶體驗造成極大傷害。
另外還有團隊文化的風險。大部分團隊很難形成書面交流的習慣。口頭溝通需求、討論方案對創業團隊非常適合。在團隊變大之后,這樣的習慣會造成信息流動障礙,可能會給工作效率帶來更多負面問題。同時大部分團隊也對流程、模板、規范缺乏了解與重視,過多依賴參與人的內部驅動力及能力,無法依靠制度與流程來取勝。