2013-2014年間,全世界吹起一陣寫代碼的風潮,各大媒體瘋狂報導,鼓吹年輕人無論所學爲什麼,必定要學寫程序。時不時就會看到「程序員是最有錢途的工做之一!」或者「連奧巴馬都開始寫代碼,你能不開始嗎?」這類的文章,無論金錢誘惑、名人帶頭,彷彿全世界都在瘋狂的作程序。就算到了2015年末,不時仍有這類文章出現。相對之下,許多人認爲本身目前工做很糟糕,包括老闆高壓統治、工做內容乏味、薪水僅能餬口等等,看到文章裏頭那些「高薪」、「非凡成就」、「熱門職缺」的字眼,是否是都想轉行呢?今天就整理一些建議給你們,看看轉行作程序員以前必須考慮的三件事。前端
第一件事,程序員都在作什麼?程序員
首先,程序員的領域有許多種,我之前被電影騙了,覺得程序員就是電影裏頭的黑客,只要幾秒就能夠把很是大的系統架構給完成,凡提到入侵、破解、滲透等字眼,黑客均可以輕鬆處理。但說實在,「黑客」只不過是程序領域其中的一個範疇,舉凡手機軟件、網站、數據庫維護、服務器、大數據等等,每個領域都是一門專業,不光只是咱們日常看到「Google工程師」、「Apple工程師」那樣簡單的分類法。面試
因此,當各大媒體都在鼓吹轉職成程序員的時候,大部分談的都是軟件工程師(softwareengineer),最主要仍是由於軟件是咱們平常生活最常接觸到的,包括桌機軟件、手機軟件、網站,都是這幾年如火如荼在發展的項目。算法
如下說到的程序員,指的都是軟件工程師。因此工程師到底都在作什麼?就工做來講,不忽略如下五件事情:數據庫
1,跟其餘工程師討論安全
2,編寫代碼服務器
3,解決bug架構
4,和用戶溝通框架
5,和產品撕逼以及被老闆罵學習
對於水平比較初級的程序員,改BUG這個步驟會佔掉絕大部分的時間,並且過程是很是無聊且漫長的。找一位工程師問他處理過最愚蠢的錯誤,必定回答是「爲了找一個錯字耗了一成天」,聽起來有沒有很浪費時間?沒錯,就是這麼浪費時間!甚至,各類錯誤都是「屋漏偏逢連夜雨」,每當你最須要專心作其餘事的時候,錯誤就出現了,而後手邊本來規劃要作的事情就這樣擱置了,進度來不及,最後就被老闆罵。這絕對是剛學程序開發的常態。固然,在這些錯誤當中,咱們去學着如何寫出更好的程序,避開那些給本身埋下的地雷,減小錯誤發生的機率。隨着時間推動,咱們就不多再犯這樣愚蠢的錯誤。
但難道高手程序員就不用改BUG嗎?很遺憾,資深的工程師不僅要處理本身的錯誤,還要處理別人的錯誤,越資深遇到的問題越棘手。相信你們都知道很多企業會捧着大筆鈔票去找資深工程師,而這之中除了要寫新軟件之外,許多軟件開發都是要請人來擦屁股的。就像創業家面對各類經濟、心理、社會的壓力同樣,工程師就是在面對各類程序上的問題,有多是針對複雜程序當中產生的一個bug,也多是公司服務採用的技術發生了問題。
例如頗有名的GitHub攻擊事件,當你們都認爲RubyonRails技術很安全時,忽然被人抓出嚴重的安全漏洞,這時若是咱們在公司中恰巧使用了相同版本的RubyonRails,是否也所以要爲公司解決這個問題?
所以,在工程師生活中,其中一大要務就是要解決問題。若是天天都在面對這些狀況,本身是否還能樂在其中?
第二件事,不要被媒體的宣傳矇蔽了雙眼
程序員薪水超高?
行行出狀元,全部領域都有辦法賺取高薪,但對程序員來講,狀況比較符合「二八法則」,就像許多人說的:
工程師餓不死,但也存不了什麼錢。
無論是能力普通、只會聽命行事的程序員,或是遇人不淑、老闆吝嗇的程序員,大概都沒法取得高薪。如果半路出家的程序員,剛開始必然沒法期待有超高的薪水,也很難找到商機當即創業,尤爲轉職的籌碼較少,不像其餘工種的學生許多有底子、有做品,找工做較爲容易。
要談高薪,仍是得拿實力來談,如果沒法針對中型的軟件項目設計出良好的構架、或是對本身擅長的技術還不徹底瞭解,那對於薪水仍是不要有過高的期待,而這些都是須要經驗累積的。剛起步的程序員,對媒體報道分分鐘年薪百萬、贏取白富美,今後走向人生巔峯,這類天花亂墜的形容詞別想太多。
根據程序員客棧這麼多程序員的經歷,剛起步的程序員只要有耐心,絕對能找到一份工做薪資可供生活,外加存點小錢。身爲程序員,但願你們對廣泛薪資較低的狀況能有所抵制,對於太低的薪資要勇敢拒絕,接受的話只會聽任無良企業繼續用相同薪資僱用其餘程序員,加上本身生活質量和士氣也會跟薪資同樣低落。
轉行成爲程序員後是否美好?
真正轉行成爲程序員了之後,問題纔是接踵而來,不少事情等着探索。例如學歷就是一大難關,程序員這個行業是看重學歷的,固然這邊講的不是說必定要名校畢業,而是「本科系」這件事情是相對重要。我相信不少人都吃過這個虧,轉行前一度覺得能夠靠一股熱情打天下,卻不知在面試許多公司時,老闆聽到並不是本科系都會眉頭一皺。有一位好心的老闆在通知面試未錄取的時候,也同時說:
「工資是和學歷掛鉤的,這是全世界通用的法則,將來你想成爲資深開發者,這更是每位老闆都會看的。若是沒辦法再修一個學位,至少要能提出證實你對這些機器、算法等硬底子的學問都有點基本認識。」
雖然感到震撼,但這確實點醒了我,程序員並非單單會一項技能而已,而是要對整個領域略知一二。
另外一個難關就是要保持熱忱,程序開發技術推陳出新的速度超越其餘領域許多,在工做壓力下,許多人會選擇不去學習,致使進步的速度跟不上整個世界翻新的速度。可能有在接觸的人有聽過近幾年Web前端技術的戰國時代,從JavaScript延伸出來的框架多如繁星,從目前最熱門的ReactNative,到前一兩年竄起的Angular.js、Ember.js,外加以前打得火熱的Node.js和io.js戰爭,每年都有爆炸性的改變。
假如我今天是專精Web前端的工程師,在這些技術出現時,勢必要了解他們要解決的問題、優勢、缺點等等,並決定有沒有須要使用這些技術來改變現有的構架。例如公司現有構架是直接用純JavaScript實做變數即時更新,若是改用Angular.js,能夠大幅減小代碼的數量,直接交給該函式庫來處理。今天假如咱們沒有特別探究這些技術,將來在尋找其餘工做時,技術主管也會指望你稍微瞭解這些技術。簡單來講,你不前進,別人也會推着你前進。
這只是其中一個例子,程序開發領域在小地方都有無限多的變化,必須不斷學習、接受改變。轉職前,不少事情咱們想的很美好,但在轉職後,才知道這個領域有他本身的法則,在這邊沒法一一列舉,但無論怎樣,若是有決心、有熱情,這些難關對你來講只會是長遠路上的一塊小石頭。
第三件事,你對寫代碼真的那麼熱愛嗎?
對於熱情這件事,不得再也不次提到二八法則,由於有80%的熱門技術是由20%的人所構架出來。無論你將來所鑽研的是哪一種技術,總會在領域中有一些神人,他們能夠1我的就超越10個的產值,對該技術有很是完整且深奧的瞭解,而且針對難懂的問題有很是優雅的解法。這些人決定了將來技術的走向,例如目前市面上的大型商業軟件,許多都是由少數人將構架完成,後續纔是由許多工程師進行維護、更新。
你想成爲那些「大神」嗎?
雖然許多程序員作了一生也沒辦法,但仍然要保有那「想要成爲大神」的熱情,才能獲得擔任程序員的快樂。在生活中程序員不僅會遇到系統錯誤,更常會遇到使用者給予的意見,包括常在GooglePlay或AppStore上看到的評論:「這軟件超爛」、「一分都嫌過高」等等,沒有重點卻嚴重打擊士氣,也是生活中的一部分。反之,尤爲在大型項目上線,陸續收到使用者說回饋說:「使用上變得更方便了,謝謝大家!」這類舒適的評論讓人很是有成就感。抑或是在鑽研特別技術,而成功讓項目有大幅成長的時候,例如用Go語言將部分RubyonRails的API服務重寫,讓總體速度提高20倍以上,這些數據都會讓程序員很是有成就感,也是工做上很大的知足。
反之,當咱們只想着要天天安安穩穩的寫代碼、維護項目,以上那些狀況就絕對不會發生,咱們成天只會自怨自艾,對現況感到不滿卻不改善,把全部的錯都推給使用者、推給主管、推給別人。那不如不要轉行了,不妨待在本身目前的位子上,好好過生活便可。必定要充滿熱情,想要成爲「二八法則」中的領導者,跳進程序員這個圈子纔有意義。
小結
當你決定成爲一名程序員的的時候,你要對本身作的事情有熱情、想要不斷學習、發掘新知、研究新技術,不然轉行一點意義都沒有,若是想安穩過生活,不如就找一個安穩的工做,專心研究挖掘機技術吧,這樣的生活質量會比程序員好多了!