Lúc đầu học lập trình mình cảm thấy rất khó, khi bắt đầu 1 dự án mình không biết các chức năng là gì, khi bắt đầu 1 chức năng mình không biết luồng chạy ra sao. Khi bắt đầu làm 1 luồng mình không biết phải tổ chức code như thế nào, dùng logic gì để xử lý.
Về sau mình mới biết có 1 vấn đề làm mình cảm thấy rất khó ở thời điểm đó, đó là: Mình bị lẫn lộn giữa nghiệp vụ, concept và khả năng coding.
1. Vấn đề của người mới
- Cảm thấy coding khó
- Không biết bắt đầu từ đâu
- Không biết luồng có những màn/bước gì
Ví dụ: Chức năng đặt hàng
Luồng đặt hàng như thế nào, có những bước gì?
- User gọi vào api đặt hàng
- Hệ thống kiểm tra số lượng hàng
- Kiểm tra xem còn hàng hay không
- Cơn tạo bản ghi => thông báo thành công
- Hết thì báo thiết bại hết hàng
Vậy nếu sản phẩm còn 5, và trong vòng 3 giây có 100 người cùng đặt thì sao?
2. Khái niệm liên quan
Nghiệp vụ
- Định nghĩa
- Yêu cầu thực tế của dự án
- Định hướng mục tiêu và kết quả mong muốn
- Ví dụ: Chức năng đặt hàng
- Succeeded Order không vượt quá số sản phẩm
- Giải pháp tiêu chuẩn để xử lý các vấn đề
Concept
- Định nghĩa
- Mô hình tư duy được đóng gói
- Phổ biến
- Microservices
- Event Queue / Job Queue
- MVC
- Ví dụ: Chức năng đặt hàng
- Sử dụng Event Queue / Job Queue
Khả năng Coding
- Định nghĩa
- Thiên về khả năng viết code
- Có pháp ngôn ngữ
- Khả năng debug
- Tư duy logic
- Ví dụ: Chức năng đặt hàng
- User gọi lên api đặt hàng
- Hệ thống lưu lại bản ghi order với status: Pending
- Thông báo cho user đã đặt chỗ
- Interval 5s 1 lần lấy ra các bản ghi order có status pending xử lý, check sản phẩm
- Con hàng thì update order status thành success, gửi mail đặt hàng thành công
- Hết hàng update order status thành failed, gửi mail thất bại
- User có thể theo dõi trạng thái ở danh sách đơn hàng vào lần truy cập tiếp theo
- Số lượng đơn hàng thành công không vượt quá số lượng hàng đang có
3. Tại sao lại thấy khó?
- Đang học cả 3 thứ một lúc
- Không hiểu nghiệp vụ
- Thiếu kiến thức về Concept
- Nghiệp vụ
- Concept
- Khả năng Coding
- Chưa thể phân biệt
4. Giải pháp cho bạn
- Chọn cái đơn giản
- Nghiệp vụ
- Đi tham khảo/ăn cắp
- Đọc/học các Concept
- Sử dụng library/framework
- Concept
- Tham khảo code của người khác
- Tách biệt các yếu tố
- Hiểu rõ nghiệp vụ
- Làm từng bước
- Tham khảo/học concept cần thiết
- Coding đáp ứng nghiệp vụ/concept
- Refactor nâng cấp