---
# System prepended metadata

title: SE tutorial roadmap
tags: [tutorial]

---

# 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
