1. 程式人生 > >組織架構適配下的敏捷開發

組織架構適配下的敏捷開發

摘要: 本文將會討論如何協調公司內各個工程師團隊之間的合作,從而高效地保持系統的彈性和靈活性,以滿足敏捷開發的需求。本文選自《Node.js微服務》。

  如果一個公司採用微服務來構建軟體系統,那麼每個干係人都需要參與決策。
  微服務是一次重大的正規化轉換。通常,大型組織傾向於使用相當傳統的方式來構建軟體系統。每個重大發布需要經歷數月的研發週期,之後需要一個完備的質量保證階段以及數小時的部署階段。
  當一個公司選擇使用面向微服務的架構時,方法論就會發生完全的改變:每個小團隊負責各自的小功能點,包括它們的構建、測試和部署。每個團隊各司其職,並且能夠處理好各自負責的單一事項(一個微服務,或更確切地說是數個微服務),每個團隊成員將熟練掌握構建軟體系統的相關技術與領域知識。
  這通常被稱為跨職能團隊。這是一個由少數人組成的工作單元,他們都具備了構建高質量軟體元件的能力。
  有一點值得注意的是,團隊成員應當掌握必要的領域知識來理解業務需求。
  在我的職業生涯中,大多數導致公司失敗的主要問題不外乎以下這點(就我個人觀點而言)。首先,有一種觀點認為開發者是“堆磚器”,即可以在沒有提前溝通的情況下卻依然能神奇地理解業務流。而且,還有觀點認為,如果一個開發者一週可以完成X 量級的工作,那麼10 個開發者一週就可以交付10X 量級的產量。這些觀點都是錯誤的。
  為了保持高效以及考慮到康威定律在改變業務流程方面對系統的影響,構建微服務的跨職能團隊中的成員必須熟練掌握(不僅僅是瞭解)相關領域知識。
  每當談及微服務的組織架構適配時,自治才是關鍵因素。為了保證構建微服務的敏捷性,每個團隊都必須保持自治,這也意味著要確保技術的自主選擇權,如下所示:

  • 使用的語言。
  • 程式碼規範。
  • 解決問題的模式。
  • 各類工具的選擇,比如軟體的構建、測試、除錯及部署工具。

這是非常重要的部分,因為這是我們需要定義公司如何構建軟體,並且可能會引入工程問題的部分。
  舉個例子,我們來看看程式碼規範問題,如下所示:

  • 我們需要在所有團隊內都保持統一的程式碼規範嗎?
  • 我們應該讓每個團隊都有各自的程式碼規範嗎?

一般來說,我偏好於“80%準則”:80%的完美度已經足以涵蓋100%的使用場景。這意味著放寬程式碼規範(也適用於其他領域),以及允許一定程度的不完美或者個性化,都有助於減少團隊間的摩擦,也能讓工程師能夠儘快關注到那些極少數的重要準則,比如日誌策略以及異常處理。
  如果你的程式碼規範過於複雜,那麼在某個團隊想要向其他團隊的微服務提交程式碼時就會遇到很多阻力(切記,一個團隊擁有自己的服務,但是其他團隊的成員也可以對這個服務做出貢獻)。
  

本文選自《Node.js微服務》,點此連結可在博文視點官網檢視此書。
                     圖片描述

  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                       圖片描述

相關推薦

組織架構敏捷開發

摘要: 本文將會討論如何協調公司內各個工程師團隊之間的合作,從而高效地保持系統的彈性和靈活性,以滿足敏捷開發的需求。本文選自《Node.js微服務》。   如果一個公司採用微服務來構建軟體系統,那麼每個干係人都需要參與決策。  微服務是一次重大的正規化轉換。通常,大型組織傾向於使用相當傳統的方式來構建軟

android多cpu架構開篇

簡介:做專案的時候經常會使用到so檔案。例如使用高德地圖,其SDK中就包含了armeabi、armeabi-v7a、arm64-v8a、x86等其他資料夾,裡面通常放著同樣名稱、同樣數量的so檔案。實際使用過程中,關於這些so檔案引發的問題確實不少,也不好解決。寫下此文,

web手機端開發總結

現在手機端也業務要多於pc端,如何做手機端的web頁面也成了許多web前端工程師的必修課,以下是我總結的一些心得,大家茶餘飯後研讀一下,看看能不能漲漲姿勢。適配手機端我主要總結3點:1. 在頁面頂部加meta,它的大概意思就是讓頁面1:1顯示,使用者禁止縮放。<meta

多團隊敏捷開發組織架構和協作模式

寫這篇文章的背景是:一個專案組實施Scrum取得成效,如何在整個開發部門推廣Scrum?看一下我們一個大產品,三個專案組共同完成的具體實踐: 我們做了如下的組織調整: 1.產品部增加一名總監(CPO),負責公司層面的產品思路,整合三個子產品 2.各個Scrum小組的架構師和DBA成立虛擬架構師團隊,架構師團

敏捷開發模式的測試

定義 談判 要求 信心 時間 質量 計劃 活性 程序 敏捷開發   敏捷開發倡導的就是叠代式和增量式的開發模式,並且強調測試在開發過程中的重要性 。主要是圍繞以用戶為中心,以客戶需求為導向的開發過程,這個過程有一個特點就是“隨時有變化”。雖然敏捷開發引入了靈活性,但其中的重

移動web開發中屏幕問題

設置 應該 相對 用戶 默認 min 等於 滾動 imu 1、首先屏幕的尺寸就是屏幕對角線的長度 尺寸是固定的 2、開發中遇到的單位 相對單位(即相對於屏幕):px em pt 絕對單位(固定的大小,與設備屏幕無關):in cm 3、像素密度 像素

敏捷開發模式的自動化測試研究

測試結果 tro 滿足 需求 能力 沒有 理想 適合 生產 敏捷測試過程中的自動化目前在國內來看基本上還只是停留在概念階段,據我所知,目前不少公司也都在嘗試過程中,而實際的實踐中能取得比較理想成果的,極為有限。而國外不少同仁也都對此持觀望甚至抵觸的態度。比如advanced

活動【北京】敏捷開發:促進項目管理創新變革

經理 如何 image ext p s 優秀 pla cnblogs 項目經理 您在項目中是否經常遇到項目目標不清晰的問題?   您在項目中是否經常遇到項目需求不斷變更的難題?   您在項目中是否經常遇到跨部門跨專業溝通不暢的困惑?   您在項目的執行過程中是否面臨

html5開發之viewport使用-屏幕

meta 允許 用戶 不同 屏幕寬度 ice phone 是否 浮點 隨著高端手機(Andriod,Iphone,Ipod,WinPhone等)的盛行,移動互聯應用開發也越來越受到人們的重視,用html5開發移動應用是最好的選擇。然而,每一款手機有不同的分辨率,不同屏幕大小

buildroot構建項目(三)--- u-boot 2017.11 開發板修改 1

型號 mmu mman body 成功 -c 存儲器 介紹 我們   當前雖然編譯成功了,但是對於我們自己的目標板並不太適用。還得做一系列得修改。 一、lds 文件分析   u-boot 中最重要得鏈接文件即是,u-boot.lds。我們可以查看我們編譯出來得 u-boot

buildroot構建項目(四)--- u-boot 2017.11 開發板修改 2 ---- 系統啟動初始化之一

鏈接 extc 信號 分析 col clock -h 17.1 標誌位 一、代碼分析   上一節已經分析了鏈接文件,知道了首先代碼是從 _start 開始,之後設置了中斷向量表,然後從 start.s 開始運行。 _start:vectors.S (arch\arm\li

buildroot構建項目(五)--- u-boot 2017.11 開發板修改 4 ---- 系統啟動初始化之三

vid def include cmp ble soft setup.s bubuko 賦值 一、內存控制器   在關閉了MMU和caches 之後 就進入lowlevel_init 函數,對內存控制器進行初始化。lowlevel_init.S (board\samsung

buildroot構建項目(七)--- u-boot 2017.11 開發板修改 4 ---- 系統啟動初始化之四

ack tar span mov tel 變量初始化 清零 ppi ntb   設置完寄存器控制器後,則跳出cpu_init_crit,進入_main 函數。即進入crt0.S (arch\arm\lib)   跟著代碼流程慢慢走 一、crt0.S 1.1 第一步執行代碼

前端開發知識之前端移動端總結

演示 等於 不同 無效 這也 sta 一個 name 物理 meta標簽到底做了什麽事情 做過移動端適配的小夥伴一定有遇到過這行代碼: <meta name="viewport" content="width=device-width, initial-scale=1

Android 開發:(九)Android螢幕經驗談

1.名詞解釋 螢幕尺寸: 也就是我們平時所說的某某手機是幾寸屏, 比如HTC one V這款手機是3.7寸的, 這裡的寸說的是英寸(inch),國際上習慣使用的單位,1inch = 2.54cm,3.7寸指的是螢幕的對角線的長度。 螢幕解析度:

PhaserJS 3 螢幕時的小坑 -- JavaScript Html5 遊戲開發

  PhaserJS 巨坑:在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.innnerWidth在config內不要把 width 設為 window.i

摺疊屏就要來了,逼死 Android 開發?谷歌有辦法!

1. 異型屏還沒適配好,摺疊屏就要來了,Android 的碎片化,讓開發者又多掉了不少頭髮。 北京時間 11 月 8 日,三星在舊金山向開發者釋出了一款可摺疊螢幕手機。並表示,新技術需要開發者調整其 App,以確保在手機被攤開成平板電腦時,能夠執行流暢。 三星的這款手機,還處

淺析Android Camera開發中的三個尺寸和三種變形 貢獻一個自Picturesize和Previewsiz

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

安卓開發如何語言與系統語言同步

我覺得我愛了你了,從此以後,不管什麼時候我都不能對你無動於衷。                   

通知欄開發Android8.0

1.Android通知欄在專案開發中,還是用的比較多的,一般是這三個步驟來做Android通知欄:     (1)獲取通知欄管理器物件 NotificationManager mNotificationManager = (NotificationM