程式軟體的版本釋出也會導致內卷化? - GeePawHill
由中央高智慧部門協調和控制軟體的大批次釋出經常會失敗,其原因是由於數學NP問題以及人類之間的弱相互影響。
大多數公司以某種命令和控制方法開始軟體版本釋出,這是一種中央智慧組織推動和控制工作流程,批次大小為N的釋出策略是問題所在。
首先是數學上行不通,像很多問題一樣,我們可以使用N(在我們的案例中為故事總數,依賴項數量,受影響的模組數量,“合併衝突”的數量之和)作為這個問題的輸入數量的粗略指標。隨著N的增加,大多數問題都變得更難解決。
我們可以使用採用N的某種表示式來表達他們要付出多少努力。如果該表示式是多項式,則稱為P問題。如果不是,則稱為NP問題。
這個問題就變成了計算機中複雜性的問題:NP Complete問題(NP完全問題),就是說即使N的增加很少,也會使難度增加到驚人的大。
直覺是,可靠地交付批次大小為N的發行版的問題是NP complete(完全問題),這是一種軟體的包裝,是確切的。
人與機器始終以小N來解決NP完全問題的特定情況。關鍵:並不是每次例項都是不可解決的。確切地說,N的微小增加會迅速導致此類問題“在宇宙熱死之前無法可靠地解決”。
“可靠地”這個詞很重要。您會看到,在解決NP完全問題時,可以透過生成候選解決方案並進行嘗試來實現。如果問題有解決方案,那麼您可能會在第一次嘗試時就找到它。
這使我想到了第二個令人著迷的方面:團隊可以花很長時間*經歷*這個問題的NP完全問題,而沒有意識到它。在這場比賽中,我們成功了一段時間,也許十分之一。但是我們失敗了十分之九。但是我們更容易記住成功:“我們*幾乎*做到了!”
幾個小小的發行問題並不難解決,但是我們花了幾個小時瘋狂地奔波,急於捆綁新發現的遺漏的API端點,重建我們的應用程式,然後重新部署它。或者,在糟糕的日子裡,我們沮喪地流著淚回去。
我們每個回合都會遇到一個或兩個問題?他們每次都是不同的小問題:例如忘記了此連結、沒有開啟功能標誌、不知道該功能依賴於我們刪除的欄位,每次碰到的問題都是小的狗屎,但是不同的狗屎。
我們沒有在問題中看到模式,因為它不是模式,而是元模式:由於組合函式丟擲了太多細節供我們考慮,因此出現了問題。我們的N開始啟動使我們的問題無法可靠地解決。
第三個令人著迷的方面:軟體釋出還經常運轉順利。這些偶然的勝利徹底使水變得渾濁,因為它們確實只是組合運氣。但是他們使我們相信,*每次*都有可能幸運。
可以肯定的是,人們可以採取措施改善自己的運氣。在遊戲中,這稱為作弊。在電腦科學中,這確實是非常聰明。但是你不能消除運氣。它內建於我們解決NP完整問題的性質中。
內卷化
因此,當我們失敗時,我們會做兩件事:
- 1)指責我們缺乏努力和意志,
- 2)增加更多規則,門檻和檢查。
“我們只是沒有盡力而為。” “我們需要將其新增到我們要檢查的事物列表中。”我們提高了釋出活動的嚴肅性,確保每個人都知道真正嘗試,花時間,認真思考,避免犯下愚蠢錯誤的重要性。我們變得,我在這裡不是在開玩笑,非常*憂鬱*,皺著眉頭,若有所思地點頭。
我們只有少數幾個人,我們要求他們協調所有這些工作,並每次都堅持工作,直到釋出完成為止。我們獎勵他們,但我們也要求他們在高壓力下長時間工作,要求他們英勇。我們升級了流程。有新的簽收。有清單。透過通用的自動化程式碼質量系統有強制性通行證。有一個正式的滾動時間表,每個人都簽署了每個任務。
奇怪的是,儘管這些調整旨在幫助我們控制N個批次,但它們往往具有使N變大的實際效果,因為現在它會將這些額外的過程元素合併到問題中。
提高嚴肅性和賭注以後,也加劇了緊張局勢。我們越來越發展到以責備為中心(內卷化)。我們更加了解所謂的“長杆”政治,沒有人願意成為帳篷中的長杆。我們生氣了。
所有這一切都在發生,因為我們的N已經增長到足以破壞我們的演算法的程度。我們已經達到了一個問題的新的複雜層面,該問題太大了以至於無法解決。
我們已經隱式或顯式地假設:1批10個的大小與10批每批大小1個是完全相同,甚至更少,但是NP完整性說那是不對的。批次大小為10的組合殺手會殺死我們。
釋出關鍵技術
釋出關鍵技術包括:
- 1)pull & swarm:程式設計師拉取一個版本的原始碼,以該原始碼為中心,作為一個整體進行“交付”。我們使用整體程式設計,或成對,甚至只是坐在一起。一次一個故事,一路走過去。
- 2)測試驅動的開發:在編寫程式碼之前進行測試比在編寫程式碼之後進行測試更快,更便宜。但事實是,它只有在測試程式碼編寫完成後才更“有效”。這是我們自以為是的基本一線安全網。
- 3)基於主幹的開發:我們不使用複雜的源分支策略來驅動N。相反,我們從主幹拉取程式碼,推向主幹,從主幹測試,從主幹交付。
- 4)注重路徑的故事和程式碼設計:我們對故事和程式碼的設計不僅要著眼於最終的工作,還必須著重於它們可以被髮布,而又仍然小到可以容納它們的路徑,這將涉及根本的風格變化。
- 5)穩定且值得信賴的自動化:希望該過程的每個環節都能實現自動化。自動化需要堅如磐石,甚至比應用程式本身更堅固。必須對其進行維護並將其擴充套件到我們的最高水平。
這五種技術中的每一種都需要學習和實踐,並且不能透過一道命令聖旨來立即開啟其中的任何一種。我和其他人中的一些人已經撰寫了廣泛的文章,並提出了各種方法來邁出小步。
總結
隨著N的增長,問題變得更加困難,以至於我們的所有進展都將停滯不前。這不是意志的失敗,也不是規則的不足,而是簡單的組合數學問題。
中央智慧部門可以將某個NP完整問題的大批次釋出釋出到某個N,但不能超出此範圍。否則它將會失敗,更加頻繁失敗。對於成長中的組織而言,看到這一點並採取相應的措施是一項嚴峻的挑戰。
相關文章
- 6大原因導致「最安全的程式」也會出現隱患!
- 軟體測試也出現內捲了?!測試行業的內卷究竟是什麼?行業
- 軟體版本不同導致配置資訊不能匯入
- 版本不當導致的exp出錯
- 也談談內卷化、996和程式設計師的發展996程式設計師
- APA期刊文章: 強勢領導更容易導致團隊內卷?
- 多款軟體 adb 版本不同,導致不能同時使用
- 克隆ORACLE軟體的導致的問題Oracle
- 資料庫表匯出不全導致tomcat無法釋出程式資料庫Tomcat
- 百家號批次釋出軟體,批次釋出自媒體內容
- 為什麼拙劣的軟體也會成功?
- 淺談程式設計師的“內卷化”程式設計師
- 軟體複用導致的軟體依賴問題 - research!rsc
- 參加NEC卓越軟體的高可用叢集軟體EXPROCESSCLUSTER釋出會記錄
- 硬體或軟體衝突導致當機
- win7更換主題會導致個性化圖示也被更換了Win7
- FolkMq v1.4.6 釋出(可以內嵌的訊息中介軟體)MQ
- 軟體工程——程式導向的軟體設計方法軟體工程
- 刪除應用程式對映會導致OWA出現404錯誤
- [分享]關於新版本 Composer 會導致 Class not found 的問題
- ntpdate會導致mysql slow query log出現很大的query timeMySql
- 目前常用的室內導航有哪些?什麼軟體可以室內導航?
- 無壓力的軟體釋出之旅
- 體驗 正式釋出 的OSM v1.0.0 版本
- 轉貼:釋出小軟體
- 程式設計師團隊如何防止內卷化?程式設計師
- 成功的軟體釋出的三個要素
- Digiday Research:Facebook演算法變化導致釋出商損失75%的流量演算法
- NetApp資料恢復-未知原因導致NetApp儲存內卷丟失,卷內虛擬機器不可訪問APP資料恢復虛擬機
- 美國因軟體缺陷導致的十大事件事件
- 程式設計師未來會成為非常內卷的職業?程式設計師
- 到底是誰在內卷?學會風變程式設計,我就是“卷王”!程式設計
- 全面進化!Apache Doris 1.2.0 Release 版本正式釋出|版本通告Apache
- Qt 5.3.1 版本應用程式的釋出問題QT
- Mysql 會導致索引失效的情況MySql索引
- 短影片批次釋出軟體,一鍵釋出短影片
- 可能會導致.NET記憶體洩露的8種行為記憶體洩露
- 也談社會化媒體分析思考方法薦