# 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