2022年3月19日

敏捷式還是瀑布式?其實敏捷式軟體開發不一定比較快

在軟體工程管理的領域中,有兩種常見的開發方法,分別是敏捷式 Agile 和瀑布式 Waterfall。

早年大型專案多半是瀑布式的開發,但近十年來,許多成長型的公司開始採用敏捷,敏捷開發漸漸成為討論的主流。

而說起這兩者的差別,大家最想知道的問題通常是:「使用敏捷開發後,開發的速度會變快嗎?」

而這個問題的答案是不一定。

為什麼不一定?敏捷聽起來不是很快的意思嗎?是有這樣的意思,但也有一些誤解。我們先來簡單帶大家認識一下傳統的瀑布流,再來討論為什麼敏捷的開發速度不一定會比較快。

瀑布式開發

瀑布式開發是經典的開發方式,其實我認為也比較符合一般人的直覺。主要的核心概念就是,一口氣完成整個專案。

一口氣完成整個專案,不是理所當然地嗎?對,所以才說這比較符合普通人的直覺。因為敏捷不是這樣的。

總之,整個瀑布式的開發流程大致上可以分成幾個大階段,也就是經典的軟體開發生命週期(SDLC),以下稍微簡述:

  1. 需求訪談與定義

    需求端提出對於系統的需求後,再歷經完整的需求訪談後會產生出規格文件,也會讓設計師進行介面的設計。

  2. 軟體系統分析設計

    架構師或系統分析師根據前面規劃好的規格文件,進行系統的細部規劃,例如決定要使用什麼技術,程式架構的設計等等。

  3. 功能實作及單元測試

    工程師根據系統分析的結果進行實際的程式撰寫,並測試其撰寫的程式是否正常運作。

  4. 整合測試及驗收

    針對完成的功能進行整體性的測試,並讓需求端或利害關係人進行驗收。

  5. 安裝部屬及維運

    實際將系統部屬到使用環境,並維持系統正常且持續運作。

這樣的流程,應該很符合大眾的邏輯,先有需求,然後規劃,然後設計開發、測試、上線。

2022年3月11日

軟體工程師剛畢業第一份工作要找大公司還小公司?在大公司學制度,但制度有什麼好學的?

找工作時的時候,你可能會面臨一個問題,要選擇大公司呢?還是小公司好呢?大公司通常名氣響亮,亮出名號相當神氣,當然,除了面子問題以外,很多人也說,在大公司可以學到制度,但學到制度是什麼意思?本篇就要來聊聊這個話題。

制度是什麼意思?

大家對一間公司的想像是什麼?也許你會說,不就是辛苦的勞工在底層做事,老闆高高在上,翹著腳,出一張嘴,什麼都不用幹嗎?OK,這是一種面向,但我們先不要這麼悲觀,我們還是先比較正面一點看待,這樣才有討論的空間XD。

對公司的想像有很多種,我認為,一間公司,就是一個團體一起分工合作,透過商業行為,在市場上創造了一些價值,而這些價值最後會轉換為各位勞工的薪水。

而既然是一群人一起工作,那就要有一定的規範、紀律,來定義每個人的人職責,還有該遵守的流程,否則就會亂成一團。再來,這些流程的好壞,也會決定一間公司的成就,而如果沒有採用有效率的做事方法,那就會造成成本過高,收益降低,公司獲利就不會成長。

所以制度是什麼意思?我自己解讀的方式是,制度就是公司的做事方法,包含規範、工作流程,團隊或個人職責劃分等。

2022年2月20日

三分鐘了解 docker run 跟 docker exec 的差別

docker run 跟 docker exec 經常讓 docker 的初學者感到困惑,因為用起來感覺都很像,不知道什麼時候該用哪一個,也不知道兩者有什麼差別。

如果簡單來說的話,其實兩個最大的差別是,一個啟動新的容器,一個使用正在運行中的容器。

來比較官方文件上對於兩者的說明:

docker run : Run a command in a new container

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker exec : Run a command in a running container

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

可以看到 run 使用的參數是 image name ,而 exec 是 container name。

2022年2月15日

台北租屋看房注意事項,9 個篩選條件讓你避開爛房間。北漂十年的心得整理

由於念書、工作的關係,我已經在台北租屋超過十年了。在這十年間,租過不少房間、看過不少房源,也踩過不少雷,因此自己大概也整理出了一些篩選物件的條件。

其實真正要挑到好的房子有非常多要注意的地方,但是受限於預算或交通距離的考量,不太可能什麼都要求到位,只能考量自己的需求與現實來做取捨

那麼以下是我根據個人的生活習慣以及主觀意見所整理的一些租屋條件,分享給大家參考看看~

初步篩選

首先是初步的篩選,初步篩選我會根據地點跟預算,還有物件類型。

2022年1月11日

JWT 是什麼?跟 Cookie 差別在哪裡?兩個常用使用者驗證機制的比較

JWT 概念介紹

JWT 是一種 Token,它的全名是 JSON Web Token。它由伺服器端產生後,交付給客戶端使用,Token 中會夾帶取多資訊,包含用戶的驗證資料或其他。

JWT 的表現形式是一個純粹的字串,這個字串有三個部分,分別為 Header、Payload、Signature,這三個部分會串接起來,用 . 來分隔,形成這樣的格式:Header}.{Payload}.{Signature},實際範例如下:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.B3GHLnjMFsZJc3K97UIWN68E8WovKxO0Qp6Ye4sVLzo

2022年1月8日

三個點是什麼?介紹 PHP Splat Operator,直接拆開 array 並讓 function 傳入不固定數量的參數

PHP 有提供一個由三個點連在一起的語法 ... ,官方稱呼它為 ... operator 三點運算子. 或稱 Splat Operator。是 PHP 5.6 版後提供的新功能,它有兩種用法:

  1. 提供參數數量可以變化的函式,也就是可以傳入的參數數量不是固定的
  2. 陣列分拆 (unpack)
本篇是 PHP 系列,更多 PHP 相關文章請參考 → PHP 系列

2022年1月6日

資工、資管差在哪?資管就是資工加管理嗎?資工數學要很好嗎?

資工跟資管系是很常被拿來比較的科系,我也很常被問這樣的問題。

其實這個問題很難三言兩語就答完整,大部分時候我可能會隨便敷衍一下,「資管就是資工加管理啊」、「沒那麼資也沒那麼管」,打發掉一些只是湊熱鬧的人。

但是如果用這樣的方式回答正在選科系的人,或正在懷疑自己在幹嘛的人,可能就有點太不負責任了。

於是我興起了寫一篇文章來稍微認真一點回答這個問題的念頭,主要的對象應該是高三跟大一﹑大二的學生吧。

不過預防針先打在前面,這篇文章是根據我個人的經驗,每間學校的資工系跟資管系還是有一點差異,建議選填志願之前,還是以各校的課程規劃為主XD

2022年1月2日

寫給 PHP 新手的物件導向教學(四):this,self 與 static

上一回《寫給 PHP 新手的物件導向教學(三):封裝,可見度與繼承》。

在前面幾篇文章中,有稍微帶過 $this 的用法,因為只是簡單帶過,所以沒有詳細說明,因此在這一回,我們會討論更多關於 $this 的部分,另外本回也會討論另一個容易跟 $this 混淆的 self 及 static 的用法。

$this

$this 是 PHP 預先定義好的變數,在物件內部被用來表示自身。

2022年1月1日

2021 年終回顧與工作雜感

轉換跑道的一年

今年是個適合轉換跑道的年份,除了自己,身邊也有許多人在 2021 年換了工作。也許是疫情的關係,沒有地方可以去,多了很多在家裡靜下心來思考的時間。

以前人常常說,不要一直換工作,對履歷不好看。這是有道理的,面試官可能會覺得這個人抗壓性不高,穩定性不足,況且只待短短的時間,很難做出一些成效。所以大家都會希望一間公司至少待個一年,比較好尋覓下一份工作。

但如果不幸進到一間公司,工作內容與自己想要追求的職涯差異過大,還要死命撐下去嗎?我個人認為,若是經濟狀況尚可,還是及早認賠殺出吧。

2021年12月18日

PHP 執行效能測試,比較 PHP 8.1、8.0、7.4 實測結果,Laravel 8 速度提升了 15%

2021 年 11 月底, PHP 8.1 釋出了。每次釋出新版本時,官方總是不外乎地會宣稱新版本的執行速度提升了。可是到底是不是真的有提升?就算有提升,是提升多少呢?實際上有感嗎?可能要實測才知道。

於是我這次就想要來親身體驗看看,實際測試看一下效能提升了多少。

本次會利用 Laravel 8.x 範例應用來做測試,測試的工具為 ApacheBench。

2021年12月17日

PHP 8.1 來了,新功能與特性快速介紹

在 PHP 8.0 發佈一年後,PHP 8.1 在今年 2021 年 11 月 25 日也發佈了。

去年我曾寫了一篇文章,介紹 PHP 8.0,而過去這一整年,我在開發上也實際使用了不少 PHP 8.0 的新功能,例如 Nullsafe operator、match 及 Constructor property promotion 。

這些改進跟新功能,替開發帶來不少方便跟效率。我相信這次的 8.1 版本,PHP 團隊也會帶來不少令人驚豔的地方吧!

本篇一樣會介紹一些我感興趣的新功能,搭配一些簡單的試玩。大家可以參考看看。