# Approach a new system

### Khi tiếp cận một hệ thống mới, nên follow theo những hướng như sau:

1. Tìm hiểu tổng quan của system, architecture
2. **Đào sâu** từng module của system, **phải** hiểu tất cả câu trả lời của những câu hỏi dưới đây:
   * Module/service này là gì?
   * Tại sao lại cần nó?
   * How it works?

### Khi hiện thực feature/service/module mới cho system:

1. What is the most important thing that we need to do right now
2. Trả lời câu hỏi **Tại sao lại cần nó?**
3. List ra những solution hiện có (from google, github, community, ...)
4. List advantage and disadvantage of all solutions
5. Choose right tool for right job&#x20;
6. Cố gắng tìm tất cả document có sẵn, những thứ related với vấn đề cần build
7. Hiểu những inventory **hiện có** trên system để hỗ trợ cho the new thing

### Khi module/service cũ có lỗi:

1. Tìm mọi log của module/service đó, có thể là log của service, có thể là log từ webapp, log từ các module connect tới nó
2. Đọc hiểu kĩ càng, **hiểu rõ lỗi** trước khi bắt tay vào fix
3. **Hạn chế** rebuild all the thing from scratch, nên dựa vào những step, những document có sẵn, xem người trước họ implement thế nào, tại sao họ lại làm vậy?
