紀錄一下軟體工程的每個專案/產品通常都會有以及應該要有的一些過程
mindset
- 價值優先,優先做有價值的/長期有複利效應的工作
- 早點雇用到好用的員工、新進員工能早點上手就是可能長期有複利效應的工作
- 如何快速迭代,fail fast
- 太晚跟客戶確認需求與實作出來的東西,方向錯了走的路都是浪費
需求文件/規格
- User Story
- 模組功能
- 角色/使用權限
- 要蒐集/測量哪些資料,什麼樣的資料當指標可以很好的解釋市場/使用者行為
- 使用者行為的資料
- 維運需要的資料
- 畫面設計的準則
- 畫面/功能的等待時間
- 同時可服務人數
- 推播訊息,推播同時最大人數/頻率/即時性
- 服務的SLA,SLA的定義
專案管理
- 進度
- 怎麼追蹤feature/issue/bug,怎麼與版本控制的commit結合
- 怎麼分配ticket
設計文件
- 依照需求推算出的系統需求
- 系統架構
- 傳輸協定
程式碼
開發環境
- IDE
- 程式撰寫風格準則
- 套件檢查程式碼準則
版本控制
- Git/SVN
- 程式碼存放處
- 版本控管的流程
- Git Flow/其他設計
使用者介面端
Web App
- 對RWD的要求
- 對不同瀏覽器的要求
- 對SEO的要求
- 對無障礙設計的要求
- PWA
- SPA,優缺點,是否適用
- JavaScript框架
- CSS preprocessor
- 打包,壓縮,CDN
- i18n,l10n
Mobile App
- 要支援的平台Android/iOS
- 平台的要支援版本
- 要用Native App/Hybrid App/還是其他產生App的方式開發
- 發佈,上架
伺服器端
- HTTPS
- 選語言、框架、ORM
- 不同端點的傳輸協定TCP/UDP/MQTT等等
- 使用者註冊,驗證(authentication),MFA,忘記密碼,session/JWT等等,OAuth,SSO
- RESTful API設計
- API的即時文件,swagger
- 設計錯誤處理、API回應、log
- 是否已經要scale out
- load balance
- message queue接收事件
- worker處理事件
- 行動端的推播訊息
- i18n,l10n
資料庫端
- 哪些/多少資料要存SQL/NoSQL
- 哪些/多少資料要cache,cache策略
- 哪些資料要用index
- 哪些資料做正規化
- 哪些資料不做正規化
- 是否要scale out, 依需求考量CAP然後選適用的資料庫/服務
- 怎麼樣做對Machine Learning時資料比較好處理
CI/CD
- 檢查是否有不符合準則的程式碼
- 自動compile
- 自動測試
- 自動佈署
雲端
- 選平台AWS/GCP/Azure
AI
- 整理資料
- 訓練模型
- 佈署
測試
- 單元測試
- 功能測試
- 整合測試
- 資安測試
- OWASP
- 壓力測試