讓我們弄清楚一件事:知道如何編碼並不能讓你成為軟體工程師。這是一個殘酷的事實,但在過去幾年裡,這一事實變得非常明顯,尤其是在科技界經歷了裁員、經濟轉型和不斷變化的預期之後。
成為程式設計師就是編寫程式碼。成為軟體工程師就是解決問題。如果你只是寫程式碼,那麼你是可以被替換的。但是,如果您正在設計系統、了解權衡並思考大局,那麼您正在建立一些不容易自動化或外包的東西。
那麼,有什麼區別,為什麼要關心呢?讓我們來分解一下。
程式設計就是編寫程式碼來使某些東西發揮作用。軟體工程正在設計一個能夠有效且永續地解決問題的系統。這就像建造樂高塔和設計摩天大樓之間的差異。一是有趣、快速;二是有趣。另一個需要規劃、協作和對複雜系統的理解。
在過去的幾年裡,我看到了當公司只重視程式設計師時會發生什麼事。當科技繁榮放緩、裁員開始時,被裁減的並不是那些建立強大、可擴展解決方案的工程師,而是那些只能遵循指示並大量編寫程式碼的工程師。
該行業需要的是問題解決者,而不僅僅是程式碼編寫者。如果你想蓬勃發展,你需要超越文法來思考並開始思考系統。
科技格局已經改變。這就是為什麼目標不僅僅是「程式設計師」是至關重要的:
懂得 JavaScript 或 Python 就能保證找到工作的日子已經結束了。市場上充斥著能夠編寫基本 CRUD 應用程式的初級開發人員。如果這就是您的技能水平,那麼您將在一個擁擠、殘酷的空間中競爭。
公司正在尋找了解架構、可擴展性以及如何在時間、成本和複雜性之間進行權衡的工程師。這些技能不是來自於遵循教程,而是來自像工程師一樣思考。
你有看過像 GitHub Copilot 和 ChatGPT 這樣的 AI 工具能做什麼嗎?他們可以編寫樣板程式碼、修復錯誤,甚至建立簡單的應用程式。程式設計師的工作(基本編碼)正在變得自動化。
但事情是這樣的:人工智慧(還)無法設計複雜的系統、做出判斷或理解使用者需求。這就是工程師的閃光點。
當預算緊張時,公司就會尋求效率。他們不想要只編寫程式碼的人,而是想要了解業務問題、設計智慧解決方案並能夠與利害關係人協作以提供真正價值的人。工程師帶來了整體視野。
這不僅僅是編寫更多程式碼,而是以不同的方式思考。您可以透過以下方式進行轉變:
了解 SOLID、DRY(不要重複自己)和 YAGNI(你不需要它)等原則。了解如何將問題分解為模組化、可維護的解決方案。
Robert C. Martin 的《Clean Code》和 Martin Kleppmann 的《設計資料密集型應用程式》等書籍是必讀書籍。
如果你想成為軟體工程師,你需要知道如何設計系統。這不僅僅是編寫程式碼,而是建立可擴展、容錯的架構。
了解:
負載平衡和快取。
資料庫設計和索引。
分散式系統和微服務。
系統設計面試是出了名的艱難,但是為他們學習將教會你的技能遠遠超出了找工作的範圍。
這可能聽起來很無聊,但請聽我說:最好的工程師了解他們為什麼要建造某些東西,而不僅僅是如何建造。學會思考使用者需求、專案預算和時間表。提出以下問題:
該功能對使用者有何影響?
有沒有更簡單的方法來解決這個問題?
如何平衡速度和質量?
當您了解業務時,您就不僅僅是一名工程師,而是一名值得信賴的顧問。
工程是一項團隊運動。您將與產品經理、設計師和其他開發人員一起工作。了解如何清晰地溝通、提供和接收回饋以及記錄您的工作。
這不僅僅是編寫出色的程式碼,而是確保您的團隊可以理解、維護和擴展程式碼。
最好的工程師永遠不會停止學習。探索新的工具、框架和範例。嘗試 Rust、Kubernetes 或 GraphQL 等技術。科技世界瞬息萬變-保持好奇心可以讓你保持適應力。
當然!編碼是我們所做一切的基礎。但如果你想建立持久的職業生涯,就不要止步於程式設計。學會批判性思考、解決問題和設計系統。
成為軟體工程師意味著將技術技能與創造力、協作和策略思維相結合。這不是最簡單的方法,但它可以讓您在不斷變化的行業中保持相關性並且不可或缺。
不要讓自己成為另一個程式設計師。目標更高。學習如何像工程師一樣思考,並專注於建立系統,而不僅僅是編寫程式碼。這個行業正在發生變化,但這並不是一件壞事——這是一個成長的機會。
你怎麼看?您的目標是超越程式設計嗎?快來評論裡聊聊吧。
原文出處:https://dev.to/holasoymalva/dont-be-a-programmer-be-a-software-engineer-4366