Làm sao để phân biệt được developer (nhà phát triển), engineer (kỹ sư), programer (lập trình viên), coder (thợ code), architect (thiết kế phần mềm) và consultant (chuyên gia tư vấn)?
1. Nếu bạn có 1 vấn đề rõ ràng và 1 giải pháp rõ ràng mô tả bằng ngôn ngữ tự nhiên hoặc mã giả, bạn cần 1 Coder để chuyển chúng sang ngôn ngữ của máy tính (Chỉ code)
2. Nếu bạn có 1 vấn đề rõ ràng nhưng không có giải pháp rõ ràng, bạn cần một Programer để giải quyết vấn đề, sau đó code (Giải quyết vấn đề + code)
3. Nếu bạn cảm thấy mình có vấn đề cần giải quyết nhưng không thể định nghĩa nó rõ ràng được, bạn cần 1 Developer để giúp bạn tìm ra vấn đề trước, sau đó xử lý nó (Phân tích + Giải quyết VĐ + code)
4. Nếu bạn gặp vấn đề, và bạn biết rằng đó chỉ là vấn đề đầu tiên của 1 chuỗi dài dằn dặt các vấn đề và bạn không thể dự đoán trước các khả năng có thể xảy ra trong tương lai, bạn cần 1 Architect. Tương tự nếu bạn có rất nhiều vấn đề, hàng chục hay hàng trăm Developer làm việc trong nhiều vấn đề khách nhau và không ai trong số họ cần phải bận tâm về bức tranh toàn cục, bạn cũng cần Architect.
(i. Phân tích thực tế + dự đoán các khả năng và đề xuất phương án giải quyết hoặc
ii. Phân chia bài toán lớn thành nhiều bài toán nhỏ cho các Developer giải quyết)
5. Nếu bạn không biết mình cần gì và không quan tâm tới chi tiết, bạn chỉ cần công việc của mình phải xong và có người làm hết mọi thứ cho bạn, bạn cần có 1 Consultant (Tư vấn hoặc lo hết toàn bộ công việc cho bạn, khiến bạn khỏi phải bận tâm về chi tiết)
6. Nếu bạn cần viết 1 email cho bất cứ ai đề cập ở trên, và bạn quên hết mấy phân tích phía trên, bạn có thể đơn giản gọi họ là Engineer.
Ghi chú:
i) Tạm dịch, một vài chỗ có thể không toát ý lắm
ii) Các phần bên trong ngoặc đơn là tự mình thêm vào và có thể chứa chút ít quan điểm cá nhân trong đó.
Nguồn: nguyenquangthien.com