Hôm trước mình rảnh háng, ngồi lướt facebook. Kéo kéo một lúc thì một bài viết hiện lên giữa rừng mông với vếu, mang tiêu đề rất kêu “Programmer, Software Engineer, Software Developer và Coder giống nhau và khác nhau như thế nào”. Trong đầu mình thầm nghĩ, “đm khác đéo gì nhau đâu”, nhưng tò mò nên mình vẫn mò vào ngồi đọc. Đọc xong mới thấy bài viết nhảm shit vãi lúa, toàn thông tin sai lệch. Thành ra hôm nay mình biên một bài - cũng nhảm shit không kém - để phản biện lại đám thông tin củ cải đó, tránh anh em mới vào ngành hiểu nhầm.

(Anh em nếu thấy bài viết hôm nay có hơi đanh đá thì thông cảm nhé, dạo này công việc hơi căng nên mình khó ở như con gái đến kỳ vậy )

Mình sẽ không share link bài viết đâu, ngu gì đi tăng traffic cho mấy cái trang độc hại đó - tại sao mình gọi mấy trang này bằng từ “độc hại” thì mình sẽ nói đến trong một bài viết khác. Nhưng nếu anh em muốn đọc các bài viết gốc, anh em hoàn toàn có thể google, vì mình trích dẫn y nguyên những gì các bài viết đó nói.

Trích một đoạn trong một bài của trang T trước 

Tiếp theo chúng ta hãy nói về từ CODER!Coder là ai? Từ Coder sẽ cao cấp hơn từ ProgrammerCoder không nhất thiết phải ngồi viết chương trình hoặc hệ thống phần mềm kiến ​​trúc cả ngày. Coder còn có thể viết mã. Đó là bởi vì mã chỉ là một số đánh dấu rất không cụ thể, thậm chí không phải là một ngôn ngữ lập trình phổ biến. Ngay cả Excel cũng có các hàm (function), và đó chính là mã đó! Haha!

Nhân tiện, HTML là mã. Hãy nghĩ về HTML. HTML là một ngôn ngữ đánh dấu rất đơn giản. Mã HTML có những dấu ngoặc nhọn, các thẻ HTML, v.v Có những công việc như Coder HTML hay Coder XML. Vì vậy, một Coder HTML chỉ đơn thuần lấy các mẫu thiết kế và đặt nó trong HTML. Họ thay đổi text và các tag. Họ không phải nghĩ về các tích hợp, hiệu suất, cụm, đám mây, các rủi ro,… Họ chỉ tạo ra các dòng code và danh sách tĩnh. Vì vậy, theo tôi, Coder không giỏi như Programmer, vì Programmer đòi hỏi ở người lập trình nhiều kỹ năng và kiến ​​thức hơn.

Chưa bàn đến những thứ cao siêu như phương pháp lập luận hay hành văn, anh em có thấy câu đầu đoạn trước vừa vung tay vả thẳng mặt câu cuối đoạn sau chưa? Không dừng lại ở đó, mình sẽ đưa tiếp một ví dụ khác, lần này là bài của một trang T’ 

1. Coder

Nếu bạn có 1 vấn đề rõ ràng và 1 giải pháp rõ ràng được mô tả bằng ngôn ngữ tự nhiên hoặc giải mã, bạn cần 1 ‪#‎Coder để chuyển chúng sang ngôn ngữ của máy tính (Chỉ code).

Coder thường được giao các công việc viết các đoạn mã đơn giản do các developer phân công. Trong một số trường hợp, coder còn được thay thế bằng “Junior Programmer” hoặc “Junior Developer”.

2. Programer

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. Developer

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ấn Đề + Code).

Tiếp tục bỏ qua các vấn đề về văn phạm tiếng Việt hay quy tắc trình bày văn bản, riêng nội dung phần 1 đã có sự mâu thuẫn. Nếu chỉ đơn giản là ông “coder” ít kinh nghiệm hơn ông “developer” thì tại sao không gọi luôn là “junior developer” hay gì gì đó tương tự, tại sao lại phải đẻ ra một khái niệm mới? Những tranh cãi vô bổ này cùng với các bài viết kém chất lượng mình đã trích ở trên đã làm tốn không biết bao nhiêu thời gian của mọi người. Nguy hiểm hơn, nó còn làm cho nhiều bạn bị cuốn vào thứ mà mình tạm gọi là sự ảo tưởng về mặt chức danh - các bạn để tâm vào việc người khác gọi mình như thế nào, thay vì tập trung vào những gì bạn có thể làm.

Nếu bạn chú ý, bạn có thể thấy rằng bản thân những gì được đề cập trong hai bài viết của hai trang T và T’ là không hề giống nhau, mặc dù mục đích chung của cả hai là giải thích ý nghĩa các thuật ngữ: Programmer, Coder, Developer hay cái gì gì đó nữa. Tại sao lại có thể có nhiều cách giải thích như vậy?

Tại vì các chức danh này không hề có định nghĩa thống nhất, vậy thôi.

Sự đa dạng về số lượng tên chức danh, cũng như ý nghĩa của chúng xuất phát từ thực tế là các công ty, tập đoàn khác nhau dùng những cái tên khác nhau để chỉ cùng một bộ phận hay một vị trí. Lấy ví dụ, Amazon dùng cái tên “Software Development Engineer” (Kỹ sư phát triển phần mềm), trong khi Google thì ngắn hơn một chút, “Software Engineer” (Kỹ sư phần mềm). Các công ty game thì thường có xu hướng mô tả công việc rõ ràng hơn trong chức danh, ví dụ EA sẽ có Java Engineer, Rendering Software Engineer hay Web Developer…. Nói chung là nhiều lắm, anh em chịu khó lên mấy trang tuyển dụng sẽ thấy số lượng chức danh khó mà đếm nổi.

Điểm chung ở đây, dĩ nhiên là phải có lập trình cùng các công đoạn liên quan như phân tích vấn đề và tìm ra giải pháp (ở đời đéo có ai vắt óc nghĩ ra giải pháp xong dâng tận mồm cho ông gõ code đâu ông viết bài ở trang T’ ạ). Còn lập trình cái gì hay các công việc khác phải đảm nhiệm là gì thì phụ thuộc vào công ty và vị trí.

Nói dông dài mãi, vẫn chưa nói rõ được công việc của Coder, Programmer hay Developer khác nhau như nào. Như đã nói ở trên, không có một khung nhiệm vụ thống nhất nào cả, vậy làm sao để biết được cụ thể công việc là gì?

Mở cmn mô tả công việc ra mà xem thôi chứ chờ đợi cái cc gì nữa hả giáo sư?