Đây luôn là một sự đánh đổi.
Là một lập trình viên mới bắt đầu, bạn nên tự hỏi mình hai câu hỏi khi xem xét sử dụng lại mã so với phát minh lại bánh xe vuông:
- Tôi sẽ tìm hiểu thêm về vấn đề tôi muốn giải quyết bằng cách viết mọi thứ từ đầu, hoặc bằng cách tập trung vào miền vấn đề và đặt sự phức tạp sang một bên không quan trọng đối với vấn đề mà tôi quan tâm?
- Nó quan trọng hơn đối với tôi để giải quyết vấn đề trong tay hay quan trọng hơn là tôi hiểu một số khái niệm cơ bản?
Nếu bạn không phải hoàn thành dự án của mình, thật tốt khi quay bánh xe của bạn vào những vấn đề phức tạp mà người khác đã giải quyết, bởi vì bạn sẽ học được điều gì đó. Nhưng bạn có thể sẽ chuyển sang một thứ khác trước khi bạn "kết thúc", điều này có thể hoặc không quan trọng với bạn. Các dự án khác sẽ bắt đầu trông sáng bóng nhanh chóng khi bạn vượt lên trên một miền phức tạp trông đơn giản cho đến khi bạn bắt đầu cố gắng tự giải quyết nó.
Đừng ám ảnh về việc từ bỏ quyền kiểm soát vì bạn đang trì hoãn cách suy nghĩ của người khác; tập trung nhiều hơn vào những gì bạn đang cố gắng thực hiện.
Nếu mục tiêu của bạn là viết một trình phân tích cú pháp HTML vì bạn muốn hiểu cách trình phân tích cú pháp hoạt động, hãy thực hiện nó. Nếu mục tiêu của bạn là viết một trình phân tích cú pháp HTML vì bạn muốn vệ sinh đầu vào của người dùng hoặc chuyển đổi một số bit ngẫu nhiên của HTML, thì có lẽ bạn đã tập trung vào điều sai, bởi vì bạn có thể quan tâm đến ứng dụng phân tích cú pháp hơn là phân tích cú pháp . Nếu bạn cảm thấy muốn viết một trình phân tích cú pháp HTML vì bạn không muốn mất thời gian để hiểu thư viện của người khác, có lẽ bạn đang lãng phí thời gian của mình, bởi vì, ít nhất là trong trường hợp này, tôi đảm bảo người khác đã dành nhiều thời gian hơn để tìm hiểu làm thế nào để giải quyết vấn đề này hiệu quả hơn bạn sẽ có. Trong các trường hợp thực sự tầm thường, bạn có thể tiết kiệm thời gian bằng cách không sử dụng lại mã, nhưng trong các trường hợp phức tạp, trừ khi thư viện bạn sử dụng hút hoặc khả năng đọc tài liệu và mẫu mã hút,
Mặt khác, tôi sẽ nói rằng đáng để viết thư viện đồ thị của riêng bạn, vì bạn sẽ tập trung hơn vào các thuật toán cơ bản và các cấu trúc dữ liệu mà bạn sẽ có thể áp dụng cho các miền khác, ngay cả khi bạn kết thúc sử dụng thư viện của người khác khi bạn làm việc với những vấn đề đó.