作者:Miłosz Piechocki
初級工程師關心什麼?
他們關心如何編寫程序。他們最看重的是軟件質量,採用最佳實踐,並嘗試採用最前沿的技術。他們投入了大量時間去學習新技術。對他們來説,最終目標是編寫出優雅、高性能、可維護的軟件。
高級工程師關心什麼?
他們關心如何構建系統。對他們來説,創建軟件只是一系列流程中的一步。
- 第一步,他們質疑這個軟件是否值得創建,這是首要的。他們會問,這個軟件解決了什麼問題,為何這些問題的解決很重要,誰會用這個軟件以及用到什麼程度。
- 軟件應該運行在哪裏,以及如何監控它以確保它正確地運行。
- 他們還會決定,如何衡量軟件真的是在按照設計的要求去解決問題。
構建系統比建造軟件的難度高多了,甚至到了一個不舒服的程度。作為一個工程師,躲在自己的“小洞穴”中專心打磨那些小代碼,是非常誘人的一件事。一般來説,我們傾向於認為,業務的決定是產品經理的工作,代碼的部署是運維團隊的事情。然而,如果你參與到系統構建的這些環節中來,將會帶來巨大的價值。因為你是最瞭解這個軟件,以及應該如何運行、監控、擴展這個軟件的人。還有,你的分析能力、解決問題的技巧,讓你的關於產品需求的洞察觀點十分有價值。
技術上的專業知識當然非常重要。編寫出優雅、高性能、可維護的軟件,更容易運行,崩潰的頻率更少,更容易擴張且需要更容易理解。但是,軟件有可能解決了錯誤的業務問題;或者客户因為性能缺陷並不喜歡它,而你甚至因為沒有沒有監控到軟件而不知道這個事情。
系統構建的活動
一起來深入地看看,這個系統構建的活動步驟列表(並不詳盡)。
- 制定需求。跟產品經理一起理清,要解決客户的什麼問題,或許你會有一些如何用最少精力去完成任務的方法?
- 制定非功能需求。告訴產品經理一些非功能需求——系統能容納多少用户,需要的性能、吞吐量、延遲是什麼?有沒有安全和合法性上的顧慮?我們要不要審核?規定的可用度是什麼?
- 計劃迭代。和你的團隊一起,制定一份實行計劃,確保你制定了細小的、可行的進度管理。然後你就能儘快地遞交成果,跟產品經理確認里程碑了。
- 制定外部援助。確保你搞清楚了所有的外部援助,跟你的項目經理或者團隊溝通,為他們爭取一些排期,並根據此來調整里程碑。
- 測試。取決於你的公司運行方式,來決定你與團隊或者質量團隊的測試策略。協商好發佈時候需要的質量閾值。(比如不能有未解決的重大問題,或者測試覆蓋率要超過 X%)
- 可觀測性。決定好你要怎麼監控系統的健康狀況,和設置解決產品問題的流程(比如團隊值班)。用第三方方案(比如 SumoLogic)來設置監測器和儀表盤來實現這個需求吧。
- 發佈溝通。一旦你與團隊和產品經理協商好了發佈日期,請確保所有利益相關人都知道這個事情。檢查一下是不是有必要更新某些文檔。
總結
我遇到過很多工程師,他們都堅信職位晉升的唯一方法,就是不斷投入精力到專業技能上。當然這很重要,但唯一關係到你的公司的事情是,你能對業務營收產生多大的影響。把注意力從軟件,轉移到系統上來吧。改善系統比改善軟件,更能讓你上升到好的職位。