Hai thuật ngữ "Developer" và "Programmer" thay thế lẫn cho nhau. Có vẻ như cả "developer" và "programmer" đều có bằng cấp, trình độ, kỹ năng công nghệ thông tin nào đó. Ít ai để tâm phân biệt rõ. Chức danh cho chuyên gia CNTT khá là loằng ngoằng, bài viết này sẽ giải thích cặn kẽ hơn một chút nhé.
Những thuật ngữ này được các công ty sử dụng theo thói quen. Senior Software Developer ở Google thì được gọi là Programmer Analyst at IBM.
Dưới tôi danh sách định nghĩa tôi tìm và tổng kết được. Để tiện hình dung, mình so sánh với nghề nấu ăn. Sau khi bài viết lên được vài phút nhiều ý kiến cho rằng Developer tham gia vào phát triển đa dạng hơn, Programmer thì thiên về lập trình. Ví dụ để làm ra ứng dụng mobile một developer cá nhân (hay gọi là indie developer phải giỏi cả thiết kế giao diện, trải nghiệm người dùng).
Programmer: Được cho là một người đạt đến cấp độ chuyên gia ở một ngôn ngữ lập trình (Java , PHP , C). Vậy một sinh viên CNTT học vài ngôn ngữ lập trình trong trường đại học, nhưng khi ra đi làm, anh ta chỉ lập trình PHP, MySQL, HTML, CSS, thì gọi chức danh sao cho đúng: Web Programmer. Nếu chuyên thiết kế, lập trình CSDL thì gọi là Database Programmer, chuyên code mobile app thì gọi là Mobile Programmer.
Quy chiếu sang ngành ăn uống: Programmer tương đương thợ nấu ăn nấu thành thạo một số món ăn Á, hoặc Âu. Mấy chú sinh viên CNTT mới ra trường thì tương đương thợ nấu tập sự gọt hành, rửa bát, bưng bê. Có thêm từ nữa khá gọn là coder dành cho anh em mới vào nghề. Viết mã đúng nhưng bản thiết kế chi tiết, chạy ít lỗi, hoặc copy code có sẵn, chỉnh sửa nghiệp vụ đi một tý chạy được ngon là rất tốt rồi. Coder chăm chỉ, chỉ khó học hỏi, rút kinh nghiệm, làm 2 - 4 năm sẽ thành developer. Các sinh viên CNTT các trường đại học chính quy, tốt nghiệp xong cứ nghĩ mình là kỹ sư phần mềm. Không phải đâu các bạn ạ, các bạn làm coder nhiệt huyết cho mình 4 năm đã. Đừng vội đi học cao học, vì như thế các bạn chưa có kinh nghiệm lập trình lại lao vào những thứ cao siêu. Về Việt nam dở ông dở thằng, chả ai thuê.
Developer: Thành thạo ở mức chuyên gia một vài ngôn ngữ khác nhau. Ví dụ developer có thể lập trình iOS Swift và lập trình Node.js, JavaScript, MongoDB. Một thuật ngữ phổ biến khác hiện nay gọi là Full Stack Developer. Ở Việt nam, kiếm một mobile nghiêm túc đã khó, chứ Full Stack Developer thì cứ phải 20 developer may ra tìm được một người. Developer tương đương thợ nấu ăn làm được món Á kết hợp món Âu, lâu lâu lại học thực đơn mới qua sách, vở hoặc học theo bếp trưởng để thử làm món mới. Anh Nguyễn Hà Đông, tác giả Flappy Bird là mobile game developer trúng số độc đắc.
Programmer Analyst: Lập trình viên có khả năng phân tích, kết nối, tích hợp giữa các hệ thống khác nhau. Ví dụ: lập trình ứng dụng di động và web cùng kết nối dịch vụ web service của một phần mềm CRM. Chữ
Analyst (phân tích) đây yêu cầu lập trình viên không chỉ có kinh nghiệm lập trình, mà cần phải phân tích, chọn lựa công nghệ phù hợp: dùng Postgresql hay MongoDB, sử dụng SOAP/XMP hay REST/JSON, cơ chế Request-Response hay là Publish - Subscribe, Push hay Pull... Programmer Analyst không thể chỉ lập trình giỏi, mà cần hiểu cả hệ thống như Windows, Linux, Docker, ảo hóa, điện toán đám mây, các vấn đề bảo mật.... Trong trường hợp nào, dùng giải pháp nào để hiệu quả, tối ưu, tiết kiệm, an toàn, bảo trì tốt nhất luôn là câu hỏi không dễ trả lời. Programmer Analyst giống như đầu bếp giỏi (bếp trưởng) với một số tiền hữu hạn, làm sao lên menu cho các thợ nấu, nấu được món ngon nhất, khách hàng hài lòng nhất. Để lên Programmer Analyst thì một lập trình viên giỏi, ham học hỏi chắc cần phải làm nhiều dự án khác nhau, đa dạng trong 8-15 năm.
Systems Analyst: Người thiết kế kiến trúc thông tin mục đích nâng cao hoạt động kinh doanh qua hệ thống thông tin. Programmer Analyst tương đương bếp trưởng. Thì System Analyst là người quản lý cao cấp nhà hàng: làm sao chỉ có một bếp trưởng giỏi trong tay, từ một nhà hàng ban đầu khá đông khách, mở thêm được thêm nhiều nhà hàng khác. Làm sao tối ưu được nguyên vật liệu: mua thật rẻ, bán giá cao, mà khách hàng vẫn đến. Làm sao phục vụ tại nhà hàng rồi kết hợp bán hàng qua mạng để doanh số tăng nhanh. Xử lý thế nào khi bếp trưởng nghỉ, tuyển ai vào thay thế?
Software Engineer: Được cho là người thiết kế ra những thành phần cốt lõi mà Developers & Programmers có thế sử dụng và phát triển. Nhưng con người như thế này thực sự đặc biệt. Họ có thể chỉ xuất thân từ Developer, nắm rất sâu một ngôn ngữ lập trình, tình cờ hoặc đam mê tạo ra một công thức khác biệt để hàng triệu người khác dùng theo. Gương sáng thì có Ryan Dahl, viết ra Node.js, hay John Pemberton, một dược sỹ phát minh ra đồ uống Coca Cola, hay David Heinemeier Hansson sáng tạo ra Rails hay cụ Linux Torvals sáng tạo ra Linux.
Còn lại ở các tập toàn lớn như Google, Facebook họ sẽ phải mức lương rất tốt (120 nghìn USD - 150 nghìn USD / năm) cho Software Engineer để tạo ra các thư viện thực sự cải tiến hiệu suất, tính năng, trải nghiệm của sản phẩm. Ở Việt nam software engineer hầu như không có luôn. À có, mình mới biết một đồng chí Võ Duy Tuấn, làm ra khá nhiều phần mềm hay, trong đó Litpi Framework viết trên PHP đã chạy tốt cho nhiều khách hàng. À thêm anh nữa mình biết là Nguyễn Đình Nam ở Hà nội, code C++, thuật toán nén video cực tít, sáng tạo ra chuẩn nén video rất tiết kiệm băng thông, mình đã xài thấy ổn. Link dịch vụ đây nhé http://us.vp9.tv/info/
Computer Scientist: Nhà khoa học máy tính họ sáng tạo ra những thứ nền tảng căn bản. Các gương sáng chói như Bjarne Stroustrup sáng tạo ra C++ , Edsger W. Dijkstra phát minh ra thuật toán tối ưu. Gần đây
có một bộ phim cực hay "Imitation Game" về Alan Turing, cha đẻ của máy tính hiện đại, máy tính có thể lập trình để chạy tự động được. Alan Turing có thể coi cha đẻ của các loại cha đẻ máy tính. Shannon đặt nền móng cho Information Theory, mà giờ đây các thể loại nén ảnh, nén video, truyền tin phải dùng. Robert Mecalfe và David Boggs cùng phát mình ra chuẩn Ethernet. Tim Berners - Lee phát mình ra Word Wide Web. Không có mấy cụ này, thì các bạn còn lâu mới Google, FaceBook và xem bài viết này của mình.
Ở Việt nam nếu có nhưng computer scientist thì chắc có trên giấy tờ, bằng cấp, bình bầu lẫn nhau thôi hoặc khá hơn là cải tiến một số điểm nhỏ của một thuật toán XYZ chứ còn tạo ra một cái gì thực sự dùng được thì chắc là chưa. Nếu ai có ý kiến khác thì liên hệ mình, mình cập nhật lại.
Thế Bill Gates, Steve Jobs ở đâu trong phân loại này? Họ chả ở đâu cả.
Khi trẻ họ là developer như Bill Gates, eletronics hacker như Steve Jobs. Họ giỏi kỹ thuật, công nghệ, nhưng điều làm họ trở nên đặc biệt và đi vào sử sách là họ là sáng tạo sản phẩm và thiên tài về PR, bán hàng. Bill Gates phát minh bản quyền, giấy phép sử dụng phần mềm thay vì bán đứt hay lập trình thuê như các lập trình viên trước đó vẫn làm. Steve Jobs xây dựng phong cách Apple bán sự tò mò, thèm khát, thời trang, sự mãn nguyện, trải nghiệm cho khách hàng chứ không bán một máy tính, điện thoại gồm nhựa, sắt, silicon cho khách hàng. Họ là ông chủ và là người tạo công ăn việc làm cho hàng trăm nghìn , có thể là triệu người trên thế giới.
Thế tác giả bài viết bài này đang ở đâu? Trường hợp nếu có bạn độc giả nào hỏi khó.
Mình là lập trình viên (developer) --> programmer (mình code được C++, C#, Swift, Objective-C, JavaScript, Java... khá nhiều thứ, chung quy để bán sức lao động thôi, chuyển đổi công nghệ mới với mình khá dễ, mặc dù mình chả có bằng cấp gì liên quan đến tin học). Mình có thể phân tích được hệ thống (system analyst) và tạo ra khá nhiều sản phẩm mobile, web và gia công cho khách hàng. Bạn (công ty nào) cần phát triển ứng dụng mobile iOS, web Node.js thì liên hệ đội mình. Đội nhỏ khoảng 10 người ở Hà nội, code khá tít, làm nhiều dự án cho khách hàng nước ngoài rồi. Giá không rẻ, nhưng làm cẩn thận, chất lượng ngon.
Viết cả một bài dài ngoằng thế này mà không có tý quảng cáo bán dạo thì phí quá. Email của mình đây nhé cuong@techmaster.vn .
Bình luận