Coder là ai? Dev làm gì?
Chắc hẳn các bạn từng nghe nhiều về các thuật ngữ: Coder, Programmer, Developer, Software Engineer. Vậy giữa các thuật ngữ chỉ lập trình viên như trên có thực sự khác biệt hay giống nhau? Bài viết này sẽ nói để mọi người phân biệt được họ. Nhất là bộ phận tuyển dụng nhân sự của những Công ty không chuyên về công nghệ thông tin
Không phải mình có ý chê các bạn tuyển dụng đó đâu nhé. Vì mỗi người, mỗi vị trí, bộ phận sẽ có sự hiểu biết nhất định về các vị trí, công việc cụ thể của người khác. Cho nên đôi khi có một vài tin tuyển dụng với yêu cầu như một Dev nhưng trả lương như Coder hoặc tuyển Coder nhưng vào việc làm như Dev (tất nhiên trừ trường hợp muốn đuổi khéo con nhà người ta ra khỏi công ty).
Cũng có vài bạn sinh viên mới ra trường nhưng bên khối kỹ thuật và nghành phần mềm nên thường gọi là kỹ sư phần mềm và thế là đôi khi lại lầm tưởng họ là Software Engineer nhưng thực ra họ chỉ là Coder mà thôi. Cũng có vài bạn Dev nhưng toàn bị gọi là Coder. Đau lòng nhất vẫn là từ: Nhân viên IT và lâu lâu còn bị sai đi cài win hoặc sửa máy in.
Thôi, mình không dài dòng nữa. Sẽ đi vào vấn đề chính nhé.
1. Coder – hay còn gọi là thợ code:
Ở vài Công ty IT có thể gọi họ là Junior Programmer hay Junior Dev. Từ thợ code chắc khiến bạn dễ hình dung hơn công việc của họ đúng không? Đa phần họ chuyên về môt loại ngôn ngữ lập trình như: PhP, Python, C#, Java… Thường những người này là sinh viên mới ra trường, có ít kinh nghiệm và chỉ chuyên viết code. Đừng hỏi hay yêu cầu họ kiểu:
- Em lên kế hoạch và làm phần mềm A
- Chỗ này nó bị sao ấy nhỉ? Mình cần thêm cái tính năng gì vào website nữa nhỉ?
- Đưa thuật toán nào vào đây?
- Bla bla…
Đừng trách họ khi họ trả lời là “Không” vì họ còn cần rất nhiều thời gian, kiến thức, kinh nghiệm để phát triển. Nhất là các bạn tốt nghiệp ĐH khối kỹ thuật ra trường mang ngay chữ Kỹ sư và các bạn cứ nghĩ kỹ sư phần mềm có nghĩa là: “Mình nó có thể gánh cả thế giới” thì tội các bạn ấy lắm.
Tóm lại, khi bạn có một vấn đề gì đó mà bạn biết rõ nó là gì, cần fix chỗ nào, phát triển làm sao. Tất cả đều được viết ra rõ ràng thì bạn cần một Coder để chuyển những điều đó thành ngôn ngữ máy tính.
2. Programmer:
Thay vì tờ giấy mô tả dài thườn thượt cho Coder thì bạn chỉ cần nói tên chương trình và để làm gì, mọi việc còn lại anh ta sẽ lo. Programmer được hiểu nôm na là cao hơn Coder một bậc vì ngoài kinh nghiệm viết code ra thì anh ta còn:
- Tập trung chuyên sâu một hoặc một vài hệ thống.
- Chuyên sâu được ít nhất một ngôn ngữ lập trình
- Tạo ra phần mềm máy tính bằng các ngôn ngữ lập trình.
- Hiểu rõ thuật toán.
Thế nên, khi bạn có ít trục trặc, bạn hiểu vấn đề gì nhưng chưa rõ cách thực thi ra sao, giải pháp thế nào thì lúc đó bạn cần một Programmer chính hiệu – một người thiết kế cấu trúc hệ thống phần mềm.
3. Developer – gọi tắt là Dev:
Sự khác biệt đôi chút giữa Programmer và Dev là Programmer thiết kế cấu trúc hệ thống còn Dev là nhân tố chính để triển khai và phát triển mọi phần mềm ứng dụng. Vậy Dev là ai?
- Là chuyên gia với việc sử dụng được nhiều hệ thống khác nhau. Xây dựng được phần mềm, hiểu rõ thuật toán ít nhất bằng Programmer.
- Sử dụng được nhiều ngôn ngữ lập trình.
- Kỹ năng khác: có tầm nhìn khái quát được vấn đề, phối hợp nhiều ngôn ngữ lập trình để giải quyết.
- Kỹ năng mềm: giao tiếp tốt trong đội nhóm; tiếp nhận, phân tích, xử lý, lên kế hoạch và phân bổ vấn đề cho thành viên khác như Coder và Programmer.
Tóm lại, khi bạn thấy mình có một vấn đề gì đó nhưng không thể định nghĩa, không thể nhận dạng và giải pháp ra sao thì bạn cần một Developer = phân tích + giải quyết + code.
4. Software Engineer – Kỹ sư phần mềm:
Đỉnh cao nhất trong giới viết code. Nếu các bạn mới ra trường với tấm bằng Kỹ sư phần mềm thì hãy cẩn thận khi xin việc nhé. Các bạn có thể tìm hiểu thêm: kinh nghiệm phỏng vấn cho coder mới ra trường. Từ Kỹ sư phần mềm chỉ người có đặc điểm sau đây:
- Thành thạo ít nhất 3 ngôn ngữ lập trình, rành về nhiều hệ thống, nhiều hệ điều hành.
- Áp dụng được những nguyên lý, kỹ thuật, công nghệ phần mềm vào việc phát triển phần mềm.
- Sử dụng được nhiều kỹ năng để thiết kế, xây dựng cấu trúc tổng thể.
- Kết hợp nhiều module lại với nhau để tạo giao diện trắng, cốt lõi của ứng dụng.
- Kỹ năng khác: phân tích yêu cầu người dùng, thiết kế, thử nghiệm, bảo trì, lên kế hoạch…
Như vậy, với một Kĩ sư phần mềm thì có thể xem họ là người xây dựng tổng thể một ứng dụng. Từ đầu vào là phân tích nhu cầu người dùng, tìm phương án, lên kế hoạch, phân bổ công việc, thực thi, cải tiến hoặc bảo hành ứng dụng.
Trên đây là vài thuật ngữ thông dụng trong nghành lập trình. Có thể hiểu từ Coder lên Kỹ sư phần mềm là cả một quá trình phấn đấu dài, ngoài các yếu tố chuyên môn ra thì cả thái độ làm việc tốt, cầu tiến mới giúp bạn nhanh chóng chinh phục được vị trí mong muốn. Ví dụ như cùng là Coder nhưng bạn A chỉ code còn B thì ngoài code ra còn cố học hỏi thuật toán, tìm cách giải quyết vấn đề thì B sẽ nhanh lên Programmer, còn A vẫn chỉ là Coder mà thôi.
P/s: Giữa Dev và Kỹ sư phần mềm còn có một bậc nữa là: Technical Architect. Technical Architect là những người dự đoán được các vấn đề, xâu chuỗi rất nhiều vấn đề lại với nhau giữa các Dev và Programmer.
Ảnh: sưu tầm.