Bạn có đang lẫn lộn giữa Nghiệp vụ, Concept và Khả năng Coding không?

12/2024

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ì?

  1. User gọi vào api đặt hàng
  2. Hệ thống kiểm tra số lượng hàng
  3. Kiểm tra xem còn hàng hay không
  4. Cơn tạo bản ghi => thông báo thành công
  5. 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
My Image
Xin chào

Mình là Thái, một lập trình viên fullstack với 5 năm kinh nghiệm trong lập trình web.