As a Sofware Developer
這篇是我在 2021/05/23 寫的一篇關於 Developer 的條件寫的文章,我自己覺得這樣的要求是不過分的,但是,可能跟很多現代的過念有所差異,特別是一些從外面的培訓機構訓練出來的學生。
As a Software Developer
打從開始寫 Code ,我的認知開發者就是必須了解 作業系統
,也一直把這當作是基本的條件,也就是不管是 Dev / QA / Ops 的角色,對作業系統有一定認識都是必備的基本技能。這樣的習慣與認知,從學生時代在寫 LAMP 時就是這樣。自己裝 OS、自己 Compile (PHP, MySQL, Apache)、把系統配置好,然後寫程式、寫應用、自己寫 installer。
這樣的習慣隨著後來虛擬化技術開始出現之後,依舊沒變,只是多了一個技能:VMWare。
從 3.0 開始玩,跑 Linux 、裝 Windows、後來工作上自己弄了一推 IBM 產品當 Lab 環境,跑各種模擬,把自己寫好的東西 (J2EE) 部署上去。後來類似的 Hypervisor 虛擬技術,像是 vSphere 、Proxmox、Hyper-V … 到 Cloud 像 AWS、GCP …. 就一路過來,從來就不是只是 Code Level 。
後來做 SQA 的角色,裝環境、自動換安裝更是家常便飯。後來帶 SQA Team,建立整個 SQA 的 Lab (實體實驗室),從網路規劃、設備採購、軟體配置、實驗室空間規劃、資源分配,全部都自己來,讓整個 Team 可以有效運作。而產品系統架構可以在實體實驗室完全重建,獨立驗證,也可以快速地搬到 AWS,作效能測試。
相關參閱:
所以我認為一個 Developer 該會的技能,從來就不是只有 Programming Skills,不是只是談那些 CQRS、Saga、DDD … etc, 而是從系統、網路、程式語言、資料、演算法,整個能夠串起來。
不知曾幾何時,我被貼上 Infra / Ops 的標籤,只要談到這些東西,很多 Dev / QA 都會認為那不是他們需要會的東西。其實這樣的說法對我來說是不 Qualify 的,如果是面試,基本上已經被我刷掉了。
扯遠了,這篇文章 是我多年前學 K8s 的筆記,從動手中學習,K8s 版本從 v1.11 -> v1.21、作業系統 Ubuntu 從 16.04 -> 20.04,VM 橫跨四種平台,很多細節我也不是很懂,但一次又一次的迭代與探索,也掌握了一些基本。