我們可不可以不憂傷

蘋果

今年的新 iPhone 你們也看到了。

旗艦款——iPhone Xs,iPhone Xs Max。

還有個(gè)五光十色“廉價(jià)版”

——iPhone Xr

發(fā)布會(huì)一結(jié)束,我看我的朋友圈就看到有人訂購了,聽說新iPhone太難買了,為什么難呢?因?yàn)橛囝~不足唄;螞蟻花唄不夠用唄;信用卡不夠刷唄;

但是羅馬不是一日建成的,蘋果也不是一天就貴起來的,然而最扎心的是,新款iPhone價(jià)格破萬,你還沒有月薪過萬。

想要

月薪過萬,選對(duì)行業(yè)、崗位很重要

在我們身邊,經(jīng)常聽得到別人家的工資,動(dòng)則就是一萬起;近年來北京上海的平均工資,也都遠(yuǎn)遠(yuǎn)超過了一萬;甚至不久前,一位在公園為女兒相親的上海老大爺直言:月薪一萬是討飯。

乍一看,好像月薪過萬真是一件再稀松平常不過的事,所以在總的概率上講,想要月薪過萬,還是挺難的?

數(shù)據(jù)顯示:2017年全國主動(dòng)申報(bào)個(gè)稅人數(shù),也就是年收入12萬以上的人數(shù),大概1500萬,就算沒主動(dòng)申報(bào)個(gè)稅的也是1500萬,那月薪過萬的總?cè)丝谝膊贿^3000萬。而2017年全國總的就業(yè)人口,超過7.7億,也就是月薪過萬的人數(shù)占總就業(yè)人數(shù)不到5%。

月薪

過萬,你就打敗了至少95%的職場(chǎng)人。

并且,想要月薪過萬,還很大程度上跟工作經(jīng)驗(yàn)、行業(yè)、崗位等有關(guān)。

工作時(shí)間越長(zhǎng),工資越高;互聯(lián)網(wǎng)行業(yè),相比傳統(tǒng)的制造業(yè)、農(nóng)林牧副漁要有更高的薪酬;技術(shù)崗普遍比職能崗待遇高。

月薪

過萬,都是什么職業(yè)?

互聯(lián)網(wǎng)行業(yè)這幾年一直是“朝陽行業(yè)”。無論是前段時(shí)間鼓吹是下一個(gè)風(fēng)口的“人工智能”,還是近來爆火的“區(qū)域鏈”,互聯(lián)網(wǎng)行業(yè)一直處于“爆炸式上升”的階段,各大互聯(lián)網(wǎng)公司對(duì)畢業(yè)生開出的價(jià)位也越來越高,甚至到了“不過萬就無人問津”的程度,月入過萬者多如牛毛。

那怎么樣才能做到月薪過萬的程序員呢?

一、用技能賺錢

現(xiàn)在,有這樣一種主流觀念,壓垮了很多新手軟件開發(fā)者,那就是你需要學(xué)習(xí)很多東西才能成為軟件開發(fā)人員,并且很多人不知道從哪里開始起步。

這里我會(huì)嘗試著具體說明那些在你追求成為軟件開發(fā)人員的路上將讓你受益的必要技術(shù)技能。

二、

編程語言

不懂編程語言,怎么能成為一個(gè)真正的程序員?

許多新手程序員會(huì)試圖一次性或在第一份工作之前學(xué)習(xí)幾種編程語言,以便于有備無患。

雖然我個(gè)人認(rèn)為你應(yīng)該學(xué)會(huì)一種以上編程語言,但是不建議提前這樣做,因?yàn)檫@只會(huì)導(dǎo)致混亂,并且會(huì)分散你需要學(xué)習(xí)的其他技能的精力。

相反,我建議你應(yīng)該深入研究,重點(diǎn)學(xué)習(xí)單一編程語言的來龍去脈,這樣你才能對(duì)用這種編碼語言來寫代碼信心十足。

那么在你決定想要成為什么樣的開發(fā)人員的時(shí)候,怎么樣才能盡可能地獨(dú)樹一幟呢?

三、

如何構(gòu)造代碼

在學(xué)習(xí)了一門編程語言之后——或者最好是在學(xué)習(xí)的同時(shí)——我堅(jiān)信,你需要知道的下一件事就是如何正確地構(gòu)造你的代碼。

我所

說的構(gòu)造代碼是什么意思呢?

我的意思是,要寫出好的,清晰的,易于理解的代碼,不需要大量注釋,因?yàn)榇a本身就是一種表達(dá)方式。

很多軟件開發(fā)者在他們整個(gè)職業(yè)生涯都不曾去學(xué)習(xí)這個(gè)技能,這是不幸的,因?yàn)檫@是你的老板判斷一個(gè)軟件開發(fā)人員技術(shù)和能力的主要方式。

良好的代碼結(jié)構(gòu)展示了對(duì)這種技藝的熱衷,而不僅僅是為了完成工作。

構(gòu)建代碼是軟件開發(fā)真正的藝術(shù)部分,但它也是至關(guān)重要的,因?yàn)槟愫湍愕耐碌没ㄙM(fèi)相當(dāng)多的時(shí)間來維護(hù)現(xiàn)有的代碼,而不是編寫新的代碼。

四、

面向?qū)ο蟮脑O(shè)計(jì)

這一條是有爭(zhēng)議的,特別是如果你正在學(xué)習(xí)的編程語言并不面向?qū)ο螅怯写罅康能浖_發(fā)世界會(huì)按照面向?qū)ο笤O(shè)計(jì)的思維思考,所以你需要確保你了解它。

面向?qū)ο蟮脑O(shè)計(jì)是一種將復(fù)雜程序設(shè)計(jì)分解為單獨(dú)的類或?qū)ο螅惖膶?shí)例)的方法,其中封裝功能且具有特定的角色和責(zé)任。

在軟

件開發(fā)中,我們總是試圖管理復(fù)雜性。

從對(duì)象的角度思考可以幫助我們做到這一點(diǎn),因?yàn)樗茏屛覀儚囊欢呀换ソM件中定義并設(shè)計(jì)一個(gè)復(fù)雜的系統(tǒng),而不是作為一個(gè)整體的試圖解決整個(gè)復(fù)雜性。

現(xiàn)在的編程世界有著大量的函數(shù)式編程語言,但你在軟件開發(fā)中找到的最流行的語言和模式,仍然深受面向?qū)ο笤O(shè)計(jì)和分析的影響。

你應(yīng)該好好理解什么是類,繼承的不同類型——何時(shí)使用它們——還有理解像多態(tài)性和封裝等術(shù)語。

五、

算法和數(shù)據(jù)結(jié)構(gòu)

如果你上傳統(tǒng)院校學(xué)習(xí)并想獲得計(jì)算機(jī)科學(xué)學(xué)位的話,那么這是一個(gè)很大的考點(diǎn)。

算法是解決各種計(jì)算機(jī)科學(xué)/編程問題的常用方法。

例如,有若干常見的在程序上用于排序的算法。每一種排序算法都有一系列關(guān)于速度,內(nèi)存大小要求,以及數(shù)據(jù)理想類型的不同屬性。

計(jì)算機(jī)科學(xué)領(lǐng)域有很多這樣的算法,并且理解如何變化這些算法來解決你可能遇到的棘手問題也很重要,當(dāng)你解決現(xiàn)實(shí)編程問題的時(shí)候。

通常情況下,擅長(zhǎng)這些算法可以讓一個(gè)開發(fā)人員在1個(gè)小時(shí)之內(nèi)就能解決可能需要另一個(gè)開發(fā)人員幾天時(shí)間才能搞清楚的問題。

除非你熟悉和擅長(zhǎng)算法,否則你甚至不知道已經(jīng)有了優(yōu)雅的解決方案在那里。因此,僅僅只為這個(gè)原因,我認(rèn)為這也是一個(gè)值得掌握的寶貴技能。

數(shù)據(jù)結(jié)構(gòu)也是如此,并且可以與算法結(jié)合使用。

有幾個(gè)所有軟件開發(fā)者都應(yīng)該熟悉數(shù)據(jù)結(jié)構(gòu)中的,包括:

數(shù)組或向量

鏈表

堆棧

隊(duì)列

哈希

集合

通過熟練掌握數(shù)據(jù)結(jié)構(gòu)和算法,你可以輕松又優(yōu)雅地解決許多艱難的編程問題。

學(xué)習(xí)這些東西是一個(gè)挑戰(zhàn),但非常值得。這是可以讓你超越眾多同行的技能之一。大多數(shù)軟件開發(fā)人員都不擅長(zhǎng)這個(gè)領(lǐng)域。

如果你想通過如微軟或谷歌這樣的大公司的面試,那么你一定得掌握這個(gè)技能集。

六、

開發(fā)平臺(tái)及相關(guān)技術(shù)

你應(yīng)該具備一些經(jīng)驗(yàn),并至少掌握一個(gè)開發(fā)平臺(tái)以及與之相關(guān)的技術(shù)或框架。

我所

說的平臺(tái)是什么意思呢?

通常它的意思是操作系統(tǒng)(OS),但也適用于其他可以充當(dāng)類似于操作系統(tǒng)角色的抽象。

例如,你可以是專注于Mac或Windows操作系統(tǒng)得Mac開發(fā)者或Windows開發(fā)者,你也可以是一名專注于特定的web平臺(tái)的web開發(fā)人員。

具體確切的關(guān)于平臺(tái)是什么就不討論了——不同的人會(huì)有不同的看法——但這里我要定義平臺(tái)為你開發(fā)的特定環(huán)境,它有自己的生態(tài)系統(tǒng)和特殊性。

再者,這是另一個(gè)我認(rèn)為選擇并非那么重要的技術(shù)技能,只要你選擇了一個(gè)就好。

企業(yè)通常會(huì)聘請(qǐng)開發(fā)人員針對(duì)特定的平臺(tái)或技術(shù)開發(fā)軟件。

你作為iOS開發(fā)者將更容易找到工作,如果你專業(yè)于那個(gè)特定平臺(tái)的話。

這意味著要熟悉平臺(tái)本身,以及開發(fā)工具,慣用模式,還有大多數(shù)程序員在為那個(gè)平臺(tái)開發(fā)時(shí)會(huì)使用的通用框架。

你可能會(huì)認(rèn)為編程語言的選擇決定了平臺(tái),但實(shí)際上事實(shí)情況很少是這樣的。

就拿C#舉例。如果你是一個(gè)C#開發(fā)人員,那么你可以用這種編程語言為Windows,Mac,iOS,Android,Linux,甚至是嵌入式系統(tǒng)寫代碼。

所以,不要僅僅只是選擇語言;還要選擇平臺(tái)。

七、

框架或堆棧

除了學(xué)習(xí)特定的編程語言和平臺(tái),我高度建議去學(xué)習(xí)框架,或者更好的是,與之相配套的完整的開發(fā)堆棧。

什么是框架?

什么是堆棧?

框架就是一系列被用于在特定平臺(tái)或多個(gè)平臺(tái)上開發(fā)代碼的庫。它通??梢允沟迷谠撈脚_(tái)上的編程任務(wù)變得更加容易。

看這個(gè)C#的例子。大多數(shù)C#開發(fā)人員使用.NET框架來編寫C#應(yīng)用程序。 .NET框架包括許多庫和類,能夠讓C#開發(fā)人員在更高的抽象級(jí)別上工作,因?yàn)槊慨?dāng)他想做什么事情的時(shí)候,沒有必要完全重新發(fā)明輪子。

例如,.NET框架的部分還包含了處理圖像的代碼。這類代碼從頭編寫是極其困難的,所以框架極大地幫助了C#開發(fā)人員去編寫需要以某種方式處理圖像的代碼。

堆棧則有點(diǎn)不同。堆棧是一組技術(shù),通常包括一個(gè)框架,并且常一起用于創(chuàng)造一個(gè)完整的應(yīng)用程序。

例如,有一個(gè)常見的稱為MEAN的棧。它代表MongoDB,Express.js,AngularJS,和Node.js。

Mong

oDB是一個(gè)數(shù)據(jù)庫技術(shù)。

Express.js是一個(gè)用于創(chuàng)建web應(yīng)用程序的Node.js框架。

AngularJS是一個(gè)用于為web應(yīng)用程序創(chuàng)建用戶界面的前端Java框架。

最后,Node.js是一個(gè)用Java開發(fā)基于web應(yīng)用程序的運(yùn)行時(shí)環(huán)境。

有沒有理解所有這些東西并不重要—— 除非你打算成為一個(gè)MEAN開發(fā)者——重要的是要明白,如果你知道所有這些技術(shù)和框架,那么你就能夠開發(fā)一個(gè)完整的web應(yīng)用程序。

棧使得創(chuàng)建應(yīng)用程序變得更容易,因?yàn)樗鼈兲峁┝艘环N許多開發(fā)者用來開發(fā)應(yīng)用程序的通用范式,因此知識(shí)可以很容易地共享,并且你也能確定哪些特定的技能集市可以一起工作的。

學(xué)習(xí)堆棧真的是非常有價(jià)值,因?yàn)檫@意味著你擁有開發(fā)一個(gè)完整的應(yīng)用程序所有必要的技能。很多使用特定堆棧開發(fā)應(yīng)用程序的企業(yè),更愿意雇用那些熟悉那類堆棧能夠立馬開展工作的軟件開發(fā)人員。

八、

基礎(chǔ)數(shù)據(jù)庫知識(shí)

即使數(shù)據(jù)庫的景色在過去幾年時(shí)間里已經(jīng)改變了不少,但我不認(rèn)為數(shù)據(jù)庫會(huì)很快消失,因此對(duì)此了解一二總是不會(huì)錯(cuò)的,對(duì)吧?

當(dāng)前主要有兩種數(shù)據(jù)庫技術(shù):關(guān)系數(shù)據(jù)庫和文檔數(shù)據(jù)庫。

現(xiàn)在的開發(fā)人員至少應(yīng)該熟悉關(guān)系數(shù)據(jù)庫,并稍微了解文檔數(shù)據(jù)庫。

在軟件開發(fā)中,數(shù)據(jù)庫經(jīng)常被用來存儲(chǔ)應(yīng)用程序的數(shù)據(jù)。

當(dāng)然,有些團(tuán)隊(duì)甚至有專門的數(shù)據(jù)庫開發(fā)人員或數(shù)據(jù)庫管理員(DBA),但是這并不能真正允許你不懂至少是基本的數(shù)據(jù)庫知識(shí)。

最起碼,你應(yīng)該知道:

數(shù)據(jù)庫如何工作

如何執(zhí)行基本的查詢來獲取數(shù)據(jù)

如何插入、更新和刪除數(shù)據(jù)

如何連接數(shù)據(jù)集

此外,你可能會(huì)想知道如何以編程方式從你的代碼與你所選擇的平臺(tái)和/或框架檢索和存儲(chǔ)數(shù)據(jù)。

大多數(shù)開發(fā)者被期待能夠編寫與數(shù)據(jù)庫進(jìn)行交互代碼。

九、源代碼控制

源代碼控制是任何軟件開發(fā)項(xiàng)目的組成部分。

在我們使用源代碼控制之前,我們必須在網(wǎng)絡(luò)上共享項(xiàng)目的所有文件,或者通過U盤來回查看存儲(chǔ)在上面的不同軟件版本。

當(dāng)前,幾乎所有專業(yè)的開發(fā)者人員都被期待懂得如何使用源代碼控制來反復(fù)檢查代碼,并希望懂得合并來自多個(gè)源的變化。

最基本層面的源代碼控制可以讓你保持在一個(gè)軟件項(xiàng)目中對(duì)不同的文件所做更改的歷史記錄。

它還允許多個(gè)開發(fā)人員在同一時(shí)間工作于相同的代碼,然后合并這些更改。

具體就不細(xì)說了,但你應(yīng)該知道如何熟練地使用至少一個(gè)源代碼控制系統(tǒng),并且你應(yīng)該熟悉大多數(shù)基本的源控制概念。

在當(dāng)今軟件開發(fā)領(lǐng)域,幾乎所有專業(yè)的軟件開發(fā)團(tuán)隊(duì)都會(huì)使用某種源代碼控制。

十、

構(gòu)建和部署

現(xiàn)在,大多數(shù)軟件開發(fā)項(xiàng)目都有著某種自動(dòng)化的構(gòu)建和部署系統(tǒng)。

有幾種不同的軟件應(yīng)用程序,可以幫助軟對(duì)自動(dòng)化這兩個(gè)任務(wù),曾經(jīng)是手動(dòng),當(dāng)然對(duì)于某些團(tuán)隊(duì)而言,現(xiàn)在仍然如此。

你問什么是構(gòu)建和部署?

你知道如何寫代碼,并檢入到源控制系統(tǒng)嗎?

擁有一些方法來確保代碼可在你檢入后真正能工作很不錯(cuò)。

這就

是構(gòu)建系統(tǒng)的用武之地。

最起碼,構(gòu)建系統(tǒng)將編譯所有代碼,并確保沒有編譯錯(cuò)誤。

一個(gè)復(fù)雜的構(gòu)建系統(tǒng)可以運(yùn)行單元測(cè)試或用戶測(cè)試,運(yùn)行代碼質(zhì)量檢查,并提供關(guān)于代碼庫當(dāng)前狀態(tài)的一些報(bào)告。

部署系統(tǒng)將負(fù)責(zé)部署代碼要么到生產(chǎn)機(jī)器要么可能到某種測(cè)試環(huán)境。

你不必成為這些技術(shù)的絕對(duì)專家,但是了解至少這些系統(tǒng)如何工作的基礎(chǔ)知識(shí),以及構(gòu)建和部署代碼的過程,是非常重要的。

通常情況下,創(chuàng)建和維護(hù)構(gòu)建和部署系統(tǒng)的實(shí)際職責(zé)屬于所謂的DevOps(developer operations的簡(jiǎn)寫)——這個(gè)快速增長(zhǎng)的領(lǐng)域。

以上

這些你都get到了嗎?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,971評(píng)論 2 59
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評(píng)論 25 709
  • 2018-08-18 (稻盛哲學(xué)學(xué)習(xí)會(huì))打卡第136天 姓名:王燕君 部門:分水碶 組別:利他三組 【知~學(xué)習(xí)】 ...
    王燕君分水碶閱讀 3,120評(píng)論 0 1
  • 創(chuàng)建預(yù)設(shè)使用Resources.Load加載預(yù)設(shè)資源到場(chǎng)景
    俊瑤先森閱讀 2,625評(píng)論 0 0
  • 這么久了,我一直懷疑夢(mèng)中帶給我將來的啟示,我感到那些將要發(fā)生的事是那么詭異神奇,這些不期而至的幻覺不時(shí)出現(xiàn)在...
    懃心閱讀 203評(píng)論 0 0

友情鏈接更多精彩內(nèi)容