鉅亨後端工程師養成速成班

寫程式前需要知道的事

Checklist

  • 公司E-Mail (人資?)
  • 加入Slask (Chris)
  • JIRA、Bitbucket、Confluence帳號 (忠和)
  • AWS ECR 帳號權限 (Chris)
  • 一台Mac UNIX like for Docker (齊木哥)
  • 連上公司網路 (齊木哥)

鉅亨後端技能樹 - 基本

鉅亨後端技能樹 - 語言

鉅亨後端技能樹 - 套件管理

https://slides.com/seta/composer#/

鉅亨後端技能樹 - CodeStyle

https://slides.com/seta/codestyle#/

PHP採CamelCase

資料庫欄位命名請依視現有資料表命名方式為準

鉅亨後端技能樹 - Testing

https://www.slideshare.net/jaceju/phpunit

鉅亨後端技能樹 - 資料庫

Cassandra

鉅亨後端技能樹 - 框架

鉅亨後端技能樹 - 其他

鉅亨後端技能樹 - Docker

https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/332070928/AWS+IAM+User

1. 開通AWS 帳號及MFA請找 Chris

2. 使用前請詳閱使用說明書Readme

鉅亨後端技能樹 - Docker

https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/332070928/AWS+IAM+User

1. 開通AWS 帳號及MFA請找 Chris

3. 使用前請詳閱使用說明書Readme

2. 下載https://www.docker.com/community-edition

4. 如果遇到問題請詢問DevOps Chris & Lynn

鉅亨後端技能樹 - 關於PR

1. 先要有Repository權限 (Chris)

2. Fork

3. 修改完後發PR

4. 請別人CodeReview

5. 不可以自已Merge自已的PR

PR範例:https://bitbucket.org/cnyesrd/cnyes/pull-requests/4267/gs-6101-get-magazins-news-list-by-joining/diff

鉅亨後端技能樹 - 關於PR - 2

1. 標題一定要有JIRA票號

2. 描述這張票在改什麼幫助Review的人進入狀況

3. 單元測試
a. Service = 商業邏輯
b. Repository存取邏輯
c. 其他連動邏輯

4. API測試(Postman)
a. 加Seeder
b. 寫Postman Script

鉅亨後端技能樹 - 關於PR - 3

5. 有存取DB一定要有 SQL  Explain

6. Cida(Jenkins)沒通過都不可以Merge

7. 寫API必需附上Response

8. 附上PHPUnit Coverage 

9. 別人CodeReview時會發問或質疑請務必讓別人了解你的想法與了解別人的想法

10. PR盡量避免過大難以Review

鉅亨後端技能樹 - SelfCheck

  • 移除所有修改/新增 檔案不必要的Class引用
  • 確認所有修改/新增 namespace 正確
  • 確認修改/新增 檔案 Code Style
  • 確認所有修改/新增 檔案 function 有 phpdoc
  • 確認所有修改/新增 檔案function 有 return type hint
  • 確認所有修改/新增 檔案 function param 有type hint
  • 確認你有執行過相關修改過的功能確認可運作

鉅亨後端技能樹 - CodeReview

  • 你要看的懂對方修改的部份在寫什麼? (了解)
     
  • 對方寫的邏輯有沒有問題? (理解)
     
  • 如果是我來寫有更好的做法嗎? (建議)

鉅亨後端技能樹 - Deploy說明

  • Jenkins
     
  • RunScope
     
  • 後續

http://ci.cnyes.cool:8080/

現有Repository

  • https://bitbucket.org/cnyesrd/cnyes (Laravel 5.1)
    (新聞、基金、後台、台股資訊源...下面沒有的就在這)
  • https://bitbucket.org/cnyesrd/ipower (Lumen 5.5)
    (IPower資訊源)
  • https://bitbucket.org/cnyesrd/john-crawler (Lumen 5.5)
    (銀行匯率爬蟲、加密貨幣爬蟲)
  • https://bitbucket.org/cnyesrd/quote-api (Lumen 5.5)
    (國際指數API、外匯API、貴金屬API)
  • https://bitbucket.org/cnyesrd/fund-old-driver (Lumen 5.6)
    (投資老司機專案)

程式架構簡單說

  • Controller - API界面
  • Foundation - 模組化特定系統或功能
  • Services - 商業邏輯
  • Repository - 資料存取邏輯
  • Modal - 資料庫界面
  • Jobs - Queue的Worker
  • Command - 排程或指令
  • Observer - 資存存取Event
  • Router - 控制EndPoint
  • Middleware - Controller前的中介層,如Token驗證

台股資訊源說明

  • .ENV設定說明
  • Socket 說明
  • 文件說明:https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/9273676
    https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/53706795
     
  • 程式架構:
    https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/411172915

API GuildeLine

  • https://cnyesrd.atlassian.net/wiki/spaces/BackendEngineeringTeam/pages/71946396/API+Guideline

SSH Jump

  • ssh seta@jump.jp.cnyes.cool
  • 請準備一把key給Chris
  • 用途:
    連到 int, beta環境的Database

Sentry

  • https://sentry.io/cnyes-inc-q6/

與DevOps

  • 如果你要加排程或Worker 上線前找Ops幫你設定
  • 要執行Prod SQL語法 
  • Jenkins壞掉的時後

驗證

  • Beta 驗證
  • 整合測試
  • 上線後Check

Q & A

工作心得分享

閒聊

關於Scrum

  1. Refinement估票盡可能的去理解細節及如何做
  2. Restore盡量抱怨
  3. Planing絕對專心思考提問,切票切細
  4. 盡量做自已沒做過的票

時間規劃

  • 6:30起床
  • 7:30出門(已吃完早餐...)
  • 8:30~10:00 (思考一下今天要做什麼?如何做?決定順序重要性)
  • 10:00~12:00 (專心解票 除了上廁所喝水 2小時)
  • 12:00~13:30 (吃飯+追劇 讓自已完全放鬆)
  • 14:00~17:00 (專心解票 除了上廁所喝水 3小時)
  • 17:00~18:00 (開始放鬆,做一些除了寫程式以外的事 etc code review, 討論...等 六點準時下班)
  • 19:00~20:00 (吃晚餐放鬆)
  • 20:00~22:00 (這又是另一個故事)
  • 22:00~06:30 (睡覺 8小時)

生理層面

  • 三餐正常,不挑食,睡眠充足+品質 (不容易生病)
  • 假日保持運動 (維持體力、補充專注力、放鬆全身)
  • 假日出去走走 (舒壓)
  • 打電動(練習專注、舒壓)
  • 星期日準時睡覺

心理層面

  • 信心 (了解自已、相信自已)
  • 紀律性 (知道什麼時後該做什麼)
  • 勇於挑戰 (不要怕犯錯)
  • 求知慾 (想三個方案 or 更多)
  • 心理調適 (犯錯時要正向思考,完成時要鼓勵自已)

程式設計師的工作是什麼?

  • 解決問題!
  • 寫程式只是解決問題的方式之一
  • 語言只是寫程式的工具之一
  • 技術只是解決問題的能力之一
  • 找到問題? (理解)
  • 規劃如何解決問題? 拆解問題 (破壞)
  • 執行規劃(再構築)
  • 思考等價交換

練習+學習

鈴木一郎說過:

一日不練,自已知道;

二日不練,對手知道;

三日不練,全場知道;

一個月沒寫程式,會心虛;

半年沒寫程式,失去信心;

一年以上沒寫程式,你確定你要繼續做?

 

程式設計師最重要的三種能力

1. 學習理解能力 (隨著年紀越大越差) 

2. 思考規劃能力 (隨著年紀越大越好?)

3. 執行實作能力 (隨著年紀越大越差)

Made with Slides.com