近年IT行業(yè)火得不要不要的轧拄,媒體瘋狂報(bào)道,各種方式鼓吹年輕人讽膏、畢業(yè)大學(xué)生檩电、轉(zhuǎn)行的人一定要學(xué)編程。時(shí)不時(shí)就會(huì)看到「程序員是最有錢途的工作之一桅打!」或者「連奧巴馬都開始寫代碼是嗜,你能不開始嗎?」這類的文章挺尾,不管金錢誘惑鹅搪、名人帶頭,仿佛全世界都在瘋狂做程序遭铺。就算到了現(xiàn)在丽柿,這樣的文章還是層出不窮。相比之下魂挂,許多人多自己的工作處境非常不滿:工作內(nèi)容乏味甫题、薪水僅能糊口等等,看到文章里頭那些「高薪」涂召、「出國工作」坠非、「熱門職缺」的字眼,是不是都想轉(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í)候瓢捉,大部分談的都是軟件工程師(software engineer),最主要還是因?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)為 Ruby on Rails 技術(shù)很安全時(shí)簸搞,突然被人抓出嚴(yán)重的安全漏洞扁位,這時(shí)如果我們?cè)诠局星∏墒褂昧讼嗤姹镜?Ruby on Rails,是否也因此要為公司解決這個(gè)問題趁俊?
因此域仇,在工程師生活中,其中一大要?jiǎng)?wù)就是要解決問題寺擂。如果每天都在面對(duì)這些情況暇务,自己是否還能樂在其中泼掠?
第二件事,不要被媒體的宣傳蒙蔽了雙眼
程序員薪水超高垦细?
行行出狀元择镇,所有領(lǐng)域都有辦法賺取高薪,但對(duì)程序員來說括改,情況比較符合「80/20 法則」腻豌,就像許多人說的:工程師餓不死,但也存不了什么錢嘱能。
不管是能力普通吝梅、只會(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í)慰于。”
雖然感到震撼唤衫,但這確實(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ù)出現(xiàn)時(shí),勢(shì)必要了解他們要解決的問題筒繁、優(yōu)點(diǎn)噩凹、缺點(diǎn)等等,并決定有沒有需要使用這些技術(shù)來改變現(xiàn)有的構(gòu)架毡咏。例如公司現(xiàn)有構(gòu)架是直接用純 Java 實(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)橛?80% 的熱門技術(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ì)遇到使用者給予的意見蜀撑,包括常在 Google Play 或 App Store 上看到的評(píng)論:「這軟件超爛」、「一分都嫌太高」等等剩彬,沒有重點(diǎn)卻嚴(yán)重打擊士氣酷麦,也是生活中的一部分。反之喉恋,尤其在大型項(xiàng)目上線沃饶,陸續(xù)收到使用者說回饋說:「使用上變得更方便了,謝謝你們瀑晒!」這類溫馨的評(píng)論讓人非常有成就感绍坝。抑或是在鉆研特別技術(shù),而成功讓項(xiàng)目有大幅成長的時(shí)候苔悦,例如用 Go 語言將部分 Ruby on Rails 的 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è)無聊的工作临庇,專心研究股市吧反璃,這樣的生活質(zhì)量會(huì)比程序員好多了昵慌!