iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0

如何開始Take Home Assignment

當收到Take Home Assignment之後該如何進行呢,Take Home Assignment基本上由幾個部分組成

  • 功能需求
  • 技術、語言、框架限制
  • 提交規範
  • 時間限制

以下是我個人整理出來的流程與想法。
我們以earnahaTake Home Assignment中的Candidate Exam: Back-End/Full-Stack Engineer來當作範例。
https://ithelp.ithome.com.tw/upload/images/20230917/201403589pkTCeTjKx.png

讀懂需求

作業的重點是裡面所提的必要項目,要先將這些完成再考慮加分項目,時間許可下才進行加分項目。

必須項目

  • 使用者註冊與登入功能(包含Email註冊、Google OAuth)。
  • 驗證Email與重發驗證信。
  • 用戶個人資料展示與編輯功能。
  • 重設密碼功能。
  • 使用Cookies實現自動登入功能。
  • 使用者資料庫與統計功能。
  • 使用Swagger或Postman進行API文件化。
  • 上傳專案至GitHub。
  • 系統部署與實際運行。
  • 只接受Typescript, Node.js, JavaScript; DB只接受RMDBS
  • 使用No-Code Front-End(Retool, Webflow)

加分項目

  • 密碼強度檢查。
  • 用戶活躍統計(如七日內平均活躍用戶數)。
  • 優雅的錯誤處理。
  • 數據加密和安全措施。

規劃時程

Take Home Assignment跟online coding test不管是全職找工作還是邊上班邊找都需要做時間上的規劃,不像online coding test可能最多3小時的測驗,Take Home Assignment可能需要10-20小時,橫跨數天才能完成,在時間安排上需要好好規劃。

考慮到這項作業要在三週內完成,而內容又較為繁重,時間管理顯得尤為重要。

規劃設計 30%

  • 系統架構設計:瞭解完需求後,即可根據Restful API格式設計API。這需要考慮如何實現Sign Up和Sign In的功能。
    • 設計Sign Up & Sign In Restful API Interfaces。
    • 將設計整理至doc中。
    • 建立postman collection & API Request。

需求實作 50%

實作上,我習慣先把所有架構和測試環境給建立好,並更新Readme文件之後才開始開發需求邏輯,以前先開發需求邏輯後面才發現部署上面有問題差點趕不上期限。

  1. 建立專案
  2. 安裝依賴lib
  3. 設計API interface
  4. 本機運行API server & Postman API測試
  5. 部署至線上平台 & Postman API測試
  6. 更新文件
  7. 開發需求邏輯

需求測試 20%

  • 單元測試
  • 整體功能測試

重視Code的質量

雖然是前測的作業,但重視Code的質量是自己專業能力的體現也是讓審核者在眾多作業中脫穎而出的關鍵。

SOLID

SOLID是OO設計和程式架構的五個基本原則,可以開發更有彈性、可維護和擴展的系統。
S: Single-responsibility principle (SRP) = 單一職責原則
O: Open–closed principle (OCP) = 開放封閉原則
L: Liskov substitution principle (LSP) = 里氏替換原則
I: Interface segregation principle (ISP) = 介面隔離原則
D: Dependency inversion principle (DIP) = 依賴反向原則

Gangs of Four (GoF)

設計模式是軟體設計中常見問題的通用可重用解決方案。GoF描述了23種設計模式,這些模式可以幫助解決常見的設計問題,不管這個在作業中有沒有提出,如果有機會使用的話可以加入設計模式。

選擇合適的工具與技術

IDE & 技術框架

選擇自己習慣開發的IDE,如果作業需求沒有指定框架的話,盡可能選擇自己熟悉的技術框架降低開發的時間。

測試你的code

Unit test

開發需求邏輯時可以先寫Unit test,test不一定是必需或加分項目但有寫Unit test的話在交付時除了比較安心對審查者也會有加分的效果。

建立檢查清單

check list or ticket

  • 使用者註冊與登入功能
  • 驗證Email
  • 用戶資料編輯
  • 重設密碼
  • 自動登入
  • 使用者資料統計
  • API文件
  • GitHub
  • 系統部署上線

ref

使人瘋狂的 SOLID 原則:目錄
設計模式:可復用物件導向軟體的基礎


上一篇
[Day 2] 什麼是Take home assignment
下一篇
[Day 4] Take Home Assignment實戰:我的經驗與分享
系列文
從實戰中學習:Take Home Assignment review & refactor30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言