Make it run, make it right, make it fast
如果問我工作十多年后相比剛畢業(yè)參加的時候,學(xué)到了哪些重要的經(jīng)驗,那么“Make it work, make it right, make it fast”一定是其中最重要的經(jīng)驗之一。第一次聽到這句話是從以前老板?
@沈嶸
?那里,然后發(fā)現(xiàn)是來源自大牛?Kent Beck?《Make It Work Make It Right Make It Fast》。這是軟件項目開發(fā)的一條經(jīng)典原則,實際上不限于軟件開發(fā)領(lǐng)域,它把一個項目分成三個階段,每個階段有不同的側(cè)重。
Make it work
在這個階段,了解項目需求后,聚焦于項目所需要的最小需求,盡快讓項目先跑起來,不必過于追求設(shè)計和性能。同時,展示你的結(jié)果,并根據(jù)反饋快速調(diào)整。
這個階段的重點在于需求的響應(yīng),以最快的速度實現(xiàn)需求。這是個快速試錯,快速迭代,驗證需求的過程。
Make it right
到了這個階段,需求基本上已經(jīng)穩(wěn)定,要保證項目執(zhí)行結(jié)果正確,更多的測試,盡可能少的bug。但"Make it right"并不僅僅意味著只要結(jié)果正確就夠了,還需要對系統(tǒng)進行重構(gòu),優(yōu)化系統(tǒng)設(shè)計,讓代碼更簡潔結(jié)構(gòu)更清晰,易于擴展和維護。
這個階段的重點在于保障系統(tǒng)的穩(wěn)定,同時優(yōu)化設(shè)計和重構(gòu)。
Make it fast
當(dāng)系統(tǒng)已經(jīng)穩(wěn)定,設(shè)計也趨于成熟的時候,還需要對系統(tǒng)進行性能上的優(yōu)化,良好的性能,不僅可以提升用戶體驗,同時也能降低運維的成本。這里的“fast”,不僅體現(xiàn)在程序的性能,也包括對整體項目流程效率的提升,例如自動編譯、自動部署的工具或腳本,如果前期沒有做,那么這時候就要加上了。
這個階段的重點在于系統(tǒng)的性能優(yōu)化,包括項目流程效率的優(yōu)化。
常見誤區(qū)
“Make it work, make it right, make it fast” 這個原則拆開來很好理解,但這三個階段不是孤立的,而是一個整體,同時又是有先后次序的。
在我初學(xué)編程的時候,要達(dá)到Make it work也并不是太難的事情,網(wǎng)上找些開源項目,參考書上的教程,總能把一個不算太復(fù)雜的項目搭出來,但卻沒有能力去make it right,更沒有辦法去make it fast。最終的結(jié)果就是做出來的項目難以維護,性能低下。
在我學(xué)了一段時間編程后,懂了一些設(shè)計模式,了解了一些性能優(yōu)化的辦法,于是開始直接省略第一步,首先考慮的是“Make it fast”,假想系統(tǒng)有超大用戶超大訪問量,然后考慮的是“Make it right”,設(shè)計的時候為了設(shè)計模式而設(shè)計模式,恨不得把所有設(shè)計模式應(yīng)用個遍,最后再想著"Make it work",但這時候因為前期的過度設(shè)計,系統(tǒng)復(fù)雜而臃腫,要讓它work,簡直是太難了,最終就是開發(fā)頻繁延期,甚至難產(chǎn),做出來的程序也難以維護。
?
經(jīng)過這么多年的磨煉,現(xiàn)在大到項目,小到具體功能,在每個版本都會盡可能的按照這個原則來實行:
經(jīng)歷這些階段后,項目的進度和質(zhì)量都會有一個比較好的結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的Make it run, make it right, make it fast的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 涨工资的那点事
- 下一篇: 记录下两个孩子在MineCraft里面还