改變從內部開始:開發者與管理者的協作
在GOTO柏林2015大會上,Skyscanner工程部高階副總裁Bryan Dove談了如何從組織內部開始改變,開發者和管理者如何協作來了解和採用現代軟體工程實踐。\
InfoQ就過去10年中主要技術的發展以及它們對我們建立軟體產品的方式的影響採訪了他。InfoQ還問了這樣的問題,就是管理者和開發者可以做些什麼來探索和發現更好的協作方式,他們如何互相支援,讓自己和企業取得更大的成功。\
InfoQ:在過去的10裡,我們看到的新技術發展主要有哪些?\
\\Dove:過去的10年見證了技術商品化的巨大進步,以前,只有世界上最大的軟體公司才擁有這樣的技術。這種商品化讓新公司更容易快速交付價值,以及擁有可以輕鬆擴充套件到消費網際網路需求規模的技術,而且成本更低。今天,一家全新創業公司所依賴的軟體棧,其中的幾乎每個元件在過去的10年中都已經建立了出來,而且是作為開源專案。Hadoop/MapReduce是受Google的Map-Reduce論文所啟發,然後是Yahoo的實現及後續的開源。NoSQL引擎是受Amazon的Dynamo論文所啟發,例如,由Facebook構建和開源的Cassandra。還有其他常見的構建塊,如Docker、Mesos、MongoDB等等。所有這些都是在過去10年中建立和釋出的,已經將建立和擴充套件技術平臺的工作量降低了一個數量級,甚至更多。\
除了軟體外,我們還見證了公有云的出現,這始於2006年推出的AWS。這種巨大的變化已經將規模經濟帶給了大眾,隨著向公有云硬體經濟的轉型,資本部署已經從昂貴的資料中心和硬體轉移,幾乎全部集中到了員工身上,用以資助IP建立和支付。
InfoQ:這些發展對我們建立軟體產品的方式有什麼影響?\
\\Dove:類似於我上面提到的,基本的影響是建立為客戶提供價值的產品比以往任何時候都更簡單更快捷。以前,公司需要從頭開始構建所有技術,而從頭開始針對網際網路規模進行構建真得很困難。今天,任何公司都可以選取一整套開源技術,以最小的努力實現龐大的規模。在Skyscanner,我是工程部的高階副總裁,我們為創業公司提供了API的免費入門版本,在github.com/skyscanner上開源了多個內部專案,我們內部也使用了多項開源技術。
InfoQ:您在演講中舉了一個例子,您做了一些很棒的工作,但沒有告訴管理者。您能詳細描述下發生了什麼嗎?您學到了什麼?\
\\Dove:我提到的場景是這樣的,我正在做一些我認為對公司最有利的工作。在微軟工作的時候,我同SQL Server領導團隊建立了內部合作關係,共同構建一些新的分析軟體,用於消費網際網路規模的大資料系統。我覺得自己正在做的工作,對於團隊、我的業務和公司而言都是正確的。\
我犯的錯誤是,我沒有考慮我將管理者置於了怎樣的位置。他們不知道有關進展或同SQL領導團隊的合作關係的細節,因為這是由我直接管理的。這讓他們面臨著一個風險,就是有人可能會問他們,我們的業務如何協同,而他們並不瞭解細節。\
關於經驗教訓,我得出了兩個重要的結論,它們影響了我此後的思維。一是選擇了過度溝通和徹底透明。以前,我在我的團隊裡這樣做了,但現在,我在組織裡所有的方向(例如,管理者、同事、團隊)上都以這種方式操作。二是我現在在簡化同同事和管理者的溝通上投入了更多的精力。由於我的同事和管理者每天都會從許多資料來源收到大量的資訊,我設法為他們提供關鍵事項的小標題,然後期待他們問更多資訊,如果他們想的話。如果他們詢問所有細節,我當然會分享,但我會等著他們問,而不是預先就同他們分享,以此幫助他們首先專注於關鍵事項。如果你為人們提供了標題、結論和建議,那麼他們總會詢問更多的細節,如果他們需要的話。在Skyscanner,我們使用“訊息片段(snippet)”機制來分享資訊,以防止資訊過量。
InfoQ:您展示了開發者如何建立一個管理者待辦事項列表,他們可以將希望管理者幫忙的事項列在上面。您能舉幾個在您待辦事項列表上的事項作為例子嗎?您的管理者是如何幫助您的?\
\\Dove:這裡有一個很好的例子,就是當我領導Skype資料方面的工作時,我們需要構建一個現代化的試驗系統。雖然同那些過去從事過現代試驗系統研發的人交流很簡單,但我需要在組織內獲得更廣泛的支援,以便讓這項工作能得到資助,繼續推進,這讓我陷入了掙扎。我的管理者和我都認為這樣做是正確的,因此,我請求我的管理者承擔起爭取恰當支援、讓新的團隊和服務獲得批准的任務。例如,我的管理者花時間同微軟其他地方的獨立組織取得了聯絡,使用那些團隊的經驗作為一種外部驗證。外部驗證在證實新工作的合理性方面總是非常有用,因為那個團體沒有以任何方式成為你的團隊成果的既得利益者。時至今日,我們設想的系統已經構建出來,併成為企業內大量團隊的主要試驗引擎。
InfoQ:管理者如何幫助開發者更好地工作?\
\\Dove:我認為,作為一名管理者,你對工程團隊的職責是圍繞少數幾個原則展開的。首先,我發現Daniel Pink的著作《驅動力》中的三個原則非常適合工程師——自主、專精、目的。我幾乎每天都會考慮這三個原則,挑戰自我,向團隊授予更多的許可權,讓他們有更大的自主權,而不是最初那種可能讓我感覺舒適的程度。在我看來,分散式自主是擴充套件大型團隊最重要的因素,這也是Skyscanner所重視的東西。\
下一個原則是徹底透明。關於分散式自主,其中一個常見的、讓人糾結的邏輯是,擔心個體無法作出正確的決定。開始的時候要相信,我團隊中的每個人都是聰明、能幹、理智的,然後我的工作就是為他們提供他們需要的所有資訊,讓他們能夠作出對企業而言最好的決定。任何擔心某個人不能作出正確決定的跡象都應該立即引發這樣一種想法,就是我沒有向他們提供足夠的資訊,讓他們能夠作出最好的決定。我個人傾向於徹底透明(比如,分享一切,只要它不是違法的,而且是我分享的資訊),因為這樣,我就可以少做一些用於篩選同團隊分享的資訊的決定。現在,我的團隊擁有了同我一樣的情境,處於一種更有利的位置,不需要請求批准就可以作出對企業而言最好的決定。\
再下一個原則是瞭解細節及複雜性。工程師需要相信,他們的管理者瞭解他們正在做什麼,並且瞭解那有多難。花費時間和精力獲取這種知識讓管理者能更好地掌握團隊中正在發生的事情,同他們的工程師建立信任關係,讓他們相信管理者完全能夠恰當地評價他們的貢獻。\
最後一個我認為對管理著至關重要的原則是公開錯誤。我們從失敗中學到的東西遠比從成功中學到的多,這已被人們反覆引用重申。不過,作為一名領導者,你需要創造一個環境,人們歡迎錯誤,將其視為學習機會,而不是應該譴責的東西。關於這件事,我發現了一項特別有用的技術,就是把一個我在領導者崗位上所犯的錯誤,盡最大可能公開地向我的團隊描述。然後每次我犯了錯誤都會重複這樣做。作為一名領導者,暴露那種程度的弱點需要很大的勇氣,但是如果你不願意這樣做,你怎麼能期望你的團隊那樣做?通常,我要麼會通過郵件更新、部落格來做,要麼會在職工會議上討論它,分享我犯的錯誤,為什麼那是一個錯誤,我學到了什麼,以及我會做什麼來避免再次犯同樣的錯誤。通過這樣一次又一次的反覆做,強化了這樣一個概念,錯誤正是學習的機會,有弱點,犯錯誤,並從中學習,不用為此不安。\
在Skyscanner,我們有辨別失敗並在整個企業內分享經驗教訓的程式。這幫助我們建立了一種公司文化,對於什麼有效、什麼無效、如何從錯誤中學習並進一步推進,我們持開放和誠實的態度。我們將這稱為“反敗為勝”,這個概念基於這樣一種理念,就是沒有錯誤就無法學習,因此就無法進步。這種失敗理念可能會讓一些人不舒服——更不用說在真正遭遇失敗時分享經驗。不過,在Skyscanner,我們相信,我們需要接受失敗,如果我們想繼續取得成功。這樣的失敗案例為我們提供了重要的經驗教訓,讓我們距離成功更近了一步;它們是影響重大決策的風險、測試和試驗的結果,進一步推動我們走向成功。
InfoQ:開發者能做些什麼幫助他們的老闆取得成功?那如何幫到他們自己?\
\\Dove:為了幫助他們的老闆取得成功,工程師有幾件可以做的事。首先,瞭解老闆的目標很重要。就像你作為工程師有目標一樣,你的老闆有一系列衡量其工作的目標。其次,願意分享榮譽。Harry Truman說過,“如果你不在乎誰獲得榮譽,那麼你獲得的成就會讓你吃驚”,當你是團隊的一部分時,尤其如此。如果你關注你已經交付了什麼以及為使用者帶去的價值,那麼誰獲得榮譽就不重要了。一個將這些內容記在心裡的工程師可以通過這樣的方式幫助他的老闆,比如將工程師新構建的東西的細節給老闆講解,讓他們的老闆在公開場合做簡報,或者傳送他們的郵件。他們的管理者因為向企業交付了同他們的目標一致的價值而獲得認可,而團隊作為一個整體就可以慶祝成功了。\
在Skyscanner,我們使用“目標和主要成果(Objectives and Key Results,縮寫為OKR)”流程來確保我們的目標在整個公司內都是一致的,並以公司內任何人都容易發現的方式釋出出來。這很重要,可以確保整個公司內正在開展的工作保持完全透明。
關於受訪者
\Bryan Dove是Skyscanner的高階副總裁。他的職責是在全球十個規模正在加速增長的辦事處中領導並推動Skyscanner工程團隊的發展。Bryan為Skyscanner帶去了超過15年的工程領導經驗。在加入Skyscanner之前,Bryan是Amazon Web Service S3的工程部總監,他在那裡領導團隊推出了多個面向客戶的新特性,包括S3事件通知和S3跨區域複製。再之前,Bryan在微軟擔任多個角色,作為Skype資料工程的負責人,他建立並領導了一個全球分散式團隊,構建Skype的實時大資料架構。
\檢視英文原文:Change from Within: Developers and Managers Working Together
相關文章
- 改變自己從學習linux開始Linux
- 專案管理從改變團隊開始 (轉)專案管理
- 風變程式設計Python課程:讓改變從現在開始程式設計Python
- 從零開始寫 Docker(十一)---實現 mydocker exec 進入容器內部Docker
- Java靜態變數在靜態方法內部無法改變值Java變數
- 【ES6】改變 JS 內建行為的代理與反射JS反射
- 雲渲染技術會給BIM雲端協作帶來哪些改變?
- 從零開始內建你的安全測試流程
- 如何製作魂類箱庭?從零開始的理論與實戰精粹
- 從零開始內網滲透學習內網
- mysql 5.1.43 開始,對timestamp 型別的分割槽有所改變MySql型別
- 解惑:提升開發者與設計師協作有哪些方法呢?
- 《例項化需求》閱讀筆記(4)-開始改變筆記
- iOS UIScrollView 沒有從頂部開始滑動iOSUIView
- [Shell] shell中的內部變數變數
- 函式內部的變數提升函式變數
- Mysql 5.7 Gtid內部學習(八) Gtid帶來的運維改變MySql運維
- 漲薪神作!華為內部作業系統與網路協議筆記爆火,這也太香了吧作業系統協議筆記
- 改變世界的程式設計師:Twitter與Square創始人Jack Dorsey程式設計師
- 改變的代價:一個開發者對《最後生還者:第二部》的看法
- 下週開始做sql優化的一個內部培訓SQL優化
- 探索Golang協程實現——從v1.0開始Golang
- Java中的逆變與協變Java
- Winterberry Group:AI如何改變影片和內容製作報告AI
- vue-router 2.0 改變的內容Vue
- 改變開發者工作方式的15種技術
- 新手開發者如何著手遊戲設計? 從解剖桌遊開始!遊戲設計
- 二十九、Elasticsearch的增刪改內部原理Elasticsearch
- 華為:做最懂開發者的協作服務-專注!專心!開放!
- 從零開始製作一個linux iso映象Linux
- Docker從零開始製作基礎映象之CentosDockerCentOS
- 認識流媒體協議,從 RTSP 協議解析開始!協議
- jquery實現改變所匹配的內容jQuery
- 一個月內從零開始做webOS開發人員Web
- 從零開始:Django專案的建立與配置指南Django
- 八位徹底改變App Store的iOS開發者APPiOS
- APP開發者需知道的iOS 7九大改變APPiOS
- 內部開發者平臺與門戶:二者有何關聯?