期間:2023
軟體與工程
在我的職業生涯中,人們將軟體開發與「傳統」工程進行比較,通常是為了責罵軟體開發人員沒有做好工作。作為一名電子工程學位的畢業生,這在我職業生涯的早期引起了我的共鳴。但這種想法是有缺陷的,因為大多數人對工程在實務中的運作方式有錯誤的印象。
測試驅動開發
測試驅動開發 (TDD) 是一種透過撰寫測試來引導軟體開發的軟體建構技術。它是由 Kent Beck 在 1990 年代後期作為極限編程的一部分開發的。基本上,我們重複執行以下三個簡單步驟
差異除錯
回歸錯誤是軟體功能中新出現的錯誤,這些功能已經存在一段時間了。在追蹤它們時,找出軟體中哪個變更導致它們出現通常很有價值。查看該變更可以提供有關錯誤位置和如何消除錯誤的寶貴線索。這種調查形式沒有廣為人知的術語,但我稱之為差異除錯。
探索生成式 AI
生成式 AI,尤其是 LLM(大型語言模型)已在公眾意識中爆炸式增長。與許多軟體開發人員一樣,Birgitta 對這種可能性感到好奇,但對於從長遠來看它對我們的職業意味著什麼並不確定。她在 Thoughtworks 擔任一個職位,協調我們的工作,探討這項技術將如何影響軟體交付實務。在此頁面上,她張貼一系列備忘錄,說明她和我們的同事正在學習和思考什麼。
分散式系統模式目錄
分散式系統對程式設計構成特定挑戰。它們通常要求我們擁有資料的多個副本,且這些副本需要保持同步。然而,我們不能依賴處理節點可靠地工作,而且網路延遲很容易導致不一致。儘管如此,許多組織依賴於處理資料儲存、訊息傳遞、系統管理和運算能力的一系列核心分散式軟體。這些系統面臨常見的問題,並使用類似的解決方案來解決這些問題。2020 年,Unmesh Joshi 開始將這些解決方案收集成模式,並在開發這些解決方案時將它們發布在這個網站上。2023 年,這些解決方案以《分散式系統模式》一書的形式出版。此頁面連結到每個模式的簡短摘要,並提供 oreilly.com 上線上電子書出版物的相關章節的深度連結。
文科文憑幫助我在科技領域取得成功的三個原因
傳統的文科文憑提供與產品經理高度相關的技能
無頭元件:用於組合 React UI 的模式
隨著 React UI 控制項變得越來越複雜,複雜的邏輯可能會與視覺表示交織在一起。這使得難以推論元件的行為、難以測試元件,並且需要建立需要不同外觀的類似元件。無頭元件會擷取所有非視覺邏輯和狀態管理,將元件的大腦與其外觀分開。
建立整合的業務和技術策略
要善用科技,我們需要將科技思維與基礎業務計畫結合。科技策略可以推動這種結合,只要它能適當整合業務與科技。我們已開發出一個概念架構,協助我們進行這種策略性思考,其基礎是辨識策略性計畫的共同面向,讓我們找出 11 個普遍的策略方向。對於每個方向,我們概述它們提出的關鍵業務問題,以及我們需要進行的調查,以探討科技影響。我們發現這個架構不僅能帶來更有效的科技策略,還能讓科技為業務思考提供資訊,開發新的營收來源。
前端展示
你是否曾參加過「展示」,開發人員自豪地顯示其 API 產生的 JSON 輸出畫面,而使用者卻感到困惑和分心,無法理解任何內容?你是否曾嘗試在開發中使用 API,卻對尋找正確的 JSON 酬載和標頭咒語感到沮喪,無法測試某項功能?前端展示是一個簡單的 UI,提供基本功能來展示和探索此類 API。
團隊拓撲
任何大型軟體專案,例如大型公司的軟體資產,都需要很多人力,而每當你擁有大量人力時,你都必須找出如何將他們分組成有效率的團隊。組成以業務能力為中心的團隊有助於軟體專案回應客戶需求,但所需的技能範圍常常讓這些團隊不堪負荷。團隊拓撲是描述軟體開發團隊組織的模型,由 Matthew Skelton 和 Manuel Pais 開發。它定義了四種團隊形式和三種團隊互動模式。此模型鼓勵健康的互動,讓以業務能力為中心的團隊在提供穩定且有價值的軟體任務中蓬勃發展。
兩披薩團隊
兩披薩團隊是一個小型團隊,完全支援特定業務功能的軟體。這個術語變得流行,因為它用來描述亞馬遜如何組織他們的軟體人員。
平台團隊如何完成任務
平台團隊獨特地依賴其他團隊來確保採用他們的平台 - 將程式碼變更納入其他團隊的程式碼庫對他們的成功至關重要。有各種各樣的跨團隊協作模式,選擇正確的模式取決於平台採用的階段以及團隊和程式碼庫接受外部影響的能力。
在 Xapo 銀行分散實踐架構
Xapo 最初成立為比特幣服務供應商,後來發展成為一家線上銀行。在這個轉型過程中,它需要重新評估其軟體資產,並建立架構能力來指導其未來。它採用了領域驅動設計、團隊拓撲和架構建議流程的想法,來開發架構建議論壇。這導致其軟體交付團隊更加一致,並制定了一致的技術策略。
建立 Boba AI
我們正在為產品策略和生成式構思構建一個實驗性 AI 副駕駛,稱為「Boba」。在此過程中,我們學到了一些有用的經驗教訓,關於如何構建這些類型的應用程式,我們已經根據模式制定了這些經驗教訓。這些模式允許應用程式幫助使用者更有效地與大型語言模型 (LLM) 互動,編排提示以獲得更好的結果,幫助使用者導航複雜的對話流程,並整合 LLM 沒有的知識。
將模組化架構連結到開發團隊
模組化架構可以改善軟體交付嗎?是的! - 但有一些警告。本文記載了一家企業的旅程,他們著手將其架構轉移到更模組化的架構中,以緩解他們的成長困境。他們發現模組化是一個多方面的解決方案,其範圍不僅限於架構,還延伸到業務溝通管道、團隊拓撲和有效的開發人員體驗。透過密切注意這些因素,該企業能夠顯著提升其行動應用程式的交付效能。
隱私強化技術:技術人員入門
隱私強化技術 (PET) 是一種技術,可為軟體和系統處理、儲存和/或收集其資料的人員提供更高的隱私或機密性。三種有價值且可立即使用的 PET 為:差分隱私、分散和聯合分析與學習,以及加密運算。它們提供嚴格的隱私保證,因此越來越受歡迎,可在最小化侵犯私人資料的情況下提供資料。
相依性組成
基於對傳統基於架構的相依性注入的挫折,我採用了一種組成策略,利用部分應用將內容注入模組。當與測試驅動開發結合作為設計流程,並專注於函式而非類別時,模組可以保持清晰、乾淨,且大多數沒有意外的耦合。
使用 ChatGPT 作為技術寫作助理
一位經驗豐富的技術作者探索使用 ChatGPT 來協助多項寫作專案。他發現 ChatGPT 可以透過草稿和提示額外內容來節省時間,但缺乏準確性和深度,而且過於樂觀。總體而言,如果您反覆運算,要求小塊且精心製作的提示,它會很有用。
技術作者是什麼樣子?
詢問 Stable Diffusion「技術作者的肖像」
LLM 提示程式設計範例
我對與徐浩進行內部聊天記錄,他在其中展示如何驅動 ChatGPT 產生有用的自測程式碼。他的初始提示使用實作策略(思考鏈提示)對 LLM 進行啟動。他的提示也要求實作計畫,而非程式碼(一般知識提示)。一旦他有了計畫,他便使用它來改善實作,並產生有用的程式碼區段。
時盒迭代
時盒迭代是一種將專案工作分拆並排程的方式,特別與敏捷軟體專案相關。團隊將軟體的明顯功能分解成 使用者故事,並將時間分解成固定時段(例如一週),稱為迭代。然後,他們透過將故事分配到迭代來排程這些故事。故事會進行粗略估算,以便團隊可以找出有多少故事適合一個迭代。
持續流動
持續流動是一種排程工作的方法,通常與敏捷軟體開發相關。團隊將軟體的功能分解成 使用者故事。然後,他們將這些故事優先順序化成一個粗略清單。接著,團隊會選取其中一些使用者故事並開始處理它們,當他們完成一個故事時,就會從清單中拉出下一個故事。
Brass Birmingham 成為 BoardGameGeek 上的第 1 名
欣賞 BGG 上最新評比最高的遊戲
使用既定 UI 模式模組化 React 應用程式
儘管既定 UI 模式在解決 UI 設計中的複雜問題方面已證實其有效性,但在前端開發領域中卻經常未被充分利用。本文探討將既定 UI 建構模式應用於 React 世界,並提供重構歷程的程式碼範例以展示其優點。重點在於分層架構如何協助組織 React 應用程式,以改善回應能力和因應未來的變更。
回顧反模式
如果你使用回顧,或任何一種人們應討論並從討論中學習的會議,你偶爾會遇到效率較低的工作階段。這不足為奇,而且發生在大多數人身上。本文描述並提供三種不幸情況的解決方案:略過產生見解、迷失在無法改變的事物中,以及被大嘴巴支配。
Data Mesh 加速工作坊
加速意味著更快移動,獲得速度。有效地使用資料是任何想要在現代世界中蓬勃發展的組織的關鍵,而 Data Mesh 正在向組織展示如何從其資料中大規模實現價值。Data Mesh 加速工作坊通過了解團隊和組織的當前狀態並探索下一步將如何進行,來幫助團隊和組織加速其 Data Mesh 轉型。
我 2022 年最喜歡的音樂發現
我在 2022 年獲得的六首最喜歡的新音樂