建立快速響應軟體開發的四個關鍵 - Andy Hunt
這是成功的現代軟體開發策略的四個基本部分。
- 無可挑剔,可靠,自動化的構建和部署系統
- 有效,低摩擦的協作
- 不斷學習和提高技能
- 可更換的一次性軟體的設計
無可挑剔,可靠,自動化的構建和部署系統
您,您的團隊以及您的組織必須依賴並依賴於連續,自動化的構建和部署。
無論您如何熟練地與使用者合作,創造出令人敬畏的新介面,提出出色的創意,優雅的設計和架構等等 - 如果您無法可靠地構建和部署您正在編寫的軟體,那麼您可能也是如此根本不打算寫它。
透過推廣“DevOps”和更好的工具,大多數團隊都會聲稱他們手頭有這樣的問題:版本控制,構建,測試和部署。但你真的能夠連續構建嗎?看看這些相關實踐的評估部分:
細節很重要,這就是我們開始嘗試為這些基本活動提出具體評估的原因。您可能認為您的團隊已準備好進行持續開發,但也許您正在做的一些實踐阻礙了您。例如,如果你有長期執行的功能分支,必須在將來某個時候重新整合到Master,那麼恭喜你!您剛剛重新發明了“瀑布”。您可能希望在生產中使用功能開關。
有效,低摩擦的協作
在這種情況下,“我們”是參與專案的每個人:團隊,高管,使用者。我們都必須找到一種合作的方式,這可能很難,因為我們所有人都有不同的議程,不同的要求,不同的技能組合,不同的價值觀和不同的觀點。
無論在技術,進度,人員配置等方面存在任何分歧的細節,首先要問的問題是“有什麼意義?”。
換句話說,我們努力服務的最終企業願景是什麼?我們甚至知道嗎?如果沒有,我們如何在面對低水平,每天的問題時做出正確的決定?“有效協作”的一個方面是每個人 - 從高管到開發人員 - 需要知道什麼是重點?。你不可能希望讓組織指向同一個方向,直到每個人都知道這個方向是什麼,以及為什麼我們這樣做。
合作的另一個重要方面是一個通常被稱為“心理安全”的想法。這意味著你有一個人們可以安全地承擔個人風險的環境:安全地表達想法和意見; 可以安全地嘗試替代設計,不同的方法。如果團隊成員害怕被嘲笑,或者失去地位甚至失去職位,那麼您的環境就不安全,您將無法達到任何有意義的協作水平。
您的組織中是否有足夠的心理安全水平?檢視這些相關實踐中的評估,並檢視:
不斷學習和技能提升
對不斷變化的唯一防禦是不斷學習。
不斷學習是任何技術領域生活的基本要求。但是,除了將API填入最新的JavaScript框架之外,還有更多的“學習”。
你必須“學會”幾乎和你學到的一樣。
這是讓人們嘗試學習新的開發方法,或學習新的程式語言範例(例如,從程式到物件導向到功能)的事情之一。你必須擺脫舊的習慣,舊的心理地圖,解決舊問題的方法,因為現在所有這些都是不同的。
是的,它是不變的。沒完沒了。它也不僅限於新興技術。改變來自各地:
- 觀眾和市場
- 正在建設的不斷髮展的系統
- 使用者不斷增長的實現他們的需求和要求,他們學習他們
- 技術細節(這個框架與那個)
- 範例(SQL vs NoSQL,OO vs FP,MVC和變體)
- 提高自己的技能和能力
任何現代“方法論”都應該包括團隊和個人的學習實踐。這不是你可以忽視或降低到企業一年一度的“羊圈”訓練的東西。以下是您應該做的一些學習型實踐:
設計可更換軟體
你需要能夠輕鬆地嘗試一下。軟體開發的一個謬論是,你可以提前以某種方式“解決問題”,缺乏背景,缺乏經驗。它通常不起作用; 相反,獲得答案的最有效方法是嘗試:在當前環境中嘗試實際,以獲得真實的反饋。
沒有實驗會失敗,除非它根本沒有給出任何反饋 - 在這種情況下你不知道它是否有效。許多實驗都會產生負面反饋:它沒有按預期工作。在開發環境而不是生產環境中找到它是很好的,但這意味著必須進行更改。
關於如何使軟體保持柔軟並且能夠隨著時間的推移容易地改變,已經花費了大量精力,研究和墨水。但是,正如經驗告訴我們的那樣,將軟體設計為“可維護”或“可擴充套件”的幾乎所有時間都是浪費。
不要使軟體“可維護”或“可擴充套件”; 讓它可以替換
設計軟體部件可以輕鬆更換,而不是浪費時間去預測永遠不會發生的未來。
函式程式設計(FP)語言和方法可以幫助實現這一想法。
物件導向程式設計(OOP)在當時聽起來像一個好主意,也許純粹可能已經實現過,但是通常採用我們做了一件非常糟糕的事情。可變狀態,在整個系統中暫時耦合和擴散,在一個糾結的義大利麵碗泥 - 與物件導向的肉丸。儘管我們有最好的意圖,但這些系統通常會變得脆弱。在許多物件導向的程式中,每個物件都像一個復仇的前配偶一樣坐在那裡,有著長久的記憶和對系統的隱藏怨恨,隨時準備突襲並在你最不期望的時候肆虐。
將系統視為資料的一系列變換(如管道),而不是糾結的,錯綜複雜的OO設計。每個步驟 - 每個函式 - 都是無狀態的,沒有隱藏的時間彈或驚喜。
透過一系列轉換,可以更輕鬆地測試和推斷軟體正在做什麼,更重要的是,當出現問題時會出現什麼情況。找出問題的位置並解決問題要容易得多。但它不只是關於測試,而是關於可替換性:它是關於一次性軟體。
當一個元件 - 一個管道的一個步驟,一個功能 - 突然和意外的過時,它應該很容易撕掉並替換為其他東西。管道方法可以讓您輕鬆完成。
安迪的設計定律:如果你不能輕易地撕掉每件作品,那麼設計很糟糕。
Tracer Bullet Development,我們自實用程式設計師以來就提出過這個想法。使您的初始跟蹤器成為管道:無狀態,不可變。從那裡發展到不可變的基礎設施。現在,您可以輕鬆更換任何需要更換的東西,並且可靠,透過測試進行備份,無需時間炸彈或意外。
有關Tracer Bullet開發和相關實踐的更多資訊,請參閱:
相關文章
- 選擇軟體開發平臺,“快速開發”是關鍵
- Linux開發:快速開發遊戲的9個關鍵!Linux開發遊戲
- 軟體開發丨關於軟體重構的靈魂四問
- 軟體開發人員的關鍵績效指標指標
- 介紹一個軟體開發工具,堪稱快速開發神器
- 代理IP助力企業發展的四個關鍵
- 評估軟體供應鏈安全可關注這5個關鍵問題
- 軟體快速開發平臺的優勢
- 分享個人用於開發相關的軟體/工具
- 低程式碼開發對軟體開發流程的影響
- 基於快速失敗的軟體開發 - levelup
- 華瑞IT學校:Java軟體開發語言學習的關鍵點Java
- 一套完整的.net WEB應用軟體快速開發解決方案Web
- 零信任安全的四個關鍵原則
- win10電腦開軟體自動無響應怎麼辦_win10開啟軟體沒響應的解決方法Win10
- LR軟體開發平臺:快速建立企業協同辦公解決方案
- 利用軟體開發平臺快速建立企業協同辦公解決方案
- 敏捷史話(七):從程式設計師、作家到搖滾樂手——Andy Hunt的多面人生敏捷程式設計師
- 6個原則助您建立高效能軟體開發團隊
- 如何使用低程式碼開發平臺快速建立一個應用 | 例項演示
- 選擇低程式碼應用程式開發框架的5個關鍵標準框架
- 影響代理IP訪問速度的兩個關鍵
- 軟體開發者應有素養
- 探討敏捷開發在軟體開發中的應用敏捷
- 建立資料策略的6個關鍵組成部分
- 電腦軟鍵盤怎麼開啟 快速調出軟鍵盤的方法教程
- 線上教育平臺開發的幾個關鍵點
- 軟體開發公司如何才能提高品牌影響力??
- 軟體研發之道——有關軟體的思考
- PDA應用軟體開發特點
- 一圖讀懂軟體快速開發平臺的優勢
- 軟體專案的鐵三角模型:軟體質量與快速開發的矛盾 - Richard模型
- 服裝erp軟體實施的關鍵因素
- 中國軟體企業的關鍵癥結
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP
- 惡意軟體開發——記憶體相關API記憶體API
- 專案管理計劃制定的四個關鍵步驟專案管理
- 如何應對軟體開發中的估算問題?