軟體行業裡有一本名著叫《人月神話》,其中提到兩個非常重要的概念:本質複雜度(essential complexity)和偶然複雜度(accident complexity)本質複雜度就是解決乙個問題時,無論怎麼做都必須要做的事,而偶然複雜度是因為選用的做事方法不當,而導致要多做的事。大部分程式設計師忙碌解決的問題,都不是程式問題,而是由偶然複雜度導致的問題。
在軟體行業發展過程中,積累了大量的最佳時機可以減少程式設計師在日常工作中由於偶然複雜度導致工作量倍增。但這些最近實踐往往零散,如何建立體系化的思維以系統的提公升工作效率呢?
問題思考框架:
軟體開發是為實現使用者需求,在接到產品經理的功能特性時,我們可以按照如下的思路與原則來思考。
現狀
接到軟體開發需求,現狀是什麼?目標 實現路徑 而在這個思考框架之下,我們可以不斷的應用如下幾個原則
以終為始;
任務分解;
溝通反饋;
自動化。
其中 以始為終是針對目標,任務分解,溝通反饋,自動化是針對實現路徑。
以始為終:
對做軟體的人來說,我們應該把「終」定位成做乙個對使用者有價值的軟體,能夠為別人帶來價值,自己的價值才能體現出來。
最佳實踐一
在日常工作中,我們在布置任務的時候通常由於任務安排人與任務負責人在對任務完成的定義上理解不一致,導致任務最終交付的時候存在巨大的偏差。如何解決這個問題呢?
dod:(definition of done)定義完成
而在軟體開發中,我可以按照如下的套路對各個階段的完成進行定義:
特性開發完成,表示開發人員經過了需求澄清、功能設計、編寫**、單元測試,通過了測試人員的驗收,確保**處於乙個可部署的狀態,相關文件已經編寫完畢。
開發完成,表示開發人員編寫好功能**,編寫好單元測試**,編寫好整合測試**,測試可以通過,**通過了**風格檢查、測試覆蓋率檢查。
另外為了便於檢查與實際應用,我們可以指定乙個dod的清單。清單是由乙個個的檢查項組成的,用來檢查我們的工作完成情況。
提公升程式設計師效率
筆者工作多年,總結了一些經驗,可以幫助大家成為乙個更加高效的程式設計師。程式設計法則,與設計和工程的原理密切相關。下面這些程式設計法則幫助我讓我獲益匪淺,所以我想分享給大家,希望也能幫助大家更高效,生產出的 更容易維護,並且bug和缺陷更少。dry原則 不要重複 don t repeat yours...
提公升hive效率的最佳實踐
表相關 儲存格式 避免使用text,json,有可能的haul也應避免sequence檔案 理想的格式是rcfile row columnar file 壓縮 block compression 比 value compression更高效,最終結果及中間結果都應壓縮,set hive.exec.c...
頂級程式設計師的10條最佳實踐
本文 eet工程師 1 慎重選擇第1門語言 程式語言各有不同,不過區別不大。但用語言的人區別就大了。選擇了一門語言你就選擇了乙個群落。如果你想快速建立原型 尤其對於希望對產品進行迭代公升級的創始人來說 那就用 ruby 或者 js 2 你不是程式猿!偉大的開發者能夠建構並開發應用。驚豔的開發者能夠在...