1.1「人不是生來的,是被培育的」
好吧,既然你還在這裡,那我們就繼續吧。「我要向你展示兔子洞有多深」©
我會告訴你產品開發的過程是怎麼樣的——我們會從最高的全局層次一直到最底層——編寫程式碼。我想你一定會有一些有趣的發現……
現代 IT 產品不再是編寫出來的,它們是被創造出來的。它們是從庫、框架、第三方程式和產品中拼湊而成的,或者直接使用遠端的付費或免費網路服務。
現代的產品是一個技術、服務、解決方案和過程的動物園。一部分工作由人來完成,一部分自動化,還有其餘的 90% 完全由數據中心的雲服務來完成。這個世界已經不一樣了。
但第一個你會注意到的是——不斷的變更。你不再編寫程式, 你是在對它們進行改動。
1.2 不斷的變更
你會來到工作並加入一個由 20 人組成的團隊,他們已經工作於這個產品五年了。現在用戶可以使用第 7 版。你的任務就是對這個產品進行更改。稍微小一些的,以免嚇走當前活躍的用戶。
這可不容易,因為產品已經在運行了。它有客戶,而且他們在付錢。所以不能破壞任何東西。對一個已經運行的產品進行更改要比對一個新產品困難好幾倍。為了這個,有專門的標準,遷移協議和工具。這讓我想起一個笑話:
兩個老朋友見面:一個成了機械師,第二個是外科醫生……每個人都有自己的生活、煩惱、快樂……他們向彼此講述一切,然後話題轉向工資。汽車技師說:「我一個月拿 30000,我很滿意,你呢?」心臟外科醫生說:「嗯,我每次手術收入大約 10 萬……」。這時汽修師感興趣了:「奇怪,為什麼差距這麼大?我們好像做的是一樣的事——更換零件。」外科醫生告訴他:「好吧,來看看車,發動……」。機械師發動汽車,外科醫生打開引擎蓋告訴機械師:「看到沒,引擎在運轉?來換換看! :)」
即使發生了奇蹟,你的團隊整整一年從頭開始編寫產品,並僅在此之後才發布,你知道接下來會發生什麼嗎?
如果你的產品成功了,產品持有者會想要發展它。發布新版本,添加某些功能。或者至少做幾個實驗。然後你知道會隨之而來的是什麼嗎?變更。
1.3 產品的價值
從現代開發的角度看,只有已經發布的程式碼和用戶使用的功能才有價值。如果你編寫了程式碼,它存儲在某處並運行,但沒有人使用它,那它的價值接近於零。因此,所有程式碼應盡可能早地進入 production。
你的程式碼應經過這些階段:
- 你寫了它,並確保它能運行。
- 你的 TeamLead 檢查過它並將其添加到 Git 的主分支中。
- 程式構建時的測試顯示你沒有破壞任何重要的東西。
- 整合測試顯示產品按預期運行。
- Tester 檢查了這段程式碼,並允許 release。
- 然後需要組建新版本的產品並在服務器上 release。
- 新版本的產品需要打包成 Docker Images 並 release。
- 可能需要運行遷移腳本並對數據庫和/或其他第三方解決方案進行更改。
- 然後需要在服務器上收集日誌,以確保一切正常運行。
- 在緊急情況下,如果你弄壞了某些東西,則需要回滾構建,恢復數據庫的先前狀態,並且不丟失用戶在使用不穩定版本的產品時所做的操作。
在大多數公司,這些任務已經解決:建立了新的流程,聘請了特別的員工,引入了專門的安全協議和質量控制標準。
公司越大,從編寫程式碼到它進入 production 並轉變為價值的時間就越短——開始為人們帶來好處。
在大多數公司中,程式碼在兩週內完成此過程。然而,有些公司每週甚至每天都進行 release。特別突出的是——每天多次。
編寫的程式碼不值一提。只有在 production 上運行的程式碼才能帶來價值。
GO TO FULL VERSION