了解如何編寫應用程序和了解其下的基礎架構之間是有區別的。今年,當我從開發人員轉到SRE(站點可靠性工程師),看到分布式系統如何在實際的公司工作時,真的改變了我寫代碼的方式。
當你獨自進行軟件開發時,你并沒有想到如何被阻止。當我部署第一個網站時,我不知道如何解決這個問題。 我并不在乎編寫測試。 讓我們保持真實:我只關心添加新功能并看到最終產品。 我不明白如何主持靜態圖像,或配置服務器。
以下是我希望程序員在開發時更關注的一些事情:
1. 編寫準確的提交消息和清晰的文檔
程序員要確保代碼是有效的,并適當進行注釋。對于每一次修復都應該留下清晰的提交消息使代碼審查人員更容易理解你做的改變,并在不通過的情況下幫助調試過程,這使得代碼審查者有機會審查開發者添加的內容以及知曉原因。之前,我只是想快點結束編碼或者解決難題,現在,我意識到清晰的文檔可以節省更多時間。如果之后你打算開放一部分源代碼,當這些東西在GitHub上出現時,開發者不會清楚這些代碼的含義,這會導致一個糟糕的審查會議和需要很長時間才能解決問題。
2.編寫重點測試
我曾經讀過一則推特,上面寫著“你最喜歡的公司離全面罷工還有30分鐘”。這意味著什么,我們喜歡的公司或許并不像我們想象種那樣堅不可摧,讓這些公司繼續奔跑需要很多的努力和團隊合作。管理公司很難,你開始意識到在一個基礎設施層面,事情會有多糟糕。一個有助于防止這種情況的方法是編寫好的測試,測試應該是確定性的,并且清晰易讀。如果你對自己的東西進行了很好的測試,那么就可以避免因為更改代碼或更大的事件而導致的回歸。
3.確保代碼安全
我學到了很多安全方面的知識,更加意識到代碼的生命周期。任何時候,代碼的完整性都是非常重要的。否則,你不僅將客戶置于危險之中,還將公司的信息置于危險之中。當人們使用應用程序時,他們相信隱私和信息正在應用程序中得到保護。沒有安全措施,就會讓客戶喪失信心。在Equifax違規及其廣泛的影響之后,我意識到在處理大型代碼庫時將安全作為優先考慮的重要性。所有優秀的設計都要考慮安全性,無論是設計抗震的房子還是創建強大的軟件—良好的設計意味著優先考慮代碼每個部分的安全性。
4.時間管理
作為SRE的隨時待命迫使我提高了時間管理技能,這也改善了我的生活。我一直想要做很多事情,但是要知道,當我打電話時,我所有的注意力都是為了保持網站的正常運轉,所以管理時間來做工作項目比以往任何時候都更重要。現在,我正在使用Evernote等新工具來組織我的想法,并使用任務列表確保任務完成。我會提前列出一周的任務清單,更有條理地完成項目。
5.細心
我在接電話的過程中已經學會了保持高度注意力的重要性,因為我總是需要隨時為網站的故障想出合適的解決方案。如果我負責維護產品的基礎架構和安全性,我不能分心別的事情。 如果出現問題,我的團隊需要依靠我。我的反應能力非常重要,因為如果能夠防止事件升級,可以幫助人們把注意力集中在他們正在做的事情上。
我以前從來沒有真的考慮過這些問題,成為SRE使我了解了分布式系統和基礎架構是如何工作的,并讓我更深入地了解了我做的每一個決定將導致什么樣的結果。