如何在軟件開發行業選擇一條正確的職業道路?

當我進入軟件開發領域時,我非常興奮。我想要同時學習所有東西:遊戲開發、移動開發、人工智能以及所有與之相關的內容。我把時間浪費在了寫“hello world”和一些簡單的程序上,使用了大約 30 種語言,只是為了弄清楚我應該學哪一種。


如何在軟件開發行業選擇一條正確的職業道路?


最後,一切都變得很無聊,因為我沒能創造最酷的東西。然而,當我決定專注於一件事並把它學好時,一切都改變了。從那時起,我開始感受到了堅持不懈帶來的好處。

面對現實吧,當人們進入軟件行業時,不是每個人都知道他們想要做什麼;更進一步說,不是每個人都能做出正確的選擇好讓自己在人群中脫穎而出。這對於初學者和初級開發人員來說確實如此。

但如果我們更深入地觀察,就會驚訝地發現,即使在這個領域有一些經驗的人也在因此而掙扎。這主要是因為軟件開發每年都在隨著新的技術棧、框架和語言的發展而快速發展。因此,作為軟件開發人員,我們必須每天不斷地學習。


如何在軟件開發行業選擇一條正確的職業道路?


在軟件行業中選擇一條理想的路徑需要考慮以下幾點:

  1. 知道如何達到目標(學習曲線、技術棧或語言)
  2. 工資中位數
  3. 工作環境
  4. 最後,是你自己的個人優勢。

從以上標準和下面的解釋來看,你就會知道什麼是最適合你的。你可以選擇多條路徑——你可以選擇“雙重職業”——但是你應該至少精通其中一條路徑。這不僅能縮短你的學習曲線,還能幫你更快地找到工作。

嘿,集中注意力,讓我們一探究竟吧。

Web 開發

這是進入軟件開發行業的一種非常常見和簡單的路徑。大多數開發人員都屬於這一類,或者至少進行過一些 Web 開發。現在,Web 開發分為兩大類:前端(即客戶端)和後端(即服務器端)。在兩者之間,我們有全棧開發,它包含了兩者。

前端

前端開發工作的內容包括用戶在瀏覽器或應用程序中看到的所有內容。前端開發人員負責 Web 應用程序的外觀和用戶體感。

其所需技能包括設計用戶界面(UI)和提升用戶體驗(UX)、CSS、JavaScript、HTML,以及React.js 、 Vue.js 、[Angular 等越來越多的 UI 框架。

大多數框架都是基於 JavaScript 寫的。

進入這個角色的門檻非常低,你只需要選擇上面任何一個框架來配合 HTML、CSS 和 JS,就可以開始開發了。要成為前端開發人員,你不需要接受任何正規培訓或獲得計算機科學學位。事實上,大多數前端 Web 開發人員都是自學成才的,或者參加過新兵訓練營。但是大專或本科學歷是在該領域進一步發展的必要條件。

後端

後端是指發生在幕後的活動。它可以是從登錄帳戶,到從網上商店購買手機的任何活動。

後端開發主要關注數據庫、腳本和網站架構。後端開發人員編寫的代碼能夠將數據庫信息傳遞給瀏覽器。這條路適合有計算機科學或軟件工程背景的人。

進入後端開發至少需要:瞭解服務器端語言,如 Java、Python、 PHP 、 Golang 或 Ruby;.NET 或 Node.js (服務器端編程用的 JS 框架);數據庫管理系統(DBMS)技術,如 MySQL 、 Mongo DB 、 Oracle 、 SQLserver 等;以及處理 Apache 、 Nginx 或 Microsoft IIS 等服務器的經驗。良好的 Linux 背景對管理服務器相當有幫助。

如何在軟件開發行業選擇一條正確的職業道路?

全棧

全棧開發人員是既懂前端開發又懂後端開發的人,但並不一定在這兩方面都是專家。這條路適合 entreprogrammers (程序員 / 企業家的混合)。這條路徑很好,因為你可以很快推出一個完整的產品,甚至光靠自己的技能就可以啟動你的創業公司。

許多初創公司對這一職位的需求很高,他們的目標就是希望以一種高成本效益的方式將所有這些功能整合在一起。現在,這條路即使對初學者來說都更容易了。

通過使用諸如 JavaScript 這樣的語言,你可以選擇像 React.js 這樣的前端框架和像 Node.js 這樣的後端框架,再加上像 Mongo DB 這樣流行的 DBMS,從而成為一個全棧開發人員,然後你就可以開始做你想做的事情了。

Web 開發人員的平均工資因地區而有所差異。Glassdoor 的數據顯示,美國 Web 開發人員的平均年薪為 7.5 萬美元。收入最低的不到 5 萬美元,而收入最高的開發人員收入超過 11.7 萬美元。大多數 Web 開發人員都是全職工作。

移動開發

這是一個體面和直接的路徑,特別是伴隨著移動市場爆炸性的增長。如果你喜歡與移動應用程序交互,並且希望構建一個移動應用程序,那麼移動開發可能是適合你的正確路徑。

這也是非常具有企業家精神的,因為如果你足夠幸運的話,你可以開發自己的應用或遊戲並賺到數百萬美元。移動開發平臺有很多,但最流行的仍然是 Android 、 iOS 和 Windows mobile 。Android 佔據了全球最大的市場份額(StatCounter 的數據顯示為 76.23%),IOS 以 22.17% 位居第二;Windows mobile 拖在後面,為 0.2%。

要成為一名 Android 開發者,你必須從 Java(它已經在 Android 開發領域流行很長時間了)或Kotlin這是 Android 平臺新的官方語言)開始你的旅程。然而,這兩種語言是可互操作的,並且可以一起使用。

在開始 iOS 開發之前,你需要學習 Objective-C。然而,在蘋果的生態系統中,它正慢慢地被一種更強大的語言—— Swift 所取代。

最後,如果你對 Windows Mobile 感興趣,可以使用 C#這樣的語言。從服務器應用程序、遊戲和移動應用程序,到 Web 服務,你幾乎可以用 C#創建一切。

Xamarin平臺徹底改變了 C#社區的期待。Xamarin 是一個應用程序構建工具,它使 C#開發人員可以很容易地為 Android 和 iOS 用戶創建應用程序。這就引出了跨平臺開發的概念,跨平臺開發是一個術語,用於描述可構建運行在多個平臺上的應用程序。最流行的跨平臺構建器包括React Native 、Flutter、Xamarin、Ionic 。

Glassdoor 的數據顯示,美國移動開發者的平均年薪為 97,445 美元,該領域的年薪通常在 7.8 萬美元到 18.8 萬美元之間。

桌面開發

桌面應用程序開發主導了軟件行業幾十年。然而,隨著 Internet 的興起,Web 應用程序以令人難以置信的速度佔據了主導地位。隨著智能手機的流行,移動應用的需求也越來越大,將桌面應用擠到了第三位。

然而,桌面開發遠沒有像許多人所想的那樣消亡。今天,大多數企業和專業應用程序仍然是基於桌面的;例如,我們開發用的 IDE ——儘管基於雲的 IDE 在這個領域中逐漸浮出水面。

桌面開發人員經常使用 GUI 工具包,如下一節討論的那些。

JavaFX 和 Swing

JavaFX 和 Swing 是來自 Oracle 的兩個 Java UI 框架。兩者都是跨平臺的。JavaFX 是較新的產品,Oracle 鼓勵它作為 Swing 的替代品。JavaFX 還通過場景生成器( Scene Builder )提供了拖放特性,這使開發變得更快,它還提供了現代化的 UI。

大多數桌面應用程序仍然維持在用 Swing。如果你熟悉 Java,這個選項是合適的。用 Swing 編寫的一個示例應用程序是 JetBrains Intellij 。

Qt 和 WPF

Qt :一個跨平臺的,基於 C++ 的 UI 框架。你可以用代碼編寫 UI 對象,也可以使用 QML , QML 是一種聲明式語言,有點類似於 JSON。用 Qt 編寫的流行應用程序包括 Maya 和 VirtualBox 。

WPF :一種流行的、成熟的、基於 XAML 的 Microsoft 技術。使用 WPF,你可以用 C#或 Visual Basic.Net ( VB.NET )編寫。

WPF 具有強大的模板、樣式和綁定功能,適合大型應用程序。

WPF 也有一個相對陡峭的學習曲線,但它是一項成熟的技術,可以在任何 Windows 操作系統上運行。 Yahoo Messenger 使用 WPF。其他你想知道的微軟技術,包括提供拖放功能的 Windows 表格,以及通用 Windows 平臺( UWP ),微軟最新的桌面應用技術。它們是基於 XMAL 的,就像 WPF,你可以用 C#、 VB.NET 和 c++ 來寫。大多數應用程序都是用 C#編寫的。

Electron

Electron 是一個框架,它允許你使用網絡技術(HTML/CSS/JavaScript)來開發桌面應用程序。Electron 背後的奧妙在於它使用了 Node.js 和 Chromium 在桌面窗口中創建 Web 視圖。Electron 在一段時間裡頗受歡迎,並且有很多用它開發的應用程序,如 Slack 、 GitHub Desktop 和 Visual Studio Code 。儘管與其他技術相比,它與 PC 的交互能力要差得多,但它仍然可以使用 Electron 簡單的 API 來實現基本的操作系統功能,或者直接使用 Node.js 調用.dll 文件。

大多數桌面開發人員都與成熟的企業合作。Glassdoor 的數據顯示,在美國,桌面應用程序開發人員的全國平均年薪為 76,195 美元。其他地區的情況可能不同。根據不同的角色,高薪的桌面開發者可以掙到 11.7 萬美元甚至更多,而低收入的開發者只能掙到 5.8 萬美元甚至更少。

視頻遊戲開發

以前,當我玩 GTA Vice City 和其他遊戲時,我對編程一無所知。因為我過去(現在仍然)是一個非常好奇的人,所以我到附近的網吧做了一些研究,併為自己開發了一款遊戲。我想我可以在幾天內構建一個遊戲,然後邀請朋友來參加我想要的遊戲派對。事情並沒有按計劃進行,但我有了一個重大發現——我熱愛編程。生活總是讓人有些出乎意料。

長話短說,我仍然認為遊戲開發是一個很好的職業選擇。這是一個困難的工作,競爭很激烈,工作時間很長。如果你對遊戲很感興趣,那就沿著這條路走下去,但要意識到你以後可能會換工作。遊戲開發人員使用的框架包括 DirectX 、 OpenGL 、 Unity 3D 、 WebGL ,語言包括 c、c++、C#和 Java。JavaScript 和 HTML5 遊戲越來越受歡迎。在移動設備上,Swift 和 Java 分別是 iOS 和 Android 遊戲的首選技術。

Glassdoor 的數據顯示,美國遊戲開發者的年薪在 6.6 萬至 14.8 萬美元之間,平均年薪為 101,932 美元。

嵌入式系統

嵌入式系統控制著當今許多常用的設備。嵌入式系統是執行特定任務的微控制器或微處理器系統。如今,幾乎所有的設備都有一個大腦。 Arduinos 、 PIC 、 8051 和 Atmel 微控制器通常用於設計嵌入式系統。嵌入式開發人員通常使用 c、c++、彙編、Java 等語言,或專有技術、框架和工具包。

隨著物聯網(IoT:Internet of Things)、人工智能(AI:Artificial Intelligence)和實時分析的興起,嵌入式系統已經發展到可以控制包括家庭和建築在內的各種系統的自動化。在嵌入式系統中工作是一個很好的選擇,特別是對於那些有電子背景的人來說。但不管你的背景如何,只要你下定決心,你幾乎可以學到任何東西。

Glassdoor 的數據顯示,在美國,嵌入式軟件開發人員的年薪在 5.8 萬美元至 11.2 萬美元之間,平均年薪為 8 萬美元。

如何在軟件開發行業選擇一條正確的職業道路?

數據科學

數據科學是一個多學科領域,使用科學的方法、過程、算法和系統從結構化和非結構化數據中提取知識和見解。儘管這是科技行業最熱門、薪酬最高的工作之一,但數據科學本身的歷史可能比你想象的還要悠久。

它是從數學、統計學、計算機科學和信息科學等多個領域中提取的技術和理論。同樣,數據科學並不是軟件工程的子集,但是大多數有數學背景的軟件工程師和計算機科學畢業生更容易進入這個領域。

如果你是初學者,我不會認為這是一個很好的選擇。數據科學主要是為那些已經在技術、統計學或類似領域有工作經驗的人準備的(當然,如果你下定了決心,這也不應該讓你氣餒)。使用數據科學時,需要理解的主題和工具包括:*

*線性代數

*非線性和動態系統

*解析幾何

*優化

*微積分

*統計和概率

*編程語言(R、Python、SAS、Java)

*軟件( Excel , SAS Enterprise Miner )

*通用的 DS 和 MLASS 平臺

*和 Analytics

*Azure Machine Learning Studio

*谷歌雲機器學習引擎

*BigML

*Rapidminer 和 KNIME

*Amazon SageMaker

*數據可視化:Power BI、Tableau、 使用 Plotly/ggplot/Highcharts 的 R/Python

*機器學習的知識(監督、非監督和強化學習)

*大數據( MapR 、 Redshift 、Snowflake、 BigQuery、 Cassandra 、Hadoop、 Spark )

*硬件(CPU、GPU、TPU、FPGA、ASIC)

雖然你不需要一開始就瞭解所有這些技術,但是為了保持競爭力,不斷學習是很重要的。

數據科學家通常在大公司和機構工作,年薪在 8.6 萬到 19 萬美元之間,平均年薪為 11.7 萬美元。

工具和企業

這個領域的工作涉及到創建工具,以便在機構或內部應用程序中使用,為你的公司創建更簡單的工作流,這是非常了不起和值得的。

然而,企業級的開發工作可能非常具有挑戰性,需要一套獨特的能力和知識。企業開發人員通常必須對組織及其策略有深刻的理解,這決定了如何構建軟件。同樣,如果你是剛剛開始職業生涯,則不建議使用此路徑。

企業工具通常是面向對象編程的,設計成可以跨多個業務夥伴運行。企業開發工具將程序和功能鏈接在一起,允許企業實體有效且高效地工作。

好的企業開發工具將包括 Allegro Common Lisp 、Java、C++ 接口、 SOAP 和 XML 支持。它應該包括為最高級功能工具開發的 CORBA ORB 數據庫連接,如果企業需要,它應該在工具集裡包含外部函數接口。適合此路徑的編程語言包括 Java、C#、Python、JavaScript、C 和 C++ 等。

這些開發者的收入在 6.2 萬至 11.7 萬美元之間,平均年薪為 8.7 萬美元。

雲計算

隨著越來越多的應用程序遷移到雲上,對雲領域的專業人員的需求不斷上升。這個領域的必備技能之一是雲安全。

認證雲安全專業人員(CCSP:Certified Cloud Security Professional )證書可以為你提供各種各樣的職業機會。基礎設施即服務(IAS:infrastructure-as-service)之爭已基本塵埃落定,亞馬遜網絡服務 AWS 、微軟 Azure 和谷歌雲平臺在市場上各有斬獲,其中 AWS 獲得了最大份額。

所需技能包括使用雲平臺的能力;數據庫(諸如 Mongo DB、 Apache CouchDB 或 SQL DB 之類的 NoSQL 數據庫;編程語言(Java、Python、C#、c++、JavaScript 等);Linux、數據獲取、信息安全和特定的 Web 技術,如 REST 和 Grails 。

雲開發者每年的收入在 7.3 萬到 8.3 萬美元之間,平均年薪為 7.7 萬美元。

軟件測試

軟件測試是評估軟件應用程序功能的過程,目的是確定它是否滿足指定的需求並識別其中任何的缺陷。有兩種類型的測試:手動測試和自動測試。如果你是一個編程新手,你可以把這看作是執行算法演習。作為一個軟件測試人員,你將:

  • 分析用戶的故事、用例,以及合理性和可行性的需求;
  • 與其他團隊成員和部門合作;
  • 執行所有級別的測試(系統、集成和迴歸測試);
  • 設計和開發自動化腳本;
  • 檢測和跟蹤軟件缺陷和不一致性;
  • 在整個敏捷產品生命週期中應用質量工程原則;以及
  • 提供支持和文檔。

熟練掌握自動化工具,例如 Selenium 、 Katalon Studio 、 TestComplete 、統一功能測試、 soapUI ,或者 Rational functional Tester ,等等,這些工具都是非常重要的。

編程知識是至關重要的。下面是一些測試時需要用到的語言和框架:

Javascript。流行的框架有: cucumber.js 、 Nightwatch 、 Protractor

Java。流行的框架包括: Gauge 、 TestNG 、 JUnit

Python。流行的框架包括: PyUnit 、 Lettuce 、 Behave

C#。流行的框架包括:Visual Studio 單元測試框架、 SpecFlow 、 NUnit

PHP。流行的框架包括: Codeception 、 Behat 、 SimpleTest

Ruby。流行的框架包括: Capybara 、 RSpec 、 minitest

Glassdoor 的數據顯示,美國軟件測試人員的全國平均年薪為 61977 美元,而經驗更豐富的人的年薪最高可達 8.4 萬美元。

DevOps

DevOps 表示開發加運維。它是一組使軟件開發團隊和 IT 團隊之間過程自動化的實踐操作,好讓他們可以更快、更可靠地構建、測試和發佈軟件。在更大程度上,DevOps 是一種強調思維方式轉變、更好的協作和更緊密集成的文化。

DevOps 工作內容的演變使得開發者掌控了更多的運維——這就是 Chef 的工作方式。我們再也不能把開發代碼直接扔出去了事。我們的工程師需要負責 QA、編寫和運行他們的測試,才能將軟件交付給客戶。—— Julian Dunn,Chef 的產品經理

DevOps 要求精通編程和腳本。

必須掌握 Gradle 、Git、Linux、 Jenkins 、 Docker 、 Kubernetes 、 Puppet 等工具。此外,DevOps 工程師應該瞭解基於數據中心和雲基礎設施的組件,並能夠確保系統具有針對常見網絡安全漏洞的防禦機制。

DevOps 專業人員的收入在 9.1 萬美元到 15.5 萬美元之間,具體取決於他們所在的地理位置。

如何在軟件開發行業選擇一條正確的職業道路?

人工智能

20 年前,人工智能和機器學習的概念還僅限於科幻電影。而現在它們已成為了我們日常生活的一部分,在未來十年,我們的社會將進一步依賴人工智能、機器學習、深度學習網絡等等。

人工智能不是軟件工程的子集,但大多數計算機科學家和軟件工程師正在轉向人工智能,或至少在他們的應用程序中使用一些人工智能。像谷歌這樣的大公司,例如,已經可以讓開發人員輕鬆地通過工具在他們的應用程序中包含人工智能的能力,如 ML 工具包:一個機器學習的工具包,其附帶許多 API,並且能夠給圖像打標,能檢測條形碼,文本,人臉和物體,具有自然語言處理等功能。

人工智能主要是模擬人類的智能處理。這些過程包括學習(獲取信息,獲取使用信息的規則)、推理(使用規則得出近似或明確的結論)和自我糾正。

流行的人工智能雲服務包括亞馬遜的人工智能服務, IBM 的沃森助手,微軟的認知服務和前面提到的谷歌人工智能服務。

以下是從事人工智能項目的主要語言:

  1. Python:Python 被認為是人工智能應用的首選。它的簡單性和強大的庫使它更容易實現 AI 算法。其中一些庫包括 NumPy 和 PyBrain ,前者有助於執行許多科學計算,後者使我們能夠在 Python 中使用機器學習。

2.R :說到統計計算,R 是最強大的語言之一。除了是一種通用語言外,R 還有許多包,如 RODBC 、gmodels、class 和 tm,它們都用於機器學習領域。這些包使得機器學習算法的實現更加容易。

3.Java:人工智能與搜索算法、人工神經網絡和遺傳算法有很大關聯性。Java 提供了許多好處:易於使用、易於調試、大量的包服務、簡化大型項目的工作、數據的圖形表示和更好的用戶交互。由於 Java 支持對 Apache Spark 和 Apache Hadoop 等大數據平臺的無縫訪問,它已經在數據分析相關的 AI 開發中鞏固了自己的地位。

4.Lisp:基於 Lambda 演算,Lisp 是人工智能領域最古老的語言之一。Lisp 可以被描述為計算機程序的實用數學符號。人工智能開發人員經常在機器學習任務繁重的 AI 項目中求助於 Lisp 語言,因為 Lisp 提供了快速原型化功能、對符號表達式的支持、一個集合類型庫,並且高度靈活,能夠滿足他們解決問題的需要。

你可能希望研究的其他語言包括 c++、JavaScript 和 Prolog 。

目前最流行的人工智能工具有 IBM 沃森、 Keras 、 scikit-learn 、 Swift AI 、TensorFlow、Theano 和 Torch。

結論

選擇正確的道路並不意味著你必須堅持到你的職業生涯結束,而是要去掌握這條特定的道路所需的技能。一旦你掌握了,你可能會決定學習新的東西,以擴展你的視野和知識。記住,你必須不斷學習。

點擊【右上角,關注 子瑜說IT 】持續更新IT資訊以及web前端開發教學

8年開發老碼農福利贈送:網頁製作,網站開發,web前端開發,從最零基礎開始的的HTML+CSS+JavaScript。jQuery,Ajax,node,angular框架等到移動端小程序項目實戰【視頻+工具+系統路線圖】都有整理,送給每一位對編程感興趣的小夥伴

獲取方式:

右上角有私信,請私信發我:01 即可獲取!

如何在軟件開發行業選擇一條正確的職業道路?


分享到:


相關文章: