Blog Cover Image

Inspire you to have New thinking, Walk out your unique Road.

有的時候,你無意間遇到的一些故事,會激發你的靈感,改變你的想法,接下來你會用與之前全然不同的觀念去創造屬於你獨特的故事。

Sign @MinaYu.

[後端小菜鳥] 練好基本功

Posted on

隨著資訊科技越來越發達

「程式語言」被媒體擴大宣傳,處處可見廣告及文宣,使得人人學Code時代來臨

為了追求「速成」,許多補習班/ 甚至有可能是學校教授,你的學長姐紛紛傳授了快速學成,追求效率的方法

為了履行研究所教授告訴我的「做中學,學中做」,我帶著僅僅做幾個小的網頁專案及什麼都會一點的經驗,投入了現在的工作

程式語言,甚至說是「資訊科技」,好入門卻難精,在這樣的過程中,「程式語言」往往只扮演著其中一個角色

在資訊系的學科中,「程式語言」只是其中必修(但擋修)的科目之一,資訊科技可說是包羅萬象,絕非僅有「程式語言」這麼簡單可概括


還記得我兩年半前下定決心踏入資訊科技後,剛入學卻發現有著各式各樣的資訊領域

人工智慧,穿戴式裝置,嵌入式系統,網頁設計,大數據分析,工業4.0,資訊安全,開發APP,物聯網

瞬間變得更茫然

每一個資訊領域又有著不同的知識與技能

第一步該做的就是選定想發展的領域

就我來說,我希望發展網頁設計

本身是學Python 來寫網頁後端,在這條道路上目前正在經歷菜鳥新人時期

我本身的經驗如前面所說,雖然本科是資訊系但大學真的都在由我玩四年

研究所時期,利用了速成的方法,邊進行專案邊學習,還歷經了接不同專案,就學不同技能,造就了什麼都會一點但什麼都不精通

帶著淺淺的背景知識(還是從專案學的),薄薄的python技能(可能只有c語言的for迴圈概念),連list, dict是什麼都不知道

前端只會css, html,不會用git, docker 的情況下開始求職

看著目前現階段大部分公司會要求要有什麼樣的技能

稍微了解後,就直接上陣

以為到處會被打槍的情況下,發現其實還是有很多工作主動發出邀請面試


新人的第一關就是俗稱找一家公司「練功」,有沒有前輩指導,我覺得還蠻重要的

多問,多學,不懂就問,被罵也問,不受批評不進步,不會導正之前的三觀

開始你會發現,自己速成出來離外面公司的要求有一個GAP橫溝,只好缺什麼補什麼

針對公司要求的專案,要有怎麼樣的知識/技能去完成任務

以及要有怎麼樣的基本功,能夠加快進步的腳步

接下來列出幾個基本功

  1. 程式語言

  2. 背景知識

  3. 作業系統/環境架置

  4. GitHub/ GitLab

  5. 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,真的查過沒找到,都不會了,在做詢問

也有幾個程式的交流網站可以分享/瀏覽 / 詢問


那我先將基本功的資訊寫到這,後續有要補充或做更改再回來更改囉

感謝觀看!