如何思考git
以始爲終點程序員
踐行「以終爲始」就是在作事以前,先考慮結果,根據結果來肯定要作的事情。算法
可以爲別人帶來價值,本身的價值才能體現出來編程
亞馬遜如何開發一項產品的:網絡
DoD 是一個的思惟模式,是一種儘量消除不肯定性,達成共識的方式。架構
user story:框架
As a (Role), I want to (Activity), so that (Business Value)運維
持續集成編程語言
git flow工具
多問幾個爲何,交流一下是否是能夠換個作法,許多困惑可能就煙消雲散了。而能想到問這樣的問題,前提就是要跳出程序員角色思惟,擴大本身工做的上下文。
當擴大了本身工做的上下文時,咱們的目標就再也不侷限於一個單點,而是會站在更高的維度去思考,解決問題還有沒有更簡單的方案。許多在低一級難以解決的問題,放到更大的上下文裏,根本就不是問題。
「最後一千米」,這個說法指的是完成一件事,在最後也是最關鍵的步驟。
負責人就是站在「最後一千米」的角度來看要發生的事情。
實際上,早就有人在熟練運用這種思想了。在軍事上,人們將其稱爲沙盤推演,或沙盤模擬。軍隊經過沙盤模擬軍事雙方的對戰過程,發現戰略戰術上存在的問題。這一思想也被商界借鑑過來,用來培訓各級管理者。
今天談到人工智能,人們主要會談三件事:算法、算力和數據。算法幾乎是行業共有的,而算力在雲計算普及的今天也再也不是稀缺資源,因此,數據幾乎成了兵家必爭之「物」。
迭代0
有一個關於程序員的經典段子:這個工做已經作完了80%,剩下的20%還要用和前面的同樣時間。
怎麼衡量測試是否作好了呢?有一個標準:A-TRIP,這是五個單詞的縮寫,分別是Automatic(自動化)、Thorough(全面)、Repeatable(可重複的)、Independent(獨立的)和 Professional(專業的)。
想要管理好需求,先把需求拆小。
一個有效的時間管理策略是艾森豪威爾矩陣
當時間有限時,咱們須要學會找到一條可行的路徑,在完整用戶體驗和完整系統之間,找到一個平衡。
Minimum Viable Product,MVP
經過溝通反饋,不斷升級本身的編解碼能力。
任何人都能寫出計算機可以理解的代碼,只有好程序員才能寫出人可以理解的代碼。
—— Martin Fowler
晨會:
因此,在總長固定的狀況下,每一個人發言的時間必定是有限的。在有限的時間內,你能說什麼呢?我建議你只說三件事:
技術雷達
https://www.thoughtworks.com/radar
技術雷達用來追蹤技術,在雷達圖的術語裏,每一項技術表示爲一個 blip,也就是雷達上的一個光點。
而後用兩個分類元素組織這些 blip:象限(quadrant)和圓環(ring),其中,象限表示一個 blip 的種類,目前有四個種類:技術、平臺、工具,還有語言與框架。
圓環表示技術一個 blip 在技術採納生命週期中所處的階段,目前這個生命週期包含四個階段:採用(Adopt)、試驗(Trial)、評估(Assess)和暫緩(Hold)。
看板
這種把過程還原,進行研討與分析的方式,就是覆盤。
Eat your own dog food
和產品經理沒有「共同語言」
由於他們說的一般是業務語言,而咱們的口中基本上是計算機語言。這是兩個領域的東西,很難互通。前面在討論代碼的時候,我提到要用業務的語言寫代碼,實際上,這種作法就是領域驅動設計中的通用語言(Ubiquitous Language)。
遇到問題,最好的解決方案是儘早把問題暴露出來。
Perl 語言的發明人 Larry Wall 曾經說過,優秀程序員應該有三大美德:懶惰、急躁和傲慢(Laziness, Impatience and hubris)。想要成爲一個優秀的程序員,就要讓機器爲本身很好地工做,而這須要對自動化有着很好地理解。
追變的東西,永遠追不完,追不變的東西,就那麼點東西。
DevOps技術棧
https://chaifeng.com/devops-tech-stack/
運維:
https://www.infoq.cn/article/detail-analysis-of-devops
Martin 提出的面向對象設計原則:SOLID
六邊形架構
分層,更關鍵的是,提供抽象。這種分層抽象在計算機領域無處不在,不管是編程語言,仍是網絡協議,都體現着分層抽象的價值。有了分層抽象,人們才能更好地在抽象的基礎上構建更復雜的東西。
你的領域層只依賴於你的領域對象,第三方發過來的內容先作一次轉換,轉換成你的領域對象。這種作法稱爲防腐層。
《卓有成效的管理者》