結對編程是每個軟體公司都該採用的開發方式

2020-12-13 IT之家

如果說這世界上有一家公司懂「軟體開發」,那非Pivotal Labs莫屬。Pivotal公司的Edward Hieatt和他的同事都是從事敏捷開發培訓,指導結對編程工作,在跟客戶合作中,他們發現有大量的創業公司在成長壯大的過程中,都會經歷不同程度的企業開發文化上的變質侵蝕。

跟Pivotal公司合作過的超過100家公司中,大部分都會重新找到他們,說他們需要更多軟體開發上的支持,幫助他們更快的開發出產品、更好的管理公司的成長,但Edward Hieatt的發現卻是,他們的真正問題隱藏在更嚴重的軟體開發文化問題中。尤其是那些由風險投資支持的創業公司的早期階段,發展的壓力影響企業文化的存在,進而嚴重影響正常的軟體開發活動。

至於解決方案,正如Edward Hieatt在First Round Capital CTO峰會上說的,非常清楚:培養一個完全擁抱結對編程的企業文化。

通常,當程式設計師在談到結對編程的好處時,他們典型的觀點結對編程能使他們寫代碼更快或更好,而Edward Hieatt卻認為,這只是這種重要開發方法的關鍵作用之一。事實上,結對編程活動牽涉到一系列人的各個方面的因素,它改變了人們傳統的團隊形式和團隊合作的理解。例如,跟結對編程不同,當今的文化中,當一個團隊還在初級階段,程式設計師通常會各自為政,自己安排時間,自己解決任務,不能形成一個團隊。還有,一些技術首領擔心結對編程會影響團隊的開發速度,影響開發人員的工作產出,至少會影響那些喜歡獨自坐在一邊整天獨自編程的習慣。

什麼才是有活力的企業軟體開發文化問創業者或程式設計師,什麼才是有活力的企業軟體開發文化時,大部分他們的回答都指向開發環境、招聘過程、技術選擇,編程審查規範,團隊首領等。然而,在Edward Hieatt的眼裡,這些都不是軟體開發文化所關心的。

相反,軟體開發文化真正關注的是發生在開發團隊各個方面上的一系列的行為和交互,它影響到決策的如何產生,誰會參與決策,以及決策對業務經營承擔哪些責任。

這是企業文化的終極定義。

團隊合作在我們這個行業中沒有定義如果想讓一個公司培養出一個可持續的軟體開發文化,我們必須首先定義什麼是「團隊合作」。在Edward Hieatt的眼裡,儘管關於團隊合作的陳詞濫調到處都是,然而,在軟體行業裡,關於「團隊合作」的概念要比其它行業落後幾十年。現實情況是,在軟體企業裡,英雄崇拜思想仍然盛行,個人英雄行為仍然被鼓勵——你可以看到那些通宵加班的人,還有團隊中各人的貢獻不平衡。更嚴重的,這些科技企業通常不善團隊管理,隨意的強行拼湊團隊,導致他們在一起不能很好的進行開發。要想結對編程,首先要想清楚什麼是團隊合作。

為什麼要結對編程談論軟體開發,實際上是談論人,它實際是人的一種社交活動。因此,結對編程應該是團隊合作的核心思想,以此為基礎建立軟體開發文化,當團隊開始迅速壯大後,這種文化能給公司帶來無盡的益處。例如,在Pivotal公司,程式設計師所有時間都在結對編程,結對編程能帶來:

程式設計師之間分享程序裡的各種知識,能更嚴格的要求自己,能更好的相互交流,更好的協作,因為這是做一名結對隊友的責任。

能更好、更容易的培養新人,教、學相應更及時,在大公司裡還可以在各團隊間交叉。

結對編程在文化培養中起核心作用。

如何結對編程當向結對編程轉變時,團隊首領通常會擔心程式設計師們有很大的牴觸,但實際上大多時候,當方法正確時,人們通常是非常喜歡這種形式。一般的抵制情緒來自兩種擔心,一種是擔心和另外一個人的合作,另一種擔心是一天到晚要用嘴去說。但如果你能意識到這只是程式設計師之間的工作交流,他們通常會很快的接受這些。

如果你的公司準備實施結對編程,Edward Hieatt對實施方法上給出了下列技巧指導:

團隊必須在一起,在同一個地點工作

開發機器必須共有,不能屬於某個人

結對必須每日輪換(包括跨越團隊的組合)

公司要給各組合要有自主權

管理上要聽取意見,而不是發號施令

定期檢查和反饋,確保實施方法正確

對那些猶豫不定是否採用結對編程的團隊,先小範圍實驗,如果感覺不錯,再全隊實行。

結對的人前一天要溝通後,確保能都有時間。

結對編程的收穫Edward Hieatt發現,一個公司一旦形成結對編程文化,各種反饋信息都會顯示正面效應非常明顯。團隊程式設計師之間交流頻度的提高給出了有力的證明。結對編程不是一個輕鬆的決定,需要花時間去適應,但Edward Hieatt相信,這是值得的,這是形成真正的軟體開發文化關鍵的一步。

相關焦點

  • 什麼時候該採用結對編程? - OSCHINA - 中文開源技術交流社區
    編者按:原文作者Andriy Solovey從事軟體開發已有15年,做過開發人員、軟體經理和系統架構師。關注構建優質、可靠和可用的軟體。 結對編程是構建軟體系統的一種有效方法。採用結對編程,帶來的顯著效益: 更好的想法——持續不斷的頭腦風暴、更大的知識庫、在理解上有更少的差異、有更多的腦力解決設計問題; 更好的質量——更少的漏洞、想法的即時認證、始終如一的方法並更加遵守團隊會議中的要求; 更全面的認識——經驗共享與知識共享、對於為什麼做、怎麼做和做什麼有更深入的理解
  • 為什麼結對編程並不那麼受歡迎? - OSCHINA - 中文開源技術交流社區
    結對編程是軟體開發過程中所使用的一種技術,兩名程序開發人員共享同一臺工作站,其中一名開發人員被稱為駕駛員(Driver),另一位被稱為領航員(Navigator)或觀察員(Observer)。兩人輪流使用同同一個鍵盤編寫代碼和測試案例。兩個開發人員輪流使用鍵盤可以讓每個開發人員都有機會思考設計和相應的實現。兩人還能夠從相互的思想交流中受益,通常能寫出更加高效的代碼。
  • 機器編程:軟體開發領域新動向
    在軟體開發領域,如何通過引入人工智慧提升開發效率呢?首先思考機器學習的方式,由於編程工作本身,沒有可行的方案提供一致性的編程「數據樣本」,且不同的程式設計師實現的算法和過程有天壤之別,因此通過機器學習的方式讓計算機自動編程將變得不可實現。基於深度抽象的人工智慧,讓計算機理解設計模型並轉化為代碼,這個過程被稱為機器編程。
  • 如果是為了掙錢,我應該選擇競爭性編程還是軟體開發
    對於計算機科學專業的學生來說,選擇一個決定不僅是一個令人困惑的問題,對於正在尋找公司中更好的機會或正在成長的經驗豐富的開發人員來說,這也是一個艱難的決定 。今天,我們將詳細討論該主題,並嘗試解決這種混淆。在給出任何意見之前,我們先來看看一些在大型科技巨頭公司工作的工程師的意見。
  • 0基礎如何自學軟體編程開發
    0基礎如何自學軟體編程開發?學習軟體編程首先需要選擇一門程式語言,如C或JAVA語言,作為基礎程式語言學習,掌握語言的邏輯,學習語法,其實編程實質上就是思路的運用,編程思路有了再想學習其他的程式語言就會變得順風順水。軟體編程開發,對於現在的學生來講到底有多重要呢?
  • 軟體工程——快速掌握結構化開發方法
    在結構化開發方法中,系統分析階段也稱為結構化分析,系統設計階段稱為結構化設計,系統實施階段稱為結構化編程。系統規劃階段主要是從技術、資金、市場前景等方面確定軟體是否可做,該怎麼做的問題?例如,課程案例產品涉及到圖像識別技術,項目團隊是否有足夠的技術力量完成圖像識別的研發,如果沒有圖像識別的技術力量,該如何做,是否可以考慮對接百度的AI接口。
  • 數控編程軟體(CAM)大盤點,你選用的哪種?
    Mastercam是美國CNC Software Inc.公司開發的基於PC平臺的CAD/CAM軟體。它集二維繪圖、三維實體造型、曲面設計、體素拼合、數控編程、刀具路徑摸擬及真實感摸擬等多種功能於一身。Mastercam具有較強的曲面粗加工及曲面精加工的功能,曲面精加工有多種選擇方式,可以滿足複雜零件的曲面加工要求,同時具備多軸加工功能。
  • 實現敏捷框架的比較:Scrum 方法 vs 看板方法 vs 精益開發 vs 極限編程
    這些同事第一反應就會問我,「是嗎,那你們是不是每天都會開站會,是不是每天都要有成果物交付呢?」在大多數人眼中,Scrum 方法就是敏捷開發的同義詞。當然首先,Scrum 方法是一個管理上的理論框架。它闡述的是軟體開發人員們沒有在敲代碼時應該都幹些啥。
  • 8個免費在線編程遊戲,讓每個人都可以學習編程
    遊戲是為不了解編程和Web開發的絕對初學者開發的,其主要功能便是簡單性。該遊戲有24個關卡,每個關卡教導一個不同的概念,你需要做的就是使用justify-content屬性將青蛙引導到右邊的睡蓮。4. Flexbox Defense
  • 期貨公司助力扶貧開發與貧困村結對幫扶
    新華網瀋陽12月5日電(記者白湧泉)為深入落實國家扶貧開發戰略,發揮企業優勢,助力脫貧攻堅工作,大連良運期貨近日與吉林省汪清縣羅子溝鎮的五個貧困村建立了結對幫扶關係。雙方近日籤訂了鎮企幫扶協議。根據協議,該公司將在2020年至2021年為汪清縣羅子溝鎮捐贈25萬元,用於結對村屯下河村、創業村、上鹼村、新屯子村、太平溝村的「兩不愁三保障」項目、助學、特困救助以及支持村屯發展產業及公益事業等。在特困幫扶方面,雙方通過設立扶貧基金等方式,助力建檔立卡戶實現「兩不愁三保障」。
  • 有史以來最偉大的軟體開發書籍
    Clean CodeBob Martin叔叔(Uncle Bob Martin)在2008年撰寫的最偉大的軟體開發書籍之一。該書旨在教給軟體工程師編寫乾淨的編程代碼的原理。裡面有很多示例,展示了如何重構代碼以使其更具可讀性和可維護性。此外,它包括各種程式設計師常見錯誤的章節和解釋面向對象設計的SOLID原理的章節。
  • 主打「中文編程」的易語言,為何鮮有公司採用?
    易語言是一門非常有趣的程式語言,它讓程式設計師可以用中文來實現程序編寫,簡單易上手的特性也讓易語言一直存活至今,但易語言似乎僅僅限於「有趣」,目前來看極少有公司或是產品採用易語言,所以易語言到底是什麼?它用在哪兒了?為什麼沒有公司願意用它?
  • 杭州學習軟體開發公司排名_杭州app開發
    App開發,是指專注於手機應用軟體開發與服務。 App是application的縮寫,通常專指手機上的應用軟體,或稱手機客戶端。另外有很多在線app開發平臺。移動網際網路時代是全民的移動網際網路時代,是每個人的時代,也是每個企業的時代。APP便捷了每個人的生活,APP開發讓每個企業都開始了移動信息化進程。
  • 效率提升30倍 無代碼開發讓「小白」也能編程
    「也就是說,代碼是軟體業務功能及邏輯結構的『物理』載體,是軟體運行進而實現其預定功能的基礎實體。」閆懷志介紹道,一般而言,人們常見的代碼就是用程式語言寫好的、可用記事本打開的多行英文文本,即原始碼。這種原始碼,是由編程人員採用彙編語言和高級語言寫出來的「原始」代碼。除腳本語言原始碼外,大部分原始碼無法在計算機上被直接運行,通常能在計算機上直接運行的都是可執行程序。
  • |2020 最新軟體開發狀況報告
    2、為開源軟體做貢獻:在開發人員的世界中,開源軟體無處不在,但並非每個開發人員都是開源人員。該報告探討了哪些開發人員為開源軟體做過貢獻,他們願意做貢獻的原因,以及他們希望從各個公司獲得哪些開源支持。3、開發運維的參與和採用:開發運維改變了軟體構建的方式。但是,並非所有的開發人員和組織都經歷了這種文化轉變。該報告統計了有多少開發人員在使用CI/CD工具(這是開發運維流程的核心技術)。此外,還分析了哪些開發人員正在使用這些工具、他們的工作經驗、所在公司規模以及技術背景。
  • 09-極限編程XP是怎樣極限的?
    極限編程推薦的實踐如圖所示,XP給出了13個非常經典的實踐方法,我們先來看一下最裡層,分別是重構、簡單設計、結對編程和測試驅動開發,這部分的四個實踐比較偏重個體這個層次,重構強調不斷優化設計、簡單設計提倡「足夠」的設計以避免浪費,結對編程強調成員結對進行開發,以優化產品質量,而測試驅動開發以一種新的開發思路確保開發的「有法可依」;再向外一層是側重團隊實踐的,包括了:
  • 程式語言:開發人員需要掌握哪幾種?
    很難在提供軟體資源(共享代碼庫,API,編譯器,文檔等)方面贏得支持,並贏得開發人員的支持。公司在兩者上都處於獨特的位置。還有一個事實是,現有語言通常很難融入當今複雜的代碼框架中。例如,Facebook決定創建Hack,這是Web開發中常用的腳本語言PHP的超集。
  • 賽靈思推出兩款開發環境軟體能配合多種系統級設計工具
    新推出的SDAccel 開發環境使沒有任何FPGA經驗的數據中心設備編程員都能夠運用OpenCL、C 或C++ 語言針對數據中心和雲計算基礎設施對賽靈思FPGA進行編程,設計出的FPGA 設備性能功耗比遠超基於GPU 和CPU 的設備。
  • 七套工業機器人離線編程軟體優缺點介紹
    工業機器人編程軟體1、Robot MasterRobotmaster來自加拿大,由上海傲卡自動化公司代理,是目前全球離線編程軟體中頂尖的軟體,幾乎支持市場上絕大多數工業機器人品牌(KUKA,ABB,Fanuc,Motoman,史陶比爾、珂瑪、
  • CNC編程該選擇哪個軟體呢?編程軟體對比
    以前在操機的時候我也遇到這個問題,那時想學編程,不知道選擇哪個編程軟體,畢竟軟體較多,主流軟體有UG、Mastercam、Cimatron、Powermill、Hypermill、Worknc等等。從我個人的經驗來說UG的優點:畫圖設計、分模功能強大,3軸刀路功能也強大,最關鍵的是加外掛的拆電極功能極其方便快捷,做編程拆電極很多人都是使用它來完成的,可以實現設計、分模、CNC之間的無縫轉換,很多大型的知名公司都是在用UG軟體,5軸功能也比較強大,缺點是軟體大,對電腦的配置要求較高,複雜模型的3d刀路計算速度較慢。。