avatar澳洲雲端架構師 EC (Cloud Architect EC)

总结

网页主要阐述了 Software Engineer、Cloud Engineer 和 DevOps Engineer 三个工程师职位的技能差异及工作内容,并通过实际代码示例来进一步说明。

摘要

文章首先介绍了软件工程师的不同分类,包括系统软件工程师、网页软件工程师,并进一步细分为前端工程师、后端工程师和全端工程师。前端工程师专注于网页界面和用户交互,技能涉及HTML、CSS和JavaScript等;后端工程师则涉及网页逻辑和API,需要掌握数据库知识和SQL;言;全端工程师则兼具前后端技能,能够独立完成整个软件开发流程。

接着,文章讨论了云端顾问/云端工程师的角色,指出这两个职位的工作内容基本相似,主要在云基础设施、基础设施即代码(IaC)和编程语言(如TypeScript和Python)方面。通过AWS CloudFormation和Azure Resource Manager等技术的代码示例展示了如何在云平台上部署资源。

文章最后介绍了DevOps工程师的职位,强调其工作内容广泛,包括云基础设施、平台管理、CI/CD、自动化流程、日志监控、系统管理等。DevOps工程师需要熟悉各种DevOps工具,如Jenkins、Azure DevOps、CloudWatch和Azure Monitor等。通过Azure DevOps Pipeline的代码示例说明了DevOps工程师的日常工作。

作者还分享了自己的职业转变经历,从想要成为软件工程师到最终成为云端架构师和DevOps工程师的故事,表达了对云计算和DevOps领域的热爱和对未来职业发展的展望。

观点

  • 软件工程师的职位分类和技能要求各不相同,每个职位都有其特定的工作重点和技术栈。
  • 云端顾问/云端工程师的核心技能在于云基础设施的掌握和应用,以及使用IaC工具来自动化资源部署。
  • DevOps工程师的角色非常全面,涉及软件开发和云计算的多个方面,强调自动化和流程优化。
  • 作者认为,无论是软件工程师、云工程师还是DevOps工程师,每个职位都有其独特的魅力和学习价值。
  • 作者通过个人经历强调了职业转变的可能性和对个人成长的影响,鼓励读者积极探索和学习新的技术领域。

[職場] Software Engineer? Cloud Engineer? DevOps Engineer? 你寫的 code 跟我寫的到底有什麼不同?

Photo by Scott Blake on Unsplash

非 Medium 付費會員,請點此免費閱讀這篇文章!當然如果你願意加入 Medium 付費會員來支持創作者,那就更棒囉~感謝你的閱讀!

前言

除了 Solution Architect 這個職位之外,很多人也都會問我「EC,所謂的 Cloud Architect/Cloud Consultant/Cloud Engineer 又是怎樣的職位? 跟 Solution Architect 一樣嗎?」

所以我決定要以我個人本身的經驗,透過一些實際的 code samples 來進一步跟大家解析這三個工程師職位的不同!

這集算是我的 <微軟雲端架構師 (Azure Cloud Solution Architect) 到底在做什麼?>> 系列的番外篇。如果你想要暸解我在微軟擔任「雲端解決方案架構師 (Solution Architect)」的實際工作內容,請你千萬不要錯過這個系列!

第一集的傳送門在此:

https://readmedium.com/day-in-the-life-of-solution-architect-05-sales-pipeline-management-f9afb58bb70d

軟體工程師 (Software Engineer)

其實這個分類裡又可以分成寫系統軟體跟寫網頁軟體的工程師。近年來掀起一陣轉職風潮的工程師職位主要屬於網頁軟體的類別,因為入門門檻比較低,其中又可以再細分成:前端工程師 (Frontend Engineer)、後端工程師(Backend Engineer)、全端工程師 (Full-Stack Engineer)。

  • 前端工程師:前端工程師所寫的程式通常跟網頁介面相關,也就是使用者可以看到、也可以互動的地方。例如說網站的首頁、表格等等。基本的技能樹有:HTML、CSS、JavaScript,跟常見的前端框架例如 React、Angular、 Vue。
  • 後端工程師:後端工程師所寫的程式通常跟網頁邏輯以及 API 相關,也就是使用者通常看不到的地方。後端工程師通常也會需要有資料庫 (database) 相關的知識跟技能,例如說要至少要會寫一點 SQL (Structured Query Language) 之類的。基本的技能樹有:REST API、GraphQL 等等。關於資料庫管理,其實這裡還有一個專門的職位叫 DBA (Database Admin),但這跟我們今天的主題離的比較遠,所以我就不細談了。
  • 全端工程師:顧名思義,也就是前端跟後端的工作都要會做。當年我轉職的時候(2020 年),澳洲的 IT 業界普遍有個迷思,就是後端工程師全端工程師才是真正厲害的工程師,而前端工程師就只是改改 HTML/CSS 而已。但我其實不這麼認為!我認為前端跟後端各有他們專精的地方跟有趣的地方,而所謂的全端,我覺得有時候也是只是慣老闆們開不出兩個職位的薪水的藉口而已?XDD

總結來說我覺得三個職位各有好處:全端工程師會比較了解整體的軟體開發流程,也不用靠別人 (例如後端在等前端改UI,前端在等後端把 API endpoint 架好),工作內容比較豐富有趣。前端工程師寫出來的 components 會立刻出現在網頁上,互動性很高,很有成就感。後端工程師寫出來的程式碼就是一個網站最核心的骨架,需要邏輯性強的人。

題外話,如果你是相關領域的人士,請問 API 的全稱是什麼?你可以不 Google 就回答出來嗎?會問這個,是因為我之前在 AWS (Amazon Web Services) 當 Cloud Consultant 時,發現這是我同事出的面試題之一XDDD

好的,我要公佈答案了,API 的全稱是 Application programming interface。但其實你回答不出來我們也不會因此扣你分數啦,我也不懂我同事問這個要幹嘛哈哈

以下我就以一個前端工程師會寫出來的程式舉例:

如果我們用 vanilla JavaScript 舉例,左邊的程式碼會生成一個按鈕,按下去後會出現 HelloWorld 這個字。

JavaScript Code from W3School

複雜一點的例子可以用 React 這個奠基於 JavaScript 的 frontend framework (目前的業界標準應該是用 TypeScript 寫居多) 來寫一個圈圈叉叉的遊戲 。下面的程式碼是個 React functional component ,左手邊的這幾行程式,會變成右手邊那一個圈圈叉叉的遊戲。(題外話:圈圈叉叉這個遊戲的英文叫做 Tic-Tac-Toe,很有趣吧)。如果看完整的程式碼或是想要自己玩玩看,這個程式碼來自 React 的官方部落格

Tic-Tac-Toe from React Doc

雲端顧問/雲端工程師 (Cloud Consultant/Cloud Engineer)

就我個人的定義來說,這兩個職位的工作內容是差不多的,主要的差別在於Cloud Consultant 通常受僱於顧問公司 (consulting companies),例如常見的四大會計顧問公司 Big 4 (EY, PwC, KPMG, Deloitte)、Accenture、印度的TCS (Tata Consulting Services) 跟 Infosys 等等。

AWS 跟微軟也有自己的 consulting department,例如我之前工作的 AWS Professional Services (裡面的 Cloud Consultant 的職稱叫做 Cloud Architect),微軟的顧問部門一直改名,之前叫 MCS (Microsoft Consulting Services),現在叫什麼我忘了XD

所謂的 Cloud Consultant 就是被派到客戶公司做 Cloud Engineer 的工作+提供顧問服務。雲端顧問/雲端工程師基本的技能樹有:

  • cloud infrastructure: AWS, Azure or GCP
  • infrastructure as code (IaC): 如果是 AWS 平台那就是 AWS CloudFormation in Json or YAML、SDK、CDK。如果是 Azure 平台那就是 Bicep 或 Azure Resource Manager。如果是要跨平台的話,目前業界最常用的工具是 Terraform。
  • 程式語言:最常見的是 TypeScripte 或 Python。

所以一個雲端顧問/雲端工程師會寫的程式碼如下。這是用 CloudFormation in YAML 寫出來的程式碼,目的是在 AWS 上面部署一個有 public IP 的 EC2 instance,完整說明可以參考官方文件

EC2 in yaml from AWS

如果我們舉一個比較複雜的例子,假設我們要在 AWS 上部署一個 Wordpress 網站跟一個 MySQL DB 作為資料庫,那我們的程式碼就會像圖片裡那樣。完整的程式碼來自 AWS 網站這個連結

CloudFormation template from AWS

DevOps 工程師 (DevOps Engineer)

DevOps 工程師的工作內容包山包海,包括 cloud infrastructure, platform managment, CI/CD (continuous integration and continuous delivery/continuous deployment), pipelien automation, logging/monitoring, system administration, DevOps tools managment, scripting。算是一個在軟體工程師跟雲端工程師之間,但又偏向雲端工程師的職位。DevOps 工程師還有一個變體叫 SRE (Site Reliability Engineer),我們在此也先不討論。

DevOps 工程師的技能樹有:

  • cloud infrastructure: AWS, Azure or GCP
  • infrastructure as code (IaC): 如果是 AWS 平台那就是 AWS CloudFormation in Json or YAML、SDK、CDK。如果是 Azure 平台那就是 Bicep 或 Azure Resource Manager。如果是要跨平台的話,目前業界最常用的工具是 Terraform。
  • 程式語言:最常見的是 TypeScripte 或 Python。
  • CI/CD tools: AWS 的 CodePipeline 系列、Azure 的 Azure DevOps、第三方軟體像是 Jenkins、OptusDeploy 等等
  • Logging/monitoring:AWS CloudWatch、Azure Monitor、DataDog、Splunk 等等
  • Scripting:Bash script, PowerShell script

讓我們以 Azure DevOps Pipeline 的程式碼為例,完整程式碼可以參考微軟網站

Azure DevOps Pipeline tempalte from Microsoft

就 DevOps 工程師的日常來說,雖然寫程式是日常,但很大部分的重點其實是在 tooling 跟 automation 上面。

結論

我個人當初想轉職時想當的是 Software Engineer (特別是 Frontend Engieer),結果投了200個工作,最後都沒有拿到 Software Engineer 的相關 offer。我唯一拿到的 offer 就是 AWS Cloud Architect (Cloud Consultant),從此踏上我的雲端之路。其實回頭想想也是超級幸運,因為我後來真的很喜歡 cloud engineering!(其實我在還沒踏入這個業界之前,我完全不知道 Cloud Engineer、DevOps Engineer 這兩個職位存在XDD)

後來第二份工作是在微軟當 Solution Architect,我覺得這個職位其實不是很適合我。如果看過我相關文章的讀者肯定知道為什麼,這裡就不多說了XD

最近開始在能源公司開始當 DevOps Engineer,目前做了三個禮拜我天天都超級開心!因為我目前的技能樹只點在雲端技術跟雲端平台上(喔~還有軟體開發,我當年 coding bootcamp 學的是 JavaScript、React、MongoDB、 Express),所以很多 DevOps 概念、技術跟工具對我來說都是新的,每天都在學習新東西!例如我最近在寫 PowerShell scripting 來改善我們的 deployment pipeline (我從來沒寫過 PowerShell,但是我當年學習的程式概念還在,所以邊學邊寫也是非常有趣),我的第一個 PR 已經進 production 了,非常有成就感!!! 還收到來自 developer 的感謝XD

希望我可以繼續順利在 DevOps Engineer 的路上走下去~

好的,以上就是 Software Engineer、Cloud Engineer、DevOps Engineer 這三個工程師職位的技能樹比較,並提供了實際的程式碼作為例子。看完這篇文章,是否幫助你更加了解這三個職位了呢?如果有不清楚的地方,也可以再留言問我XD

如果可以選擇的話,哪一個職位你比較感興趣呢?歡迎留言告訴我!

如果你喜歡海外生活、澳洲職場、文組轉職工程師的相關文章,歡迎按下「拍手」給我鼓勵 (喜歡的話請多拍幾次!)。同時記得「按此訂閱我的Medium部落格」,這樣你就不會錯過我的更新囉~

如果想要進一步支持我,歡迎透過以下連結請我喝一杯咖啡!你們的支持是我持續創作的動力,如有任何問題或是想要看的主題,歡迎留言與我互動 :)

延伸閱讀

DevOps
Software Development
Cloud Computing
AWS
Azure
Recommended from ReadMedium