挺贊同的,在開發團隊該建立的一些共識、規範或標準,這些是新進工程師(不一定是菜鳥)最一開始該熟悉的東西。
--
我挺喜歡 codelabs 的概念,每間公司或多或少都會有自己包的 package 或 component, 應該要有針對這些東西怎麼用、何時用,有什麼限制,以及為何這樣設計,幫助新進工程師了解。
很不錯的六個原則。
https://buzzorange.com/techorange/2016/…/06/google-engineer/
——
以下是我從 Google 工程文化中學到的六個核心原則,你可以從以下各項中學習:
1. 致力共享工具和抽象(abstractions)的工程資源
從很早以前起,Google 對於整個工程組織共用的工具和抽象(abstractions),如 Protocol Buffers、MapReduce、BigTable 等方面密集地投資。 這種好好地一次把問題解決然後讓所有內部的人都能採用的態度最終獲得很高的回報。
每個團隊不用花太大的心力去考慮要使用哪些工具,有專門的工具團隊服務且專注於改善,提高工程團隊的生產力,這些改善很容易傳播給每位已在使用工具或服務的人。
和既有的工程組織(每個團隊可能使用非常不同的工具鏈)形成對比,這一理念也意味著,一旦你已經知道基礎的建構區塊後,便能很容易地理解許多專案背後的設計。這種方法的缺點是,有時你可能會被迫把你的使用案例做些調適,以配合某些特殊支援的工具,甚至它對於你目前的工作來說不是最好的。
2. 為新進工程師投資可重複使用的培訓教材
我能夠迅速在 Google 中有生產力的原因之一是因為 Google 一直以來投入大量資源投入到名為 codelabs 的培訓文件中。
Codelabs 包含了公司的核心抽象層(core abstractions),解釋了為什麼它們被如此設計,突顯程式庫中的相關片段,然後通過幾個實踐的練習驗證理解。沒有這些,我需要更多的時間來了解我能有效率工作所需要知道的眾多技術,這也意味著我的同事不得不花更多的時間向我解釋這些知識。
我在 Google Codelabs 的正面經驗強烈地啟發我後來在 Quora 的 到職流程 推動 codelabs 的決心。
3. 標準化程式設計風格
關於空格、大寫、行長、是否使用 智慧指標(smart pointers)等的每個約定可能單獨看起來微不足道,但是當你達到 Google 的規模時,具有巨大的影響。我不會是第一個承認,當程式碼審查者對我的程式碼挑三揀四,只因為我不正確地縮進一行或因添加兩個字符而超過規定的行列長度很煩的人。
但是因為每個人都遵循相同的規定,瀏覽原始碼明顯地容易許多。在交換團隊或處理跨功能專案時,將需要費點功夫來學習新團隊的規定。當你的團隊小的時候,很容易就忽略的像規定這種事,但隨著程式碼基底(codebase)和團隊成長到某個程度,需要花在變更上的力氣越來越多,你會開始意識到需要一些一致性。
如果可能,儘早規劃團隊一致的規定,或者也可直接使用 Google 開源的樣式指南(style guides)。
4. 透過程式碼審查提高程式碼品質
要求 程式碼審查 並為每個更改以程式來強制執行,減慢了迭代速度,但優化了程式碼的品質。新進工程師將由於收到他們需要的回饋,可快速掌握最佳實踐並收斂程式碼的品質到可接受的水準。
整體上有更高品質的程式碼意味著新進工程師以這品質起始建模,如此將更有可能一開始就寫出更乾淨的程式碼。 因此,程式碼審查是有助於公司擴大規模還能讓所開發的軟體維持高品質的流程。
5. 取得正確的數據(而且要很多)來解決許多問題
Google 研究部主任 Peter Norvig 經常談到「數據由不合理變有效」(註 6)(註 7)(譯註 : 經由合理化模型將許多混亂的文字、圖像和影片變成有效訊息),以解決複雜的問題。
正確的數據可以幫助你了解使用者、分析辦公室政治、解決爭議,並追踪進度。開發日誌和數據基礎架構(例如 Sawzall 和 MapReduce)使 Google 的工程師可以篩選大量數據。
6. 自動化測試以擴展你的程式碼
Google 有非常強大的單元測試文化,「測試在洗手間」是其中一個明顯的案例。幾乎每一個我所做的程式碼修改都伴隨著一個單元測試,程式碼審查人員將嚴格檢查它們。
這使得開發一個指定的變更比較慢,但也意味著成百上千的工程師可以在程式碼基底(codebase)裡相同的部分做擴充與修改,而不犧牲太多的品質或可靠性。 類似投資共享工具的作法,Google 也共享測試框架並致力最佳測試實踐的教育訓練,讓寫測試更加容易。
「google codelabs」的推薦目錄:
- 關於google codelabs 在 91 敏捷開發之路 Facebook 的最讚貼文
- 關於google codelabs 在 Google Codelabs - GitHub 的評價
- 關於google codelabs 在 Google Codelabs Receive location updates in Android with ... 的評價
- 關於google codelabs 在 Codelab: Get to know Firebase for Flutter - YouTube 的評價
- 關於google codelabs 在 Flutter firebase messaging github 的評價
- 關於google codelabs 在 360 image viewer android github 的評價
- 關於google codelabs 在 Google bot github 的評價
- 關於google codelabs 在 Flutter tutorial github 的評價
- 關於google codelabs 在 Flutter tutorial github 的評價
- 關於google codelabs 在 Firebase authentication web example github - Gaia Pot 的評價
google codelabs 在 Google Codelabs - GitHub 的推薦與評價
This repo is for the codelabs (free, online, self-paced tutorials) showing developers how to migrate their Google App Engine applications from the Python 2 ... ... <看更多>