為什麼成為一名工程師這麼難 —— 從程式新手到準工程師的必經之路

有人說,每個看起來與正常人無異的工程師,其實都是在學習程式開發的途中熬過、壓抑過、而且創傷過的反社會人士。基本上,成為工程師的過程可以被分成四個階段,分別是手牽手心連心蜜月期、困惑之崖、絕望沙洲、以及創傷後的恢復期...。
評論
computer on fire
評論

有人說,每個看起來與正常人無異的工程師,其實都是在學習程式開發的途中熬過、壓抑過、而且創傷過的反社會人士(sociopaths)。

在學習程式開發的過程中,常常看到網路上的「甘苦談」,也聽過身邊前途一片光明的工程師朋友們分享過學習歷程,總覺得不同的人、同樣的故事卻不斷的重複,像是狼叫聲般,從遠處傳來一聲又一聲的迴響。

最近讀到 Erik Trautman 在 Viking Code School 部落格中的文章 《Why Learning to Code is So Damn Hard》,文章裡將學習寫程式(Learn to Code)的過程分成了四個階段,並解釋了兩個影響各階段形成的關鍵因素「資料密度」以及「知識廣度」,最後集合成這張圖:

coding_is_hard_combined_chart

這篇文章很有趣也十分符合我所聽聞的那些「工程師辛酸史」,因此決定將這四個階段介紹給大家,希望程式初學者們在進入這條不歸路之前,罩子要放亮、計畫要周詳,清楚明白在前方等你們的是什麼,做好心理準備吧!

接下來我將介紹從剛開始寫程式到成為一名工程師,Erik Trautman 所歸類必經的四個階段:


想成為工程師,請做好準備迎接這段必經之路

先假設你學寫程式的終極目標是要靠這行吃飯 –– 進入相關領域工作或是自行創業,你是否做好萬全準備可以從你的信心(Confidence)跟能力(Capability)散佈圖中看出:

coding_is_hard_confidence_competence

隨著你具備的知識跟技能越來越多,你的自信心也會隨之而增減,最後達到能力夠信心足的「Job Ready」點。在 Job Ready 前則可以分成四個階段:

第一階段:手牽手心連心蜜月期

剛開始進入程式開發界的朋友們總是懷抱著遠大的夢想跟抱負,這不能怪他們,畢竟一方面,大家小時候聽多了「寫程式很難」、「電腦科學很硬」這種傳聞,從一開始就把不少人嚇去念社會科學(... 沒有冒犯社會科學專業人士的意思);另一方面,「全民寫程式」這項運動實在太成功,坊間許多工具跟學習平台讓程式開發變得超好理解、上手容易,像是 Codecademy、Treehouse、跟 Code School 等線上平台,或是麻省理工的 Scratch 語言、Google 的 Blockly 等程式語言工具,成功地營造了人人都能寫程式而且靠這行吃飯的 假象 形象。

突然間我們的問題不再是「困難度」,而是「比天高的期望」跟「比地大的夢想」。

最重要的是,以上提到的這些工具跟平台實在太有用,帶領毫無程式開發經驗的初學者們一步步認識變數、條件語句、程式語法。當你一路過關斬將把程式語言基本邏輯跟語法學會的同時,你就會超有成就感、自信心大增,開始有「原來我也行嘛」、「寫程式也不過就這樣」的感覺,基本上覺得自己已經跟「工程師」相去不遠了。

coding_is_hard_phase_i_conf_comp

這個階段將充滿喜悅與成就感,在各種線上工具、網路教學的幫助下,你享受著用指尖下指令、電腦就能準確執行的主導感,你讚嘆著程式語言的神奇與強大之處,從 Hello World 到簡單迴圈,每完成一道練習題你的成就感又增加幾分,很多人會在這個時候認為自己已經愛上了電腦科學(而且覺得電腦科學也愛他們),正處於能力提升,自信心也大增的「蜜月期」,這時你可能會覺得世界真美好、人生大概就會從此飛黃騰達,但我得殘酷的告訴你:

這段旅程才剛開始而已。

第二階段:困惑之崖

就跟大部份的情侶/新婚夫妻一樣,蜜月期會結束,你會慢慢發現「相愛沒這麼簡單」。

作業難度一增加(重點是程式碼長度也會跟著增加),程式錯誤警告就頻頻出現,開始不停的除錯(Debug)。而且通常最大的挑戰是 –– 當錯誤出現時,你根本不知道錯在哪裡、該問什麼問題。你的學習進度在這個階段開始停滯不前,像路走到一半突然遇到懸崖而無路可走般,開始對之前的認知感到困惑,跟著信心大失。

coding_is_hard_phase_ii_conf_comp

通常這個階段會在你完成線上的基礎教學後發生。以製作個人網站(Portfolio Website)為例好了,W3 School 平台提供了一系列 HTML、CSS、JavaScript 等網頁製作相關的程式教學,讓初學者一單元一單元的學習語法跟功能,每單元還有例子示範用法,看似好簡單!全部跟著學一遍之後,你準備好動手打造自己的網站,打開文字編輯器,⋯⋯,然後寫沒兩行就卡關了。

也許靠 Google 搜尋可以讓你撐到完成網站基本架構,但當你想實現自己的創意、加上個人化的設計時,網路上的回答跟示範總是和你心裡所想的不太一樣,所以程式碼不能全抄,然而左拼右湊出的程式碼看似可行但實際上差得可遠了!偏偏還不知從何 debug 起,可能投資了大半的時間程式碼還「有減無增」,毫無進展可言。

這是一個尤其挫折的必經階段,想成為 Programmer 就必須經歷這個關卡,勇敢跳下懸崖、逼自己展翅高飛(當然在這個階段摔死的小雛鳥數量十分可觀)。

但即使你消滅了無數的 bug,終於完成了幾個小專案後,你也別高興得太早,未來的路還是非常長遠而且挑戰性更高! 對於想進入這行吃飯的人來說,「困惑之崖」通常是你決定是否全心全意進入這一行的轉捩點 ,而當你投資所有的時間心力在寫程式上時,你將進入最讓人心灰意冷的第三階段。

你可能會很好奇,到底為什麼緊緊相連的第一階段(蜜月期)跟第二階段(困惑之崖)會差這麼多?如果你也正在經歷以上兩個階段,你要知道,造成階段轉換的原因跟你一點關係都沒有,並不 完全 是因為你比別人笨或比別人不努力,而是因為 「資源密度」 改變的緣故。

因素 1:資源密度 Resource Density

coding_is_hard_resource_density

在第一階段中有提到,當零經驗零基礎的你開始學習寫程式時,身邊有著無數的資源跟工具等著你來運用。到 Google 搜尋打「Learn to Code」你會查到超多程式學習平台、教學文、教學影片、甚至經驗談,讓你感到萬分的親切及溫暖,其「手牽手心連心蜜月期」的稱謂當之無愧。

coding_is_hard_resources_screenshot

然而到了第二階段時,這些教學資源的數量將 大為驟減 ,任何一個剛脫離初學者的程式學習者都能夠證實我此言不假。初學者一開始遇到的障礙都是「一般常見問題」,教學文、教科書裡就會註明了;後期由於作業難度以及個人需求,問題才漸漸複雜起來,要從 Stack Overflow 或是一些程式人的部落格中去找尋解題線索。一直到在你遇到的問題已經棘手到網路上根本找不太到線索的時候,你便進入了下一個階段。

第三階段:絕望沙洲

要了解進入第三階段的關鍵,就要了解另一項影響著各階段變化的重要因素: 知識廣度

因素 2:知識廣度 Scope of Knowledge

coding_is_hard_scope_of_knowledge

「知識廣度」 也就是度過每個階段你所必備的知識領域範圍。剛開始時你需要吸收的知識很集中,不管用哪種程式語言、不管功能是什麼,首先都要學會變數型態、宣告語法、迴圈及條件判斷式等等,這時隨便請一個工程師教你都是一樣的,因為「重要須知」就是這幾點而已。

然而學完基本功後,你所需的知識領域會一下子擴展很多,像是開始學習物件導向或是著重演算法的效率,你會需要扎實的電腦科學背景來應付,而且每一個應用都可以牽扯出更多的變化... 相信我,這不是幾堂 MOOC 課程就能救得了你的。

在這個時期,萬能的 Google 也只會丟給你更多你不懂的東西,根本查不到相關的線索!最糟的是 你根本不知道你什麼不知道。(You don't know what you don't know.)。於是「學也學不完、越學越不懂」的無力感排山倒海而來,進入最最難熬的第三階段 ––「絕望沙洲」。

這個階段顧名思義像是在橫越沙漠般,是一段非常長且寂寞的旅程,讓你有不知何年何月才能走出來的絕望感。在一望無際的沙漠裡,根本搞不清楚東西南北,資料查了半天毫無斬獲,還不時被海市蜃樓(錯誤資訊或看似可行的解決方案)給誤導,搞得灰頭土臉、頭昏眼花,在這個階段曬死、渴死、絕望死的有為青年更是不計其數。

coding_is_hard_phase_iii_conf_comp

但只要在絕望沙洲裡熬下去,接下來就會自在許多了!累積足夠的經驗,程式的錯誤就會大量減少、達到一定知識水準,就能準確判斷問題的方向切入核心,工作效率因而有所增進,知識廣度也會慢慢聚焦。等你拖著一身的疲憊終於走出這荒漠時,就進入了最後的階段。

第四階段:創傷後的恢復期

踩著千萬人的屍體成功橫越了沙漠,你的自信心開始回升,Google 功力也可以說是神人的等級。到了這個時候,Hacker News 的新聞以及超硬的 MOOC 課程都不成問題,你也選定了某個程式語言跟框架來專研,而且有能力製作出可以正常運作的應用程式了。

但你心裡深處總有著隱隱的不安,覺得程式能「用」但其實程式碼凌亂無章,工程師的頭銜下其實是誤打誤撞進這行的半調子,雖然你似乎具備了一切就職條件,卻總害怕面試官發現你根基薄弱的電腦知識... 你正在經歷 「創傷後的恢復期」

在飛越困惑之崖、橫越絕望沙洲之後,你應該已經學會該學的、做了該做的,成為一個名符其實的工程師,卻總覺得自已資質平庸根基不穩,雖然有成功打造出一個個專案而信心回升,但老是感嘆自己與心目中「專業工程師」仍有一大段差距...,這些都是「冒牌者症候群」(Impostor Syndrome)在作祟!

在這創傷後的恢復期中,你可能會經常自我懷疑,但只要順著這波效率提升信心也回升的潮流繼續努力,在能力與自信達到一個程度時... 恭喜你:You Are Job Ready!

coding_is_hard_phase_iv_conf_comp

想深入瞭解「冒牌者症候群」可以參考這篇文章: 工程師,您也患有「冒牌者症候群」嗎?

《延伸閱讀》

做一個網站多少錢:如果你不是工程師,不要說簡單!

寫碼容易,讀碼難:工程師 千萬別重寫程式碼

下班後,堅持自學有多難?

向矽谷的 90 後取經 如何成為受歡迎的工程師?

5 種高效率的軟體工程師角色

40 歲的哀愁:拼不過新鮮的肝靈活的腦,工程師面臨中年危機

軟體工程師從優秀到卓越的進化之路

大神工程師教你怎麼練就「 coding 速度快、 bug 數量少」的境界

歡迎加入「Inside」Line 官方帳號,關注最新創業、科技、網路、工作訊息

default-cover

最新發展:


好想住桃園!市民最有感的「宜居智慧城市」發展秘辛大公開

城市該如何串聯企業、社會及公民組織,創造永續價值?依據關鍵議題研究中心發布的最新市調結果,帶大家一窺國門之都「桃園」,為了宜居智慧城市付出哪些努力。
評論
評論

桃園作為臺灣與世界接軌的第一站,面對永續未來的國際共識也採取了諸多措施,期盼能藉此逐步實踐「宜居智慧城市」的願景。

城市宜居的關鍵是什麼?過半民眾認為「交通運輸」政策影響最有感

這次問卷中,我們以「城市居住的理想藍圖」為題,詢問網路民眾最重視城市發展的哪些面向。結果發現,不分年齡性別,多數民眾對「宜居城市」都有相當類似的想像,最重視的三個方向分別是「大眾運輸與交通便利性」(52.9%)、「經濟發展與就業機會」(38.8%)及「社區安全與治安狀況」(33.7%)。

不論上班通勤、日常生活,還是旅遊觀光,「移動」都是行動的必須過程。一座城市是否宜居便利、能否永續發展,很大程度取決於整體運輸系統的設計規劃、市政措施完善與否。這次市調也發現類似的結果,像是談到近期桃市府讓民眾最有感的施政項目時,有將近四成的民眾選擇了「基北北桃通勤月票都會通」以及「鐵路地下化工程及捷運路網建設」等交通相關的政策。

另外,根據本次調查顯示,16-40歲的族群較為重視「教育資源的質量與分配」、「政府服務的效能」以及「文化節慶與娛樂活動的豐富程度」;41-60歲的桃園民眾則較為重視「醫療服務與設施品質」、「居住環境周邊設有公園綠地」以及「友善高齡者、身心障礙等群體的設施」;而詳加檢視近一年來桃市府所推出的政策或活動,許多也正好對應到前述的需求,例如「國中小營養午餐免費」、結合科技執法的「靜桃專案」、舊城區改造、參觀人次破千萬的「世界客家博覽會」、擴大肺癌篩檢、加速設立市立醫院及特色診所、興建7座旗艦型公園與推動「高齡友善換居社宅專案」等,是桃園民眾除交通類別以外的有感施政措施。

Photo Credit:TNL Research

而針對整體都市發展,今年由張善政市長召集成立的「未來城市空間發展會報」,也開始著手短、中、長期的舊城再生規劃,並布局城市大型公共建設,關注人行空間與城市關係的有序發展;搭配桃園現在進行式的鐵路地下化工程,進一步推動車站周邊產業轉型及土地活化,更將效法歐美成功先例,規劃興建長16公里的綠色廊道,打造回歸人本思維的城市空間,提供市民最宜居、舒適的生活藍圖。

傳產轉型、新創支持、文化深耕:城市發展的永續金三角!

不過,僅是安全完善的交通路網還不夠,城市的經濟發展也是攸關市民生活品質的重要指標之一。調查指出,約三成民眾認為「提供傳統產業轉型的資源」(31.7%)、「支持產業創新發展」(31.3%)、「鼓勵農業轉型與特色觀光發展」(27.8%)是城市發展中相當重要的產業元素。

Photo Credit:TNL Research

在青創產業的扶持上,桃市府近年設立了許多創育機構,例如專注孕育AI及智慧機器人等物聯網科技團隊的「新明青創基地」,及今年新成立、以整合電商平台資源為目標的「中路電商基地」。而未來更將成立「中路青創加速器基地」及「A8產業加速器」,分別催化能接軌國際的頂尖團隊,與協助傳產數位轉型。此外,桃市府也透過相關計畫提供創業辦公硬體、培訓資源,積極媒合青創團隊,並提供在地市場驗證機會,期待透過青創團隊產品規模化的過程,帶動整個桃園的產業升級。

Photo Credit:桃園市政府

桃園5家青創基地進駐團隊,分別獲得「2023巴黎國際發明展(Concours Lépine 2023)」一銀一銅、「亞洲XR創星金點大賞」評審團大獎、「2023台灣地域振興大賞」新秀獎、「2023日月光社會創新競賽」冠軍等殊榮。

此外,富有在地特色的人文觀光也是近年桃市府大力投入的領域,像是透過創新形式與傳統禮俗的融合「大溪大禧」,將關聖帝君聖誕遶境打造成跨越當代設計與民俗信仰的城市祭典;今年全新打造的觀光品牌「探索北橫」,推出數條能充分感受山水風光、體驗原民文化的主題遊程。不僅如此,桃市府也積極串聯周遭縣市的觀光資源,聯合推出整合了北北基桃共30處旅遊景點的旅遊套票,藉此導入更多的外部資源,促進桃園觀光產業的蓬勃發展。

Photo Credit:桃園市政府

秀麗的山水景緻與原民文化,是北橫旅遊的亮點,除致力打造觀光品牌,桃市府也全力向中央爭取設立「北橫國家風景區」,期盼挹注更多資源,帶動觀光發展。

二度奪下永續城市特優獎!持續邁向更宜居、更智慧的桃園

針對「永續經營」相關作為的重要性認知,絕大多數民眾認為「大眾運輸路網的長遠規劃與建置」(40.3%)是落實永續的關鍵。桃園作為全台第一個符合聯合國推動「奔向淨零」(Race to Zero)倡議的城市,於今年3月29日率先發表桃園邁向2050淨零碳排路徑圖,除規劃空氣品質淨化區、打造全齡友善的共融式公園綠地、協助企業產業轉型,更積極建置及完善市內捷運路網,全方位實踐淨零的永續目標;其中,桃捷綠線中壢延伸線綜合規劃,交通部同意捷運綠線從G01站延伸至中壢車站(桃捷A23),連結捷運綠線與機場捷運,形成桃園首條環狀捷運路網,而捷運三鶯延伸八德、棕線計畫,均已針對交通部審查意見提出修正,期盼今年底可獲行政院核定。

Photo Credit:TNL Research

此外,桃園更再度榮獲今周刊「2023永續城市SDGs大調查」的「永續城市特優獎」及「經濟力特別傑出獎」,展現桃園無論民間企業抑或政府機關,都將永續發展視為重要目標。而明年更將整合研究發展考核委員會及資訊科技局設立「智慧城鄉發展委員會」,期盼藉由組織整改消弭隔閡,讓各單位的目標、任務都更加明確並發揮效益,並優化各項公共服務,為市民打造更為舒適的生活環境,使「智慧桃園」的目標更上層樓。

Photo Credit:桃園市政府

桃園致力於經濟發展與環境永續的平衡,為邁向2050淨零碳排的願景,扎下穩健根基。

桃市府在都市景觀、城市機能、產業精進及施政效能等面向的耕耘,短期成效不僅為民眾所有目共睹,長期觀之,更是為桃園往後的蓬勃發展打下關鍵基礎,使宜居智慧城市的願景正實現。

【桃園市政府廣告】