1. 程式人生 > >轉行做程式設計師之前必須考慮的三件事

轉行做程式設計師之前必須考慮的三件事

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倍以上,這些資料都會讓程式設計師非常有成就感,也是工作上很大的滿足。

在這裡插入圖片描述

反之,當我們只想著要每天安安穩穩的寫程式碼、維護專案,以上那些情況就絕對不會發生,我們整天只會自怨自艾,對現況感到不滿卻不改善,把所有的錯都推給使用者、推給主管、推給別人。那不如不要轉行了,不妨待在自己目前的位子上,好好過生活即可。一定要充滿熱情,想要成為“二八法則”中的領導者,跳程序序員這個圈子才有意義。
小結

當你決定成為一名程式設計師的的時候,你要對自己做的事情有熱情、想要不斷學習、發掘新知、研究新技術,否則轉行一點意義都沒有,如果想安穩過生活,不如就找一個安穩的工作,專心研究挖掘機技術吧,這樣的生活質量會比程式設計師好多了!

最後,如果你跟我一樣都喜歡java,也在學習java的道路上奔跑,歡迎你加入java學習群:72030155 群內每天都會分享java最新業內資料,共同交流學習,讓學習變(編)成(程)一種習慣!