2013-2014年間,全世界吹起一陣寫代碼的風(fēng)潮,各大媒體瘋狂報(bào)導(dǎo),鼓吹年輕人不管所學(xué)為何,一定要學(xué)寫程序。時(shí)不時(shí)就會(huì)看到“程序員是最有錢途的工作之一!”或者“連奧巴馬都開始寫代碼,你能不開始嗎?”這類的文章,不管金錢誘惑、名人帶頭,仿佛全世界都在瘋狂的做程序。就算到了2015年底,不時(shí)仍有這類文章出現(xiàn)。相對(duì)之下,許多人認(rèn)為自己目前工作很糟糕,包括老板高壓統(tǒng)治、工作內(nèi)容乏味、薪水僅能糊口等等,看到文章里頭那些“高薪”、“非凡成就”、“熱門職缺”的字眼,是不是都想轉(zhuǎn)行呢?今天就整理一些建議給大家,看看轉(zhuǎn)行做程序員之前必須考慮的三件事。
第一件事,程序員都在做什么?
首先,程序員的領(lǐng)域有許多種,我以前被電影騙了,以為程序員就是電影里頭的黑客,只要幾秒就可以把非常大的系統(tǒng)架構(gòu)給完成,凡提到入侵、破解、滲透等字眼,黑客都可以輕松處理。但說實(shí)在,“黑客”只不過是程序領(lǐng)域其中的一個(gè)范疇,舉凡手機(jī)軟件、網(wǎng)站、數(shù)據(jù)庫維護(hù)、服務(wù)器、大數(shù)據(jù)等等,每一個(gè)領(lǐng)域都是一門專業(yè),不光只是我們平常看到“Google工程師”、“Apple工程師”那樣簡(jiǎn)單的分類法。
所以,當(dāng)各大媒體都在鼓吹轉(zhuǎn)職成程序員的時(shí)候,大部分談的都是軟件工程師(softwareengineer),最主要還是因?yàn)檐浖俏覀內(nèi)粘I钭畛=佑|到的,包括桌機(jī)軟件、手機(jī)軟件、網(wǎng)站,都是這幾年如火如荼在發(fā)展的項(xiàng)目。
以下說到的程序員,指的都是軟件工程師。所以工程師到底都在做什么?就工作來說,不忽略以下五件事情:
1,跟其他工程師討論
2,編寫代碼
3,解決bug
4,和用戶溝通
5,和產(chǎn)品撕逼以及被老板罵
對(duì)于水平比較初級(jí)的程序員,改BUG這個(gè)步驟會(huì)占掉絕大部分的時(shí)間,而且過程是非常無聊且漫長的。找一位工程師問他處理過最愚蠢的錯(cuò)誤,一定回答是“為了找一個(gè)錯(cuò)字耗了一整天”,聽起來有沒有很浪費(fèi)時(shí)間?沒錯(cuò),就是這么浪費(fèi)時(shí)間!甚至,各種錯(cuò)誤都是“屋漏偏逢連夜雨”,每當(dāng)你最需要專心做其他事的時(shí)候,錯(cuò)誤就出現(xiàn)了,然后手邊原本規(guī)劃要做的事情就這樣擱置了,進(jìn)度來不及,最后就被老板罵。這絕對(duì)是剛學(xué)程序開發(fā)的常態(tài)。當(dāng)然,在這些錯(cuò)誤當(dāng)中,我們?nèi)W(xué)著如何寫出更好的程序,避開那些給自己埋下的地雷,減少錯(cuò)誤發(fā)生的機(jī)率。隨著時(shí)間推進(jìn),我們就很少再犯這樣愚蠢的錯(cuò)誤。
但難道高手程序員就不用改BUG嗎?很遺憾,資深的工程師不只要處理自己的錯(cuò)誤,還要處理別人的錯(cuò)誤,越資深遇到的問題越棘手。相信大家都知道不少企業(yè)會(huì)捧著大筆鈔票去找資深工程師,而這之中除了要寫新軟件以外,許多軟件開發(fā)都是要請(qǐng)人來擦屁股的。就像創(chuàng)業(yè)家面對(duì)各種經(jīng)濟(jì)、心理、社會(huì)的壓力一
樣,工程師就是在面對(duì)各種程序上的問題,有可能是針對(duì)復(fù)雜程序當(dāng)中產(chǎn)生的一個(gè)bug,也可能是公司服務(wù)采用的技術(shù)發(fā)生了問題。
例如很有名的GitHub攻擊事件,當(dāng)大家都認(rèn)為RubyonRails技術(shù)很安全時(shí),突然被人抓出嚴(yán)重的安全漏洞,這時(shí)如果我們?cè)?a target="_blank">公司中恰巧使用了相同版本的RubyonRails,是否也因此要為公司解決這個(gè)問題?
因此,在工程師生活中,其中一大要?jiǎng)?wù)就是要解決問題。如果每天都在面對(duì)這些情況,自己是否還能樂在其中?
第二件事,不要被媒體的宣傳蒙蔽了雙眼
程序員薪水超高?
行行出狀元,所有領(lǐng)域都有辦法賺取高薪,但對(duì)程序員來說,情況比較符合“二八法則”,就像許多人說的:
工程師餓不死,但也存不了什么錢。
不管是能力普通、只會(huì)聽命行事的程序員,或是遇人不淑、老板吝嗇的程序員,大概都無法取得高薪。若是半路出家的程序員,剛開始必然無法期待有超高的薪水,也很難找到商機(jī)立即創(chuàng)業(yè),尤其轉(zhuǎn)職的籌碼較少,不像其他工種的學(xué)生許多有底子、有作品,找工作較為容易。
要談高薪,還是得拿實(shí)力來談,若是無法針對(duì)中型的軟件項(xiàng)目設(shè)計(jì)出良好的構(gòu)架、或是對(duì)自己擅長的技術(shù)還不完全了解,那對(duì)于薪水還是不要有太高的期待,而這些都是需要經(jīng)驗(yàn)累積的。剛起步的程序員,對(duì)媒體報(bào)道分分鐘年薪百萬、贏取白富美,從此走向人生巔峰,這類天花亂墜的形容詞別想太多。
根據(jù)程序員客棧這么多程序員的經(jīng)歷,剛起步的程序員只要有耐心,絕對(duì)能找到一份工作薪資可供生活,外加存點(diǎn)小錢。身為程序員,希望大家對(duì)普遍薪資較低的情況能有所抵制,對(duì)于過低的薪資要勇敢拒絕,接受的話只會(huì)放任無良企業(yè)繼續(xù)用相同薪資雇用其他程序員,加上自己生活質(zhì)量和士氣也會(huì)跟薪資一樣低落。
轉(zhuǎn)行成為程序員后是否美好?
真正轉(zhuǎn)行成為程序員了以后,問題才是接踵而來,很多事情等著探索。例如學(xué)歷就是一大難關(guān),程序員這個(gè)行業(yè)是看重學(xué)歷的,當(dāng)然這邊講的不是說一定要名校畢業(yè),而是“本科系”這件事情是相對(duì)重要。我相信很多人都吃過這個(gè)虧,轉(zhuǎn)行前一度以為可以靠一股熱情打天下,殊不知在面試許多公司時(shí),老板聽到并非本科系都會(huì)眉頭一皺。有一位好心的老板在通知面試未錄取的時(shí)候,也同時(shí)說:
“工資是和學(xué)歷掛鉤的,這是全世界通用的法則,未來你想成為資深開發(fā)者,這更是每位老板都會(huì)看的。如果沒辦法再修一個(gè)學(xué)位,至少要能提出證明你對(duì)這些機(jī)器、算法等硬底子的學(xué)問都有點(diǎn)基本認(rèn)識(shí)?!?/p>
雖然感到震撼,但這確實(shí)點(diǎn)醒了我,程序員并不是單單會(huì)一項(xiàng)技能而已,而是要對(duì)整個(gè)領(lǐng)域略知一二。
另一個(gè)難關(guān)就是要保持熱忱,程序開發(fā)技術(shù)推陳出新的速度超越其他領(lǐng)域許多,在工作壓力下,許多人會(huì)選擇不去學(xué)習(xí),導(dǎo)致進(jìn)步的速度跟不上整個(gè)世界翻新的速度。可能有在接觸的人有聽過近幾年Web前端技術(shù)的戰(zhàn)國時(shí)代,從JavaScript延伸出來的框架多如繁星,從目前最熱門的ReactNative,到前一兩年竄起的Angular.js、Ember.js,外加之前打得火熱的Node.js和io.js戰(zhàn)爭(zhēng),每一年都有爆炸性的改變。
假如我今天是專精Web前端的工程師,在這些技術(shù)出現(xiàn)時(shí),勢(shì)必要了解他們要解決的問題、優(yōu)點(diǎn)、缺點(diǎn)等等,并決定有沒有需要使用這些技術(shù)來改變現(xiàn)有的構(gòu)架。例如公司現(xiàn)有構(gòu)架是直接用純JavaScript實(shí)作變數(shù)即時(shí)更新,如果改用Angular.js,可以大幅減少代碼的數(shù)量,直接交給該函式庫來處理。今天假如我們沒有特別探究這些技術(shù),未來在尋找其他工作時(shí),技術(shù)主管也會(huì)期望你稍微了解這些技術(shù)。簡(jiǎn)單來說,你不前進(jìn),別人也會(huì)推著你前進(jìn)。
這只是其中一個(gè)例子,程序開發(fā)領(lǐng)域在小地方都有無限多的變化,必須不斷學(xué)習(xí)、接受改變。轉(zhuǎn)職前,很多事情我們想的很美好,但在轉(zhuǎn)職后,才知道這個(gè)領(lǐng)域有他自己的法則,在這邊無法一一列舉,但不管怎樣,如果有決心、有熱情,這些難關(guān)對(duì)你來說只會(huì)是長遠(yuǎn)路上的一塊小石頭。
第三件事,你對(duì)寫代碼真的那么熱愛嗎?
對(duì)于熱情這件事,不得不再次提到二八法則,因?yàn)橛?0%的熱門技術(shù)是由20%的人所構(gòu)架出來。不管你未來所鉆研的是哪種技術(shù),總會(huì)在領(lǐng)域中有一些神人,他們可以1個(gè)人就超越10個(gè)的產(chǎn)值,對(duì)該技術(shù)有非常完整且深?yuàn)W的了解,并且針對(duì)難懂的問題有非常優(yōu)雅的解法。這些人決定了未來技術(shù)的走向,例如目前市面上的大型商業(yè)軟件,許多都是由少數(shù)人將構(gòu)架完成,后續(xù)才是由許多工程師進(jìn)行維護(hù)、更新。
你想成為那些“大神”嗎?
雖然許多程序員做了一輩子也沒辦法,但仍然要保有那“想要成為大神”的熱情,才能得到擔(dān)任程序員的快樂。在生活中程序員不只會(huì)遇到系統(tǒng)錯(cuò)誤,更常會(huì)遇到使用者給予的意見,包括常在GooglePlay或AppStore上看到的評(píng)論:“這軟件超爛”、“一分都嫌太高”等等,沒有重點(diǎn)卻嚴(yán)重打擊士氣,也是生活中的一部分。反之,尤其在大型項(xiàng)目上線,陸續(xù)收到使用者說回饋說:“使用上變得更方便了,謝謝你們!”這類溫馨的評(píng)論讓人非常有成就感。抑或是在鉆研特別技術(shù),而成功讓項(xiàng)目有大幅成長的時(shí)候,例如用Go語言將部分RubyonRails的API服務(wù)重寫,讓整體速度提升20倍以上,這些數(shù)據(jù)都會(huì)讓程序員非常有成就感,也是工作上很大的滿足。
反之,當(dāng)我們只想著要每天安安穩(wěn)穩(wěn)的寫代碼、維護(hù)項(xiàng)目,以上那些情況就絕對(duì)不會(huì)發(fā)生,我們整天只會(huì)自怨自艾,對(duì)現(xiàn)況感到不滿卻不改善,把所有的錯(cuò)都推給使用者、推給主管、推給別人。那不如不要轉(zhuǎn)行了,不妨待在自己目前的位子上,好好過生活即可。一定要充滿熱情,想要成為“二八法則”中的領(lǐng)導(dǎo)者,跳進(jìn)程序員這個(gè)圈子才有意義。
小結(jié)
當(dāng)你決定成為一名程序員的的時(shí)候,你要對(duì)自己做的事情有熱情、想要不斷學(xué)習(xí)、發(fā)掘新知、研究新技術(shù),否則轉(zhuǎn)行一點(diǎn)意義都沒有,如果想安穩(wěn)過生活,不如就找一個(gè)安穩(wěn)的工作,專心研究挖掘機(jī)技術(shù)吧,這樣的生活質(zhì)量會(huì)比程序員好多了!
責(zé)任編輯:wv
-
程序員
+關(guān)注
關(guān)注
4文章
949瀏覽量
29744
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論