Tôi nghĩ điều đó thực sự phụ thuộc vào định nghĩa "tốt" hoặc mục đích "tốt".
Ví dụ, hãy xem xét Java.
Hầu hết các công việc sẽ không giải quyết cho bạn bằng ngôn ngữ cốt lõi, họ mong bạn thành thạo với các API cụ thể (ví dụ, Swing cho GUI) hoặc thậm chí API của bên thứ ba (như tất cả các công cụ của Apache) . Bạn không nhất thiết phải biết mọi trường hợp góc.
Nghiên cứu khoa học và công nghiệp có thể yêu cầu bạn thực sự biết ngôn ngữ từ trong ra ngoài.Ví dụ, nếu bạn viết một công cụ phân tích tĩnh hoặc tối ưu hóa trình biên dịch, tốt nhất bạn nên biết về các trường hợp cạnh.
Trong giáo dục và trong QA, điều quan trọng là phải biết tất cả các góc kỳ lạ và rủi ro của chúng. Điều này là điển hình với C++. Trong giáo dục, bởi vì bạn có thể trông cậy vào những sinh viên mắc những sai lầm này một cách vô tình. Trong QA, bởi vì đó là nơi mà một số lỗi của weirder nói dối (ví dụ, điều kiện chủng tộc trong khởi tạo tĩnh). Đối với cách các tính năng được triển khai, tôi nghĩ bạn có thể là một lập trình viên tuyệt vời mà không biết làm thế nào một số thứ được thực hiện (ví dụ, chi tiết của VTBL trong C++), nhưng điều quan trọng là phải biết những thứ khác được triển khai như thế nào (ví dụ: thu gom rác, quản lý bộ nhớ, một số thư viện) để viết mã thực sự tốt và hiệu quả.
@epochwolf - Cảm ơn bạn đã chỉnh sửa, trông sẽ rõ ràng hơn nhiều! – Pranav