隨著資訊科技越來越發達
「程式語言」被媒體擴大宣傳,處處可見廣告及文宣,使得人人學Code時代來臨
為了追求「速成」,許多補習班/ 甚至有可能是學校教授,你的學長姐紛紛傳授了快速學成,追求效率的方法
為了履行研究所教授告訴我的「做中學,學中做」,我帶著僅僅做幾個小的網頁專案及什麼都會一點的經驗,投入了現在的工作
程式語言,甚至說是「資訊科技」,好入門卻難精,在這樣的過程中,「程式語言」往往只扮演著其中一個角色
在資訊系的學科中,「程式語言」只是其中必修(但擋修)的科目之一,資訊科技可說是包羅萬象,絕非僅有「程式語言」這麼簡單可概括
還記得我兩年半前下定決心踏入資訊科技後,剛入學卻發現有著各式各樣的資訊領域
人工智慧,穿戴式裝置,嵌入式系統,網頁設計,大數據分析,工業4.0,資訊安全,開發APP,物聯網
瞬間變得更茫然
每一個資訊領域又有著不同的知識與技能
第一步該做的就是選定想發展的領域
就我來說,我希望發展網頁設計
本身是學Python 來寫網頁後端,在這條道路上目前正在經歷菜鳥新人時期
我本身的經驗如前面所說,雖然本科是資訊系但大學真的都在由我玩四年
研究所時期,利用了速成的方法,邊進行專案邊學習,還歷經了接不同專案,就學不同技能,造就了什麼都會一點但什麼都不精通
帶著淺淺的背景知識(還是從專案學的),薄薄的python技能(可能只有c語言的for迴圈概念),連list, dict是什麼都不知道
前端只會css, html,不會用git, docker 的情況下開始求職
看著目前現階段大部分公司會要求要有什麼樣的技能
稍微了解後,就直接上陣
以為到處會被打槍的情況下,發現其實還是有很多工作主動發出邀請面試
新人的第一關就是俗稱找一家公司「練功」,有沒有前輩指導,我覺得還蠻重要的
多問,多學,不懂就問,被罵也問,不受批評不進步,不會導正之前的三觀
開始你會發現,自己速成出來離外面公司的要求有一個GAP橫溝,只好缺什麼補什麼
針對公司要求的專案,要有怎麼樣的知識/技能去完成任務
以及要有怎麼樣的基本功,能夠加快進步的腳步
接下來列出幾個基本功
-
程式語言
-
背景知識
-
作業系統/環境架置
-
GitHub/ GitLab
-
google能力 (哈哈XD)
在這之後的從新人突破慢慢進步到初階工程師
之前寫的這篇可以提供點方向
程式語言
針對想前進的領域主要運用的程式語言學習
從開始求職到最近進公司兩三個月了,常常收到「你應該要買一本程式語言的書,重頭看到尾」
程式語言是工具,主要是解決問題,與電腦溝通的工具
既然得將它當作工具來解決每個問題,建構每個軟體,完成每個電腦的任務
運用自如,就得需要熟悉整個程式語言
當成為Junior工程師的瞬間,公司的前輩就會將你當作已經會使用工具了XD,代表可以的話得在進公司前就先把程式語言練熟XD
刷LeetCode 是一種方法(前輩提議)
買本書從頭看到尾(實作到尾),這已經有兩個以上的前輩跟我建議
除了自己本身學的程式語言外,還有牽扯到相關領域的背景知識也需要學習
打個比方,用JAVA學JSP, JAVA要熟以外,跟網頁有關的SQL語法也要一併學習
SQL , 還有分Mysql, Sqlite , … 各家有些微不同,還有版本上語法不同XD
當邊做專案,邊出錯邊查邊學,整體效率就會變慢很許多QQ
因此,當成為一個初階工程師前最好將程式語言運用自如
當然,如果不小心還沒打好基本功就進去公司的話,… 就期待後續發展了xD
背景知識
以做網頁來當sample的話
大架構的前後端,資料庫/後端及怎麼渲染前端中間的互動都要能熟悉
甚至更細節的專業背景,網路, Httpd … 之類的知識也要知道
剛開始進公司的第一個任務是做效率的API
我這個新手光是能將伺服器, 資料庫, 客戶端接起來就先惡補了好多知識
接下來居然要達成每秒輸出輸入達幾千次的效能問題
程式寫法, 連結的環節, 掉資料問題, debug 就讓我吃不消了XD
前端網頁的框架, 怎麼與後端伺服器互動, … 之類的,還有許多更多的背景知識,要多細節有多細節,雖然無法在工作前完全學習完畢,但基礎知識還是得先學著了解
作業系統/環境架置
無論平時是使用mac還是windows,建議Linux系統一定要學
很多伺服器架設及伺服器端的運用都以linux系統為主
其中的shell指令,可以的話要先學起來
在此就奉上前輩推薦的鳥哥的Linux私房菜
學電腦資訊一定要會用linux呀!!
GitHub/ GitLab
版本控制系統
如果不想如這篇的我,因為一個失誤造成僅僅幾行卻花了幾天寫的程式碼缺失,一定要學會用版本控制Git
且目前許多公司都已要求要會git
我在研究所的時候都還不太會用,雖然現在進到公司裡,也還不太會使用就是XD
但自己辛苦邊卡邊寫三週的程式碼,在一個失誤後全部都沒了
當下由於卡畢業進度,整個人近乎崩潰,嚇死
版本控制系統主要是GitHub/GitLab平台,除了其他強大的功能外
基本上就是將程式碼推上平台存起來(先簡單講)
每一次推上平台都需要將本次有新增/刪除/改寫的程式碼及檔案做一個review,確定後才能上傳平台
且每次上傳都會有不同的版本號碼,代表每次的跟動
很有條理, 方便及效率的將開發程式的過程步驟分明
萬一遇到斷線,電腦被偷, 或者其他事情,程式都存在平台上
這邊記錄一些git 指令
git log -p
git push -f
git diff
git reset --hard
# 做 git squash,整併/更改所有已commit的動作
# 利用log 來找出要整併的分支的前一個動作版本碼
git log
# 下這個指令來進行squash 動作
git rebase -i [版本碼]
# ... 會有兩個步驟,都更改完儲存離開為執行
google能力 (哈哈XD)
報什麼Error Log 就將關鍵字複製貼上google 看能怎麼解決
還有遇到什麼問題,不會寫,或不確定也上google 找到能初步執行成功的函式/小程式
然後再進行改寫,近一步的Debug學習可以參考這篇,應該有稍微解說學習Debug工具,還有這篇是將前輩教導我的Debug 遇到問題之流程解說記錄下來
前幾篇應該也都大部分寫Debug 的重要與學習
遇到問題,或者不會寫時,先google,真的查過沒找到,都不會了,在做詢問
也有幾個程式的交流網站可以分享/瀏覽 / 詢問
那我先將基本功的資訊寫到這,後續有要補充或做更改再回來更改囉
感謝觀看!