---
# System prepended metadata

title: 第一次月會筆記
tags: [月會筆記]

---

# 第一次月會筆記
- build presentation with AI: [Gamma app](https://gamma.app/)


### 技術的重要性
- 技術 vs 管理？
  - 如果技術不夠很有可能帶團隊一起往錯誤的方向前進
- 面試挑公司：這間公司的創辦人有人是技術長嗎？
  - 沒有的話可能很難去學習到一些技術知識

- 專精 vs 廣度
  - 定義
    - 專精：精通一項技術或工具，深入研究、探索，達到能獨立開發的水準
      - 如果你一整天的問題 chatgpt 都能回答那可能就要擔心專精的部分了
    - 廣度：掌握多種技術，能解決多樣的問題，可應對業務的多樣性，廣度關係到發揮綜合效益

- 為什麼應該先求專精
  - 提高核心競爭力：追求更深廣的專業能力，達到一定的高度，可以優化技術結構，提升核心競爭力
    - 公司的專案跑多久很重要：如果今天公司有技術債（活下來的公司才有技術債），如果你是想碰新東西，去接案或者新創公司，大公司會面對許多 legacy codebase (如何去度過這個舊換新的考驗就是前往資深的一條路）
    - 如何突破冒牌者症候群：你發現這件事只有你知道，你可能需要去翻 source code 去解決某個問題，可以培養自己信心。當你投入地夠多，可以去發現某個套件本身的問題，或者某個 API 或 Application 的問題時，發現對方沒考慮到的問題時，就可以累積信心跟心得，是往 senior 重要的一步。
  - 提高技術美感：專精不僅要追求功能的實現，還要透過技術來提高使用者體驗，注重技術美感
 
- 如何判斷自己在一件事情上的理解是否夠深入
  - 試著教給別人：你可以清晰地向別人解釋你的概念並回答他們的問題，你就可以確信自己已經理解這個概念。
  - 挑戰自己：在熟悉的領域之中，嘗試解決更複雜的問題，或者學習一些新的技術。
  - 跟專家交流：和行業內的專家交流，了解他們的觀點，並詢問他們的建議，可以幫助你更好地了解這個領域。

- 如何在專精後追求廣度
  - 定立目標：選定想學的技術領域或業務，並透過不斷學習和實踐實現目標。
  - 融合已有知識：將專精的技術運用到新學的技術領域或業務，整合已有的
      - 既有的知識可以幫助理解新事物。
      - Kotlin 發表怎麼那麼多人就發教學相關的東西？：他懂其他類似語言的框架，在學習新東西時可以直接有靈感去找到一些問題或新的知識
  - 學習交流：尋找志同道合的人，進行技術交流和互相？

- 工欲善其事必先利其器
  - 你會不會google?：能否根據問題找到solid的答案，並好好地闡述（可以的話進來工作也不會太差）e.g. js 中沒有 class 的概念
  - 你熟不熟悉IDE&打字速度是否夠快
  - 硬體配件：
  - 程式語言＆技術框架：
  - 學習資源與社群資源：
## 生產力提昇 (14:45 ~ 15:30)
### 1.程式編輯器與開發者工具
* 開發不同的語言會用不同的編輯器
	* java IntelliJ
	* 不同語言大家用的編輯器會不一樣
    * VsCode
	* 插件
		* for 心情：計時/sparkle
		* 錯字
		* Code Spell Checker
		* codegpt: 寫 unit test / refactor
		* copliot
	* DeBug
		* F5 開發者工具
		* 中斷點 (時間序比較複雜)
		* react developer
		* Responsive APP （介面測試）
		* charles: 抓包工具
		* 手機測試：ngrok
	* Terminal
		* 可以用 code 打開 vscode
		* zsh-autosuggesion
		* zsh-syntax-autohighlighting
		* git config 設定 alias

        ```
        [user]
            name = XXX
            email = ooo@gmail.com
        [filter "lfs"]
            clean = git-lfs clean -- %f
            smudge = git-lfs smudge -- %f
            process = git-lfs filter-process
            required = true
        [alias]
            co = checkout
            br = branch
            st = status
            up = fetch --all --tags
            tagg = tag -l --sort=-v:refname
            logg = log       --oneline --graph --decorate --pretty=format:'%C(yellow)%h %C(magenta)%ad %C(cyan)%an%C(green)%d %C(reset)%s' --date=short-local
            loga = log --all --oneline --graph --decorate --pretty=format:'%C(yellow)%h %C(magenta)%ad %C(cyan)%an%C(green)%d %C(reset)%s' --date=short-local
            tree = log --graph --pretty=oneline --abbrev-commit
        [pager]
            branch = false
            #log = false
        [core]
            excludesfile = /Users/<username>/.gitignore`
        ```

### 2.硬體配件
* keyboard: Leopad、HHKB
* 滑鼠：垂直滑鼠、觸控板。從用手肘控制滑鼠改成用手指控制滑鼠
* 降噪耳機
* dock、usb hub：一對多個螢幕、usb 裝置的話很方便
* 升降桌、靠背、腳踏墊：脊椎只有一條
* 螢幕
* 筆電支架：墊高螢幕，對脖子比較友善
* 延伸扶手：桌子深度不夠的情況，可以考慮用延伸扶手，讓鍵盤滑鼠更靠向桌子邊界，騰出桌面空間
* 筆電：拿著就走、到哪都可以用很方便
* 螢幕擦拭布：墊在鍵盤和螢幕中間可以防止螢幕髒掉
* 請公司租用算力強的雲端機器
### 3.程式語言與技術框架
* 快速了解新技術: 上 YT 看影片、跟著技術文件摸索、使用 chatGPT demo
* 一些可能碰到的瓶頸：要當 mentor、照顧家庭、兼顧 project or product owner ... etc
### 4.學習資源與社群資源
* 成長經驗
    * 「非本科，進公司跟著任務做、查到什麼學什麼，覺得學習沒有效率...」
    * 上過全端課程，大致可以分類後覺得自己對後端比較有熱情。
    * 做中學。還沒統整清楚會覺得混亂。**還沒用到的時候要學，會覺得學得很無聊**。任務結束後，已經得到知識後，再重來一次會怎麼做
    * 程式語言是為了解決問題而被創造出來的，了解是為了解決什麼問題、付出的代價跟缺點是什麼、在什麼場景下適合使用
* 學習資源
    * conference: PyCon、Ruby 默默會、Coscup
        * 研討會議程不是只有技術，也可以知道其他人最近在玩什麼、把技術應用在什麼地方。
        * **Lightning Talk**
    * 程式 Bootcamp 的 roadmap，從裡面挑自己有興趣的內容
        * Total Typescript
        * Alphacamp、五倍紅寶石（十八銅人）
        * github 搜尋 {Backend, Frontend, Devops} roadmap
    * 官方文件：e.g. React native，跟著 quickstart 先早一遍



## 資訊本科重要嗎？
- 什麼基本知識很重要？
  - 程式語言理論：什麼是物件導向程式設計？什麼是函數式程式語言？有沒有指標？什麼是Garbage collection？為什麼R是所謂的統計用語言？
  - 資料結構與資料庫：不管是前後端多少會遇到資料結構與資料庫的議題，什麼是SQL、NoSQL，什麼是List, hash, areay等等？
    - 刷題的意義：知道各個資料結構的效能與在什麼情況要用哪種資料結構
  - 網路與分散式系統：從瀏覽器到 DNS 到 TCP/IP，這些網路協議大概做的事情是什麼？如何將資料分配到多台主機上？什麼是負載平衡、什麼是 CAP 理論？

## 深度討論
### 前端
### 後端
- 輪流自我介紹：工作使用的程式語言、3 個工作上用到的工具或技術的關鍵字、自己遇到的問題、覺得前輩什麼地方厲害
- TODO(gaga)
- 流量、Scalability
    - 錢能解決的事情就是小事
    - 小流量想怎麼寫就怎麼寫
        - 寫入 DB lock table，背景運作的。**Rollbar**、**後台的執行人員**
	    - critical zone
- 程式可讀性、架構
    - DDD、Solid、Clean Archicture
    - Ruby 物件導向。為了追一行程式碼在哪、要開 6 7 的檔案
    - 未來一定要拿掉：耦合。棄用也方便
- 資料庫的選擇
    - *資料的儲存、選型*。side-project 有根 senior 工程師討論
    - 技術選型不只技術方面的東西：對現在的自己很方便、**對未來團隊維護、入門**
    - data analysis。持久性存 RDB、mongo bson
        - 第一版：業務面變動太快
        - 第二版：dynamodb
- 要解決的問題
    - 為什麼誕生：**解決什麼突破的問題**，深入、現況、瓶頸
    - framework：express、koa 更早之前。有歷史背景。每一個背景
- 流程改善
    - mindset：過去的自己累積成今天的自己
        - 輸出導向：列自己做了哪些嘗試、自己不懂的。問同事得到反饋。
          logseq.order-list-type:: number
        - 建立流程：例子：建立一個 endpoint，大家都知道怎麼寫。跟原先公司架構設計、怎麼決策跟 trade-off。
	  logseq.order-list-type:: number
		- 變成自己的開發流程
		  logseq.order-list-type:: number
- @gaga
    - 卡片盒筆技法、第二大腦、間接式筆記
    - build, measure, learn。三步工作法
### 資料

## Q&A

## others
wifi 密碼：54324104

## 閒聊
活下來的公司才有技術債 -> 好有道理
來不及打完阿哭 東西好多  ＋1
還一直被擋住哭
直接要ppt了 -> 好
