10.1 「人不是生下來的,而是被培養出來的」
好吧,既然你還在這裡,那就繼續吧。「我會告訴你兔子洞有多深」(引言)
我來告訴你產品是如何開發的。我們會從最高層次開始,一直聊到最底層的編碼。我想,你會有幾個有趣的發現……
現代的IT產品不再是被編寫出來的:它們是被創建出來的。它們是從庫、框架、第三方程序和產品中拼湊而成,甚至直接使用遠程的付費或免費網絡服務。
現代的產品是一個技術、服務、解決方案和過程的動物園。部分工作由人完成,部分自動化,而其他90%則完全由數據中心的雲服務完成。世界已經不同以往。
但你首先會注意到的是不斷的變化。你不再寫程序:你是在對它們進行修改。
10.2 不斷的變化
當你開始工作時,你會加入一個由20人組成的團隊,他們已經開發這個產品5年了。現在用戶可以使用第七版。而你的任務是對這個產品進行修改。 小改變,不要嚇跑現有的活躍用戶。
這並不簡單,因為產品已經在運行中。它有客戶,他們付錢。因此,不能破壞任何東西。 在現有的工作產品中進行修改比在新的產品中更困難。為此,會有專門的標準、協議、遷移和工具。這讓人想起一個笑話:
兩個老朋友相遇:一個成了機械師,另一個成了外科醫生……每個人都有自己的生活、擔憂、快樂……他們互相講述一切,然後話題轉到了薪水上。汽車機械師說:「我每月掙3萬,對此非常滿意,你呢?」心臟外科醫生說:「我一場手術大約賺10萬」……汽車機械師很好奇地問:「奇怪,為什麼差距這麼大,我們做的事情不是一樣的嗎——都是更換零件」,外科醫生對他說:「好吧,來看看車子,發動……」機械師發動了車子,外科醫生打開發動機蓋後對機械師說:「你看,發動機在運行?換吧! :)」
即使發生了奇蹟,你的團隊從零開始寫了一整年,然後才發佈出來,你知道接下來會發生什麼嗎?
如果你的產品成功,產品所有者會希望發展它。推出新版本,添加一些功能。或者至少做幾個實驗。你知道這會導致什麼嗎?改變。
10.3 產品的價值
從現代產品開發的角度來看,只有那些已經發佈的代碼和用戶正在使用的功能才有價值。如果你寫了代碼,它存儲在某處,運行著,但沒有人使用,那麼它的價值接近於零。因此,所有代碼都應盡早投入生產環境。
你的代碼應該通過以下階段:
- 你寫了代碼並確認它能正常運行
- 你的TeamLead審核了它並將其加入Git的主分支
- 在程序構建期間的測試表明你沒有破壞任何重要的東西
- 集成測試顯示產品能夠正常工作
- 測試人員檢查了這段代碼並批准了發佈
- 然後需要構建新版本的產品並在服務器上發佈
- 新版本的產品需要打包成Docker Images並發佈
- 可能需要運行遷移腳本並在數據庫和/或其他第三方解決方案中進行更改
- 然後需要在服務器上收集日誌,以確保一切正常運行
- 如果發生意外情況,例如你弄壞了某些東西,則需要回滾構建,恢復數據庫的先前狀態,並不丟失用戶在使用不穩定版本產品期間所做的操作
在大多數公司中,這些問題已經解決:建立了新的流程,雇用了專門的人,引入了專門的安全協議和質量控制標準。
公司越大,從編寫代碼到投入生產環境並轉化為價值的時間越短——開始為人們帶來好處。
在多數公司中,代碼在兩週內完成此過程,但也有些公司每週甚至每天都進行發佈。非常特別的是——一天內幾次。
寫好的代碼一文不值。只有在生產環境中運行的代碼才能帶來價值。
GO TO FULL VERSION