iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 2
0
自我挑戰組

轉職新手的自學筆記系列 第 2

第一步:選擇語言與學習歷程

軟體工程師有什麼分類?該學什麼呢?用什麼方式學習?用什麼工具與環境實現?
大概是我猜想跟我當時連前後端是什麼都不甚明瞭的人,會在一開始所帶著的疑問
因此,我今天試圖整理一些我在選擇上的評估與目前想法

該學什麼呢:你有什麼學習目的與決心?

當我問電資學院的朋友要怎麼選擇
他們就會說:「看你想做什麼呀?」
我:(充滿問號無法提取任何關鍵字

對於完全不熟悉這個領域的人,的確很難透過這個問句去幫助自己
就像別人請教我應該如何學習心理學時,在詢問目的時,仍然會給予十分生活化的舉例
更何況,軟體工程的分野,通常不是一般人可以直接從字面感受

在我自己的觀察與經驗中,大概會是一串從上而下判斷式

if 你的目標明確:
    return 你要的語言
if 你跟我一樣迷惘:
    if 願意投入大量心力且想打好基礎:
        return C or C++
    elif 想快速上手程式,未必在意背後深入資訊:
        return python
    elif 想要相對入門,容易產出視覺化產品(網頁):
        return JS
    elif 對常見的產品開發有興趣,願意投入大量心力學習負責的判斷邏輯:
        return Java
..................

當然,我的認識有限,語言也非常繁複,而我所理解的選擇,仍然不脫:

  1. 目前熱門,有很多人正在使用,也好入門建立信心:JS Python
  2. 容易快速上手開發產品:JS
  3. 想扎根、了解程式語言背後邏輯:C系列/Java

以我自己為例:
心理學的訓練對資料分析熟稔,本來就學過R,若要往時下流行的資料科學去走,python已經漸漸成為標配
但我的臭脾氣是:要學就要學的深,而且想知道整個世界的運作
python顯然有其限制,光計算時間跟空間複雜度就必須一直往回翻文件,又沒有太多規矩跟要求,無法讓有心在這個領域長遠發展的人,初期建立深入的概念與良好的寫作習慣(縮排、該寫括號、型別、順序、變數作用區域等等)

盤點以前學習python很快忘光的狀態,學習C++真的對我後續轉職非常受用

  1. 養成良好書寫習慣,注意許多小細節
  2. 便於了解程式運作邏輯,自己採用彈性高
  3. 學習其他程式非常容易,畢竟C系列特別嚴謹困難

用什麼方法學習:你有多少時間、習慣的學習模式與階段

以前中學資訊課學習經驗不佳,但我知道自己邏輯很好,只是需要一個學習框架
大概幾乎每個人對於轉專業新手,都會建議初期先從實體課建立信心
扎實的學校課程很寶貴,若像是台大資訊系統訓練班也是很品質穩定的實體課

我自己的經驗是:

  1. 線上課再多機制仍然有機會怠惰,陌生領域自己找資源很累又容易觀念錯誤
  2. 修課有學分與成績壓力,會促使自己比較努力
  3. 實體互動比較安心,有夥伴感也訓練真實工程師很在意的專案合作能力,與多人線上課的感覺仍然不同

把握學校資源,多做無痛探索

在畢業前最後一年,為了試驗自己的興趣與天賦,我同時選擇三門不同領域的課程:

  1. 某資訊科系必修C++程式設計
  2. 網頁設計:JS
  3. 資料庫管理:SQL / python

雖然切換不同語言真的很累,每週都有寫不完的作業,但深刻感受到我明顯的喜好差異:

  1. 邏輯判斷 >> 前端
  2. 資料分析 > 資料庫管理後端
  3. 後端 > 前端

累積專案不如找實習

相信很多人都說過類似的話,但還是有一些迷思覺得要多做side project才有求職潛力
我自己經驗有限,卻覺得課堂專案有時比自己胡亂找題目,更容易有深度

對資訊領域仍不清楚的人,很難找到一個明確的目標,網頁、app相對好找題目實作,資料分析頗困難,費了很多時間找不到有價值的議題,連假設都難建立,更別說應該收集的資料是否方便取得,或有驗證意義
充其量,專案只是入場票,無論是上課還是side project,愈有機會可以跟業主合作、有實際商業需求與價值、資源容易取得,都比一群菜鳥胡亂拼湊來的好(而且面試時通常會很尷尬)
我個人從在學到實習的策略是:

  1. 找業界老師開的課、有多個專案且有業主的課
  2. 參與競賽:ex. shopee code league[數據創意提案大賽](https://datapilot.tw/)

透過上述機會,我都有機會愈貼近真實商業需求,甚至拿到公司內部資料
雖然因為保密條款有些細節不能在求職透露,卻能幫助自己評估未來求職方向,也可能因為這些經驗被有需求的公司親睞

實習最痛快速學習

實習的幫助應該放諸四海皆準,尤其工程從做中學,更需要透過實習累積
我自己蠻幸運,在學校附近找到QA intern的機會,雖然跟研發無直接相關,卻能成為踏入該領域的敲門磚,現今資本有限的中小公司,QA缺幾乎都是主打「非工程背景轉職」名號,在這供需互惠的機緣下,確實是轉職者在信心不足且需探索的情況下,蠻不錯的選擇

以我自己經驗為例:

  1. 公司主要開發微軟體系應用程式與網頁,因此我有機會從頭學習C#,也發現自己學程式愈來愈快
    隨著需求調整,團隊編制小且彈性,在三個月後就開始漸漸增加研發工作,同時被交付兩產品線的嘗試,幾乎在短時間內2. 需理解C#\JS更深入的概念
  2. 在重拾JS兩週內的時間,就開始實作內部亟需的工具

比起專案,實習所學習與累積的內容即是真實需求,具備明確目標、完整的問題情境與使用者
比起號稱培養即戰力的超貴課程,公司隨時有資深的前輩能夠詢問,比老師跟助教給予更多彈性與機會,期待的成長速度也更快


寫在最後:
雖然我現在仍沒有非常明朗的理解,經手項目也跟當初在學不太一樣,仍可以深刻驗證:「路沒有白走」

資料庫的訓練使我能更理解後端運作、掌握產品開發的脈絡與可能出錯得細節
C++的基礎使我學習更為快速且能融會貫通
QA有很多繁瑣使我厭倦得細節,卻因此更能虧得產品開發全貌


總結今天相對結構彈性的分享:

  1. 語言的選擇來自於本身的目標,若目標不明確,可評估自己的特質與願意付出的心力
  2. 初期品質良好的實體課很重要,在學階段的扎實訓練更寶貴
  3. 若不知道要學什麼,不如實際去探索驗證,所有的辛苦都會有意義
  4. 專案須盡量貼近業界需求,很多side project效益不大
  5. 能有任何實習機會變行動,工程師更需要做中學

我的理解或許粗淺,很歡迎交流分享自己的想法~


背景介紹
曾經以為自己會成為一名臨床心理師,但過動地先走組織策略,也經手UIUX專案,醫院走一遭後,接受扎實管理顧問訓練,並從數據行銷中感受自己對 data-driven 與 big data 的熱忱,便一路愈來愈 hardcore,大量暴露於產品開發的各種技能,期待未來整合所長,在資訊產業中,有策略的創新足以兼顧企業與使用者價值之產品。


上一篇
google 讀文件對新手也是難事
下一篇
第二步:學會善用資源與提問
系列文
轉職新手的自學筆記4

尚未有邦友留言

立即登入留言