Dat Hoang's Blog

Coder hay Engineer?

Khi nói về lập trình viên, mọi người thường sẽ có hai quan điểm trái ngược:

  • Học công nghệ thông tin ra trường toàn thất nghiệp, cũng chỉ đi cài Windows, crack Office, lương chả đủ sống.
  • Lập trình viên chắc là suốt ngày ngồi chơi mỗi tháng kiếm bộn tiền ấy nhỉ.

Theo tôi, cả hai suy nghĩ này đều đúng, phụ thuộc vào việc lập trình viên đó là Coder hay Engineer.

Một cách không chính thức, lập trình viên có thể được gọi bằng nhiều danh từ khác nhau:

  • Coder là những thợ code, họ tạo ra các sản phẩm phần mềm hoạt động được, và có thể tốt. Nhưng họ không quan tâm tới việc phần mềm đó có giá trị như thế nào, phần mềm đó có thể mở rộng trong tương lai hay không. Họ tạo ra sản phẩm theo yêu cầu, nhận phần lương thưởng của mình, và tận hưởng những điều đó.
  • Programmer là những người hiểu sâu về một mảng lập trình, họ sẽ tạo ra những phần mềm với chất lượng rất tốt, code sáng sủa và dễ mở rộng. Nhưng cũng như các Coder, họ chẳng quan tâm nhiều tới giá trị có thể mang lại, cũng chẳng quan tâm tới việc khách hàng có thích tính năng họ mới cập nhật hay không. Đối với họ, việc tạo ra một sản phẩm phần mềm tốt là mục tiêu duy nhất họ hướng tới.
  • Developer là những người có kỹ năng và tư duy toàn cục. Họ hiểu rằng việc tạo ra một sản phẩm hay thêm tính năng không những cần được thực hiện một cách tốt nhất, mà còn phải vì giá trị nó mang lại. Nếu một tính năng họ cho là cần thiết, nhưng khách hàng không cần, họ sẽ không làm. Hoặc nếu tính năng họ cho là nhảm nhí, nhưng người dùng cần, họ sẽ sẵn sàng để làm nó.
  • Engineer là những người có kiến thức sâu rộng về phần mềm cả về lý thuyết lẫn thực hành. Họ có khả năng tạo ra những hệ thống phần mềm lớn, và chịu trách nhiệm cho việc thiết kế, lập trình và vận hành hiệu quả sản phẩm phần mềm.

Hầu hết các công ty đều tuyển và gọi các lập trình viên của mình là Developer hoặc Engineer. Sự khác biệt lớn của hai nhóm này không chỉ là số năm kinh nghiệm hay trình độ, thứ chắc chắn có thể cải thiện được theo thời gian, mà là họ dành nhiệt huyết và coi việc phát triển phần mềm là một phần của cuộc sống. Họ cũng rất sẵn lòng học hỏi những thứ mới, đào sâu tìm hiểu cách giải quyết vấn đề.

Bản thân tôi, vốn là một lập trình viên bình thường, cũng xin phép tự nhận mình là một Engineer. Gần đây, tôi còn học được thêm một khái niệm mới và trở thành cái đích tôi muốn hướng đến, đó là Builder.

Builder là những người sẵn sàng hy sinh lợi ích bản thân vì sản phẩm phần mềm. Họ mong muốn sản phẩm phần mềm sẽ mang lại giá trị cho người khác. Khi sản phẩm không hoạt động như mong muốn, họ nhận lỗi về bản thân mình, chứ không đổ lỗi cho ngoại cảnh hoặc bất cứ ai khác. Nếu một người trong team không giải quyết được vấn đề, họ sẵn sàng giải quyết hộ người đó. Đối với họ, việc thực thi nội bộ diễn ra như thế nào không quan trọng, miễn là ngày mai khi người dùng quay lại sử dụng phần mềm, mọi thứ vẫn diễn ra thật hoàn hảo.

Các chức danh trên đây chỉ là tương đối và mang tính tham khảo. Người khác có thể gọi bạn bằng bất cứ chức danh nào, quan trọng là bạn biết mình có thể làm những gì và làm tốt tới mức nào.

Kể từ chuỗi bài về Machine Learning, đây là bài đầu tiên tôi viết sau khoảng 2 năm ngừng cập nhật blog, mở đầu cho chuỗi các bài viết về suy nghĩ cá nhân, công việc, cuộc sống. Xin chào và hẹn gặp lại ở bài viết tiếp theo.