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

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

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

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

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

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

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

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

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

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

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

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開發人員都是全職工作。

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

移動開發

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

這也是非常具有企業家精神的,因為如果你足夠幸運的話,你可以開發自己的應用或遊戲並賺到數百萬美元。移動開發平臺有很多,但最流行的仍然是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和PhoneGap。

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

桌面開發

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

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

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

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

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萬美元甚至更少。

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

視頻遊戲開發

以前,當我玩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萬美元。

學習大數據技術,可以瞭解下加米穀大數據,理論+實踐小班學習,已培養出許多專業的大數據人才!

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

工具和企業

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

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

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

好的企業開發工具將包括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,等等,這些工具都是非常重要的。

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

  1. Javascript。流行的框架有:cucumber.js、Nightwatch、Protractor
  2. Java。流行的框架包括:Gauge、TestNG、JUnit
  3. Python。流行的框架包括:PyUnit、Lettuce、Behave
  4. C#。流行的框架包括:Visual Studio單元測試框架、SpecFlow、NUnit
  5. PHP。流行的框架包括:Codeception、Behat、SimpleTest
  6. Ruby。流行的框架包括:Capybara、RSpec、minitest

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

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

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。

在美國,大多數AI開發者的年薪在$97,000(第25百分位)到$143,000(第75百分位)之間。

結論

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

原文:How to Choose the Right Career Path in Software Development


分享到:


相關文章: