Làm chủ lập trình bằng cách tái tạo các công nghệ
Bạn sử dụng các framework và thư viện mỗi ngày. Bạn biết cách sử dụng các API của chúng. Nhưng bạn không biết cách chúng hoạt động bên trong như thế nào.
Triết lý "Build Your Own X" sẽ thay đổi điều này. Bạn tái tạo các công cụ nền tảng từ con số không để hiểu sâu về phát triển phần mềm.
Các công cụ hiện đại thường che giấu sự phức tạp. Cách tiếp cận này sẽ loại bỏ những lớp đó. Bạn sẽ phải đối mặt với những vấn đề thực tế mà các kỹ sư giải quyết hàng ngày.
Tại sao bạn nên làm điều này:
• Hiểu biết sâu sắc: Bạn học được lý do tại sao các công cụ tồn tại và những sự đánh đổi mà chúng thực hiện. • Giải quyết vấn đề: Bạn đối mặt với các thách thức về thiết kế, giúp xây dựng tư duy kiến trúc. • Debug tốt hơn: Bạn biết cần tìm ở đâu khi mã nguồn gặp lỗi vì bạn đã nắm rõ các thành phần bên trong. • Phát triển sự nghiệp: Các nhà tuyển dụng đánh giá cao những ứng viên có thể giải thích được cách thức và lý do đằng sau một công cụ.
Hãy bắt đầu từ những thứ nhỏ nhất. Chọn một thứ mà bạn thường xuyên sử dụng.
Ý tưởng cho dự án đầu tiên của bạn:
- Một web server đơn giản để xử lý các yêu cầu HTTP.
- Một trình rút gọn URL để ánh xạ các liên kết dài thành các mã ngắn.
- Một kho lưu trữ key-value để lưu dữ liệu trong bộ nhớ.
- Một trình phân tích tham số dòng lệnh (command-line argument parser).
- Một framework MVC nhỏ gọn để xử lý routing và views.
Đừng cố gắng xây dựng một công cụ dùng cho môi trường thực tế (production). Đừng lo lắng về bảo mật hay tốc độ ngay lúc này. Hãy tập trung vào logic cốt lõi.
Hãy làm theo các bước sau:
- Nghiên cứu công cụ thực tế. Đọc các tài liệu thiết kế và xem mã nguồn mở.
- Xác định các thành phần cốt lõi. Một web server cần các socket, một bộ phân tích (parser) và một cách để gửi phản hồi.
- Xác định một bộ tính năng tối thiểu. Nếu bạn xây dựng một trình rút gọn URL, hãy tập trung vào việc ánh xạ và chuyển hướng. Hãy bỏ qua tài khoản người dùng và phân tích dữ liệu (analytics) vào lúc này.
Hãy chọn một ngôn ngữ mà bạn đã biết hoặc muốn học. Mục tiêu là logic, không phải cú pháp.