1,990
踏出程式新手村!掌握敏捷式軟體開發流程
10% 購買約可得199點
更多
消費提醒:
(1) 精選課程 需透過 LINE 購物前往 Hahow 好學校官方網站消費,並在同一瀏覽器於 24 小時內結帳,方享有 LINE POINTS 回饋資格。
(2) 唯有「精選課程」(https://hahow.in/apselect-event)和「指定活動頁面課程」符合回饋資格,在此頁面外的課程皆不符合LINE POINTS 回饋資格,或可以於 LINE 購物商店直接搜尋課程名稱,確認是否符合回饋,自行連結至他處所購買之課程將不會回饋 LINE POINTS 點數。
(4)點數回饋上限以單筆訂單計算。
(5)取消訂單或退貨行為,不具贈點資格。
(6)點數將於付費並無退貨後 30 天前後發送, 是否符合回饋資格請洽 LINE購物客服詢問 。
1,990近期未降價,現在買不吃虧現在買不吃虧
$1,990歷史高價最高價$1,990歷史低價最低價
商品描述
學習程式的風潮在近幾年愈加興盛,越來越多人開始自學程式,坊間也出現大量的實體或是線上程式課程。大部分的人在上完入門課程後,了解到了程式語言的基礎概念,學到了「寫程式」的能力,卻在踏入業界第一次參與專案的時候,發現真正的軟體開發流程與自己在課堂上寫程式完全是兩回事。即便同學在上完程式入門後有自行開發專案,也都是從參考別人的程式碼開始,把所需的功能實現後便完成了。沒有用戶,自然也沒有機會確認需求,不需要把專案部署上線,也不需要事前做好設計,更沒有任何人會要求你做好測試。真正踏入業界之前,沒有機會了解完整的開發流程,進入職場後,更不能有人循序漸進的教導每個步驟該怎麼做,結果就是自學程式的同學往往很難系統性地學習這方面的知識。❗️ 溫馨提醒: 課程需要程式基礎,這門課「不」適合「從來沒有寫過程式初學者」喔!想要掌握軟體工程領域,對「軟體開發流程」有更全盤的了解絕對是必要的第一步!在一般課堂上學習程式技巧時所接觸到的練習題,與開始工作後會遇到的實際產品開發有非常大差異。相比於定義明確的課堂練習,真實的商業情境中不僅問題複雜、對於產品的正確性與可靠性要求嚴謹、而且會包含大量多人協作,不可能讓工程師按照個人意願或喜好開發產品。為了能順暢的開發大規模系統,企業早已開發出了一套框架,確保軟體開發可以在標準化的流程下進行。想要軟體工程的領域取得成功,清楚的了解軟體開發流程絕對是必要的第一步。在學校學習到的程式基礎和實際業界情境有哪些不同呢?1. 需要自行搜集並定義明確的產品需求現實中的專案不像課堂上的問題一樣有明確的問題定義,開發每一個產品、每一個功能之前都需要將商業需求轉化為工程問題。工程師需要與 PM 合作抽絲剝繭,共同確立客戶對產品的需求,以及各項需求是否可以達成。2. 複雜的架構導致不能直接動手寫程式大部分的產品,僅僅是一個功能都需要幾週甚至幾個月的時間開發,如果初期沒有完善的設計之後必定會出現大量的錯誤與混亂。另外,一般來說一個產品不會由一個人獨自開發,詳細的文檔可以讓溝通與任務分配更加順利。3. 要求的不僅僅是「功能齊全」的程式碼可以正常運行只是一個程式的最低標準,為了以後除錯、發布及維護更佳順暢,在寫實際產品程式碼的時候有許多細節必須要注意。4. 必須自己檢驗程式是否能正確運行真實的產品不會有其他人事先幫忙寫好評分系統,也不會有解答,程式的運行測試都必須要由開發者來完成。5. 最終的產品要可以在自己電腦以外的地方運行做練習時只會需要在自己的電腦上運行程式,但產品會需要「上線」,如何將產品部署到伺服器上也是一門學問。課程設計目標:從單純的「寫程式」進階到「軟體開發」這堂課的設計目標就是要帶著有程式基礎的同學了解軟體開發的流程,讓同學的思維可以從單純的「寫程式」進階到「軟體開發」。雖然這門課程沒辦法給予同學真實的客戶與專案,但會帶領同學完整得走過軟體開發流程,並詳細講解每個步驟的注意事項與重點,幫助同學理解並內化軟體開發的方法。什麼是敏捷式軟體開發?敏捷開發是目前業界最主流的軟體開發方法。由於軟體迭代時間短且靈活度高的特性,使用以往傳統工程的瀑布式開發方法會顯得過於笨重。為了讓軟體產品可以靈活地面對變化,便出現了更緊湊更輕量化的敏捷開發方法。實際上,敏捷開發不是一個考以直接套用的開發方式,而是一套概念與價值觀,是鼓勵團隊應該注重敏捷軟體開發宣言中所提到的原則:個人與互動 重於 流程與工具 可用的軟體 重於 詳盡的文件 與客戶合作 重於 合約協商回應變化 重於 遵循計劃而許多團隊在此原則上建構出了「敏捷開發框架」,這些框架則提供了實際執行「敏捷開發」的作法以及工具。這堂課會詳細介紹敏捷開發的原則,也會對 Scrum 以及 Kanban 這兩個在業界經常使用的敏捷開發框架進行介紹。特色 1:軟體開發的「通用」流程不論你現在在什麼公司就職,或是未來想進入什麼產業,只要是從事軟體開發的工作,你都可以使用這堂課所提到的方法來架構你的軟體開發專案。可以在這套方法的基礎上,對於不同專案的需求來做調整。特色 2:了解「為什麼」這樣做這堂課不僅會告訴你如何進行開發,還會清楚的解釋在各個階段做各個步驟的背後理由是什麼,讓同學可以系統性的學習整套流程。在充分理解各個步驟,同學們也能更靈活的把這套方法活用在真正的專案中。特色 3:專注於方法,而非程式技巧這堂課不會使用任何特定程式語言的進階操作技巧,也不會需要同學了解複雜的資料結構或是演算法。課程重點會放在建立一套正確的流程與觀念,讓大家在專案開發的過程中可以事半功倍。對於基礎比較好的同學,我有準備一些進階主題,讓各位可以學習更多。本課程將會分成七大章節,其中中間的五個章節會分別對應軟體開發的五大步驟第一章:軟體開發概觀課程的一開始,我會先帶大家快速的了解軟體開發的流程。我會講解在軟體開發中如何建立多人合作的基礎,還有到底什麼是敏捷開發,幫助同學為後面的章節做好準備。1-1 課程簡介1-2 多人協作與模塊化(Modularization)1-3 何謂敏捷開發(Agile Development)1-4 敏捷開發框架 - Scrum1-5 敏捷開發框架 - Kanban1-6 軟體開發流程(Software Development Cycle)第二章:定義問題任何一個企業進行軟體開發,必定是為了要滿足某個商業需求。在開始著手解決技術問題之前,工程師也需要了解其背後商業需求的本質,才能針對需求去提出並開發最適當的解決方案。在這個章節中,我會告訴大家要如何定義問題,敘述需求的方式,還有如何設定開發完成後的評量指標。2-1 定義問題的重要性2-2 需求(Requirements)2-3 用戶故事(User Stories)2-4 現有解決方案(Current Solution)2-5 價值與績效指標(Value & KPI)2-6 專案管理三角 - Scope, Resource, Time第三章:設計設計可以說是軟體開發的核心,好的設計可以讓實現、測試與使用等一切都變得容易。什麼是「好的設計」這個題材太過複雜,所以在這個章節中我們會著重在如何傳達你的設計,在設計文件中必須提到哪些資訊,以及為何這些資訊很重要。本章的進階單元會與大家討論進行軟體設計時可以考慮的三大方向,以及物件導向的四大基礎概念分別代表的意義,但是不會探討物件導向 Design Principles 或是 Design Pattern 之類過於進階的主題。3-1 設計的重要性3-2 程式介面(API)3-3 依賴(Dependencies)3-4 UML 設計圖(UML Diagrams)3-5 錯誤處理(Error Handling)3-6 時間表(Timeline)3-7 進階單元 - 簡易性(Simplicity)3-8 進階單元 - 操作性(Operability)3-9 進階單元 - 發展性(Evolvability)3-10 進階單元 - 物件導向(Object-Oriented Design)第四章:實現在這個章節中我不會特別教大家該怎麼寫程式,章節的重點會放在平時自己在寫程式時不會注意的細節。這些細節不會影響程式的正常運行,但會讓開發以及之後的維護更加順利。我會與大家解釋為什麼這些細節很重要,以及該如何將這些細節做好。本章的進階單元會帶大家了解軟體開發的兩大編輯器- Vim 與 Emacs 的優缺點,以及他們與 IDE 之間該如何選擇。4-1 軟體文件(Documentation)4-2 程式碼風格(Coding Style)4-3 配置文件(Configuration File)4-4 日誌(Logging)4-5 Git 版本管理4-6 先別急著寫程式!4-7 進階單元 - 編輯器的選擇:Vim, Emacs 與 IDE第五章:測試測試是在軟體開發中最容易被忽略的步驟,因為在寫程式時,大家肯定會希望可以盡快讓自己的作品開始運行,就往往會想跳過測試的階段。在這個章節中,我會帶大家了解最基本的測試步驟,各個不同階段的測試目的是什麼,以及什麼時候該進行什麼測試,也會介紹業界非常重要的 Code Review 是在做什麼。本章的進階單元會介紹一些在特定領域才會需要的測試,讓大家對測試有進一步的認識。5-1 測試的重要性5-2 測試技巧 - Stubs, Spies, Mocks5-3 單元測試(Unit Test)5-4 整合測試(Integration Test)5-5 端到端測試(E2E Test)5-6 程式碼審核(Code Review)5-7 進階單元 - 其他類型測試第六章:部署部署也是自行開發專案的時候較難接觸的,因為在多數情況下我們不會為了非產品的專案架設服務器,即便真的需要也會選擇簡單快速的部署。然而企業對於產品部署流程都要求相當嚴謹,不僅部署流程要全部自動化,也會避免任何的部署問題造成產品異常,影響客戶的體驗。本章節會講解自動化部署的概念,帶各位了解企業部署一個服務要經歷的不同階段。進階單元會介紹部署結束後的監測,需要監測如何哪些指標,以及我們是如何從運行的程式中獲得這些資訊的。6-1 部署的重要性6-2 持續集成與持續部署(CI/CD)6-3 部署到生產環境前的準備(Pre-production Stages)6-4 Canary 部署6-5 進階單元 - 監控(Monitoring)第七章:總結課程的最後我會簡單介紹工程師、產品管理以及運維團隊之間的關係,也會對於想在軟體工程這個領域更上一層樓的同學給予一些方向上的建議。7-1 下一輪開發7-2 PM 與 DevOps7-3 提升能力的下一步7-4 結語教學方式每堂課中概念講解的部分會使用投影片教學,而第 3456 章節會有專案作業,這部分則會是用 code 的講解搭配螢幕側錄的方式幫助同學吸收內容。回覆與作業設計這堂課鼓勵各位同學以新的方法重新審視自己以前或是現在手邊的軟體專案,課程結束後也歡迎各位與其他同學分享自己的專案成果。若是沒有自己的專案也不用擔心,老師會在課堂上實作一個簡單的點餐系統後端專案,會按著課程的編排分成五大階段:定義問題 - 了解並確定專案商業端的需求以及限制專案設計 - 著重於工程端的設計,並寫出一份簡單的 design doc實現 - 使用 Python + Flask + MongoDB 寫出一個點餐系統後端 API 測試 - 撰寫系統的各階段測試部署 - 使用 Github Action + Heroku 來了解 CI/CD 自動化部屬作業會帶著大家一步步體驗並了解軟體開發的流程,並且在最後同學會完成一個有完整文檔且完全自動化部屬的專案。其中專案會使用 Python + Flask 框架。沒用過 Python 或是 Flask 的同學也不用擔心,老師在專案設計上會避開 Python 專用的語法,相信只要你了解任何一種程式語言,就能理解每一行 code 的意義。專案作業中所有程式碼和說明文件,老師都會在開課時分享在 Github 上供大家下載。🚩 課程問答回覆頻率→ 學員可於問題討論區進行提問,老師將會以每週 3~4 次的頻率上來回答學員留言的問題→ 歡迎同學們踴躍繳交作業,此次作業沒有標準答案,但是會帶著大家了解軟體開發的流程,作業繳交的同時也歡迎你把困難的點紀錄下來,老師將會以每週 3~4 次的頻率上來回覆學員對作業的問題並提供回饋唷! → 歡迎同學將自己的專案分享於公開的 Github repo,讓大家可以一起學習與進步!若有異動會再另以公告通知同學們,感謝同學們的耐心等候! 講師目前於 Amazon Web Service (AWS) 擔任軟體工程師,杜克大學 Computer Engineering 碩士畢業。在軟體工程與資料科學的領域都有豐富的專案經驗,也曾在數個 consulting program 中為企業提供市場策略建議與競爭對手分析。個人 Linkedin 頁面:https://www.linkedin.com/in/jimmyleeshuyu/