# SE tutorial roadmap ## 基本 SE 能力 * 版本管理, git * add, commit * push, pull, remote * init, clone, fork * branch, merge * pull request * commit message style * [simple git tutorial](https://nulab.com/zh-tw/learn/software-development/git-tutorial/) * 依賴管理 * conan, cpp * python, poetry * 單元測試 * 可額外參考 Robert C. Martin 的 `clean code` or `Agile Software Development, Principles, Patterns, and Practices.` * gtest, cpp * pytest, python * 其它基本工具 * markdown, ssh * c/cpp * cmake ### 基本語法 * c * container_of OOP * cpp * compiler version knowledge, make_shared, lambda, template, atomic, optional ## SE能力提升 * OOP * SOLID principle * UML class diagram * design pattern * > veiw design pattern as implement result of OOP rather than standalone technique. * concurrent pattern * memory barrier, state machine, CSP, actor model, async/await * state machine * [State Machine Diagram Tutorial](https://online.visual-paradigm.com/tw/diagrams/tutorials/state-machine-diagram-tutorial/) * 3個寫法,swtich case, table based, function pointer * CSP * compare to actor model * actor model * compare to http request/response