Programmer, Software Engineer, Software Developer, Coder giống ra sao? Khác thế nào?
Trong bài viết này, tôi muốn so sánh sự khác biệt về suy nghĩ của người ngoại cuộc và người trong cuộc về lập trình viên. Có rất nhiều nhầm lẫn xung quanh các thuật ngữ nghề nghiệp của chúng ta. Mọi người không phân biệt được software engineer và software developer khác nhau như ...
Trong bài viết này, tôi muốn so sánh sự khác biệt về suy nghĩ của người ngoại cuộc và người trong cuộc về lập trình viên. Có rất nhiều nhầm lẫn xung quanh các thuật ngữ nghề nghiệp của chúng ta. Mọi người không phân biệt được software engineer và software developer khác nhau như thế nào. Còn có sự lẫn lộn giữa hai khái niệm developer và coder v.v. Chưa dừng lại ở đó, chúng tôi thậm chí còn bị ví như ninja, guru hay ngôi sao nhạc rock. Theo tôi, những từ như vậy đều có sự khác biệt hẳn hoi. Tất nhiên, đây chỉ là ý kiến của tôi nhưng tôi đã ở trong ngành này trong 15 năm. Nên tôi cũng có hiểu biết chút ít về vấn đề này.
Có thể bạn quan tâm:
PROGRAMMER! họ gọi là lập trình viên. Tại sao? Bởi vì họ nghĩ tất cả những gì chúng tôi làm chỉ là lập trình. Có thật không? Đó có phải là tất cả những gì chúng ta làm không? Tuyệt đối không! Điều đó không còn đúng trong tương lai nữa. Để phát triển một ứng dụng nào đó, bạn thậm chí không cần phải lập trình. Có một số tool và framework nhất định để bạn không nhất thiết phải ngồi lập trình. Phần lớn trong số đó là về cấu hình và các tùy chỉnh. Do đó, lập trình chỉ là một phần nhỏ trong công việc của chúng tôi.
Khi tôi nói chuyện với mọi người, với các tài xế Uber, hoặc các nữ phục vụ trong nhà hàng, tôi sẽ giải thích về công việc của tôi như thế nào? Nếu tôi dùng từ Programmer thì họ biết đó là gì. Họ sẽ chẳng thể nào hiều được Software Engineer (Kỹ sư phần mềm) là cái quái gì. Họ chỉ quen thuộc với thuật ngữ “kỹ sư” trong các ngành như sản xuất, kiến trúc hoặc xây dựng công trình. Vì vậy, khi tôi nói tôi là Software Engineer, họ thường nghĩ rằng tôi đang chế tạo một số vật dụng trong nhà máy hoặc đang làm trong các tòa nhà kỹ thuật nào đó. Cho nên, với những người không trong ngành, đừng nên tự nhận bạn là Developer hay Engineer. Dùng thuật ngữ Programmer đi, sẽ khiến họ dễ hiểu hơn.
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ừ Programmer. Coder 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.
Nếu chúng ta nói chuyện với người không trong giới, các bạn có thể xưng mình là Coder hay Programmer đều được. Họ sẽ hiểu chúng như nhau. Đó là bởi vì họ không hiểu được những gì bạn và tôi biết.
Tiếp theo, ta sẽ tìm hiểu về SOFTWARE DEVELOPER, được chứ? Tóm lại, Software Developer (nhà phát triển phần mềm) không đơn thuần chỉ là Coder hay Programmer. Software Developer cần phải hiểu tất cả các chu kỳ phát triển phần mềm, chưa nói đến việc phải thực hiện chúng.
Nhìn chung, các Software Developer cần phải hội tụ những yêu cầu sau. Họ cần giao tiếp với các cổ đông. Họ phải dự đoán được khả năng mở rộng và tính vững mạnh của toàn bộ hệ thống. Họ cần thu thập dữ liệu, kiểm tra và hỗ trợ. Nếu đó là một ứng dụng web, các nhà phát triển phần mềm cần phải suy nghĩ về cân bằng tải và khắc phục rủi ro, đồng thời suy nghĩ về hướng tối ưu hóa trình duyệt. Thường thì phát triển phần mềm có thể được đưa vào phát triển web, phát triển ứng dụng di động, phát triển Internet Vạn Vật. Thông thường, các Software Developer là những người giỏi nhất. Nếu bạn truy cập Amazon, bạn sẽ quen với cụm từ “Software Developer“. Họ sử dụng chức danh đó rất nhiều.
Còn SOFTWARE ENGINEER thì sao? Họ, theo tôi, thậm chí còn cao cấp hơn cả Software Developer. Tại sao? Kỹ sư thường là người hoàn thành bằng cử nhân về Khoa học Máy tính hoặc bằng Thạc sĩ. Họ cũng có nhiều kinh nghiệm thực tiễn. Chưa kể, cái quái gì họ cũng biết: thuật toán, cấu trúc dữ liệu, khả năng mở rộng, một vài ngôn ngữ lập trình (nếu không muốn nói là nhiều). Tuy nhiên, các chức danh và chức năng công việc đa dạng ở mỗi công ty. Một số công ty không có chức danh “Software Engineer” vì họ sử dụng “Software Developer” (Amazon) và ngược lại, một số công ty sử dụng “Software Engineer” chứ không phải “Software Developer”.
Thuật ngữ Engineer và Developer có thể hoán đổi cho nhau phần lớn nhưng Engineer lại có uy tín và đáng tin cậy hơn Developer. Hầu hết người thường sẽ hiểu nếu bạn nói Software Engineer hoặc Software Developer. Và đừng quên từ “Software” nếu không muốn bị hiều nhầm bạn đang phát triển bất động sản hoặc đang làm trong nông trại kỹ thuật nào đấy.
Techtalk via Webapplog