25 năm trước, tôi học cơ khí, cũng được dạy cả lập trình. Lập trình hồi đó so với bây giờ đã quá lạc hậu, đã bị thải loại từ lâu. Tuy nhiên, nhờ được học những thứ cũ kỹ, lạc hậu ấy mà tôi có hiểu biết cơ bản về lập trình dù không phải là người chuyên lập trình.
Trong lập trình, điều đầu tiên là bạn phải tạo ra được phần cứng - cái mà ta gọi là điện tử. Có tạo ra được phần cứng thì mới hiểu rõ hiểu sâu được nguyên lý hoạt động của nó. Từ sự hiểu biết ấy bạn mới viết ra được firmware - là phần mềm giao tiếp giữa máy tính và người lập trình. Có firmware rồi bạn sẽ tạo ra hệ điều hành để máy tính "giao tiếp" với người sử dụng máy tính. Có hệ điều hành rồi bạn mới viết ra đủ thứ phần mềm ứng dụng để thực hiện một tác vụ nào đó như lướt web, xem phim, nghe nhạc, mua hàng online, tạo văn bản...
Những phần mềm ứng dụng này được viết thông qua một cách thức mà ta gọi là ngôn ngữ lập trình. Sử dụng ngôn ngữ lập trình nào phụ thuộc vào hệ điều hành có hỗ trợ ngôn ngữ ấy không. Ngành IT của nước ta hiện chỉ có năng lực viết phần mềm ứng dụng, còn hệ điều hành và firmware gần như không vì ta đâu có nghiên cứu chế tạo đồ điện tử (phần cứng). Đừng nói những thứ phức tạp như máy tính, điện thoại... ngay cả bộ phận điện tử đơn giản trên TV, máy giặt, tủ lạnh... ta còn không viết được phần mềm cho nó chạy, trừ khi nhà sản xuất những thứ này cung cấp firmware cho ta.
Nếu người Việt viết ra được firmware thì ta có thể sáng tạo ra đủ thứ sản phẩm công nghệ mà chỉ ta mới có, nước khác không có. Bởi vậy, 20 năm trước, lập trình viên Việt lập trình gia công cho nước ngoài thì 20 năm sau cũng vẫn vậy mà thôi. Chúng ta có thể sáng tạo ra phần mềm ứng dụng nho nhỏ thì được. Còn phần mềm lớn như web dò tìm địa chỉ như Google thì không. Đó là chưa nói tới những phần mềm nhúng trong trang web ấy như Facebook, Youtube.
>> Làm IT lương cao không cần học trường top
Về ngôn ngữ lập trình, lúc đầu người ta tạo cho bạn các câu lệnh (còn gọi là code). Bạn viết các câu lệnh ấy theo một thứ tự thích hợp (gọi là thuật toán) để tạo ra một phần mềm nào đó. Tập hợp tất cả các câu lệnh ấy chính là một ngôn ngữ lập trình. Học ngôn ngữ lập trình là thuộc và hiểu chức năng của từng câu lệnh. Tất cả những thứ này đều có sẵn trên mạng, ai học cũng được, chẳng cần phải có trình độ học vấn cao siêu gì.
Về sau, người ta viết các câu lệnh tạo ra một phần mềm nhỏ để máy tính chạy một tác vụ đơn giản nào đó. Phần mềm nhỏ này gọi là module. Tập hợp nhiều module tạo thành engine. Thứ tự các module trong engine (cũng là thuật toán) quyết định nội dung của sản phẩm công nghệ. Nếu bạn là người thích chơi game, bạn có thể đọc báo chuyên viết về game và những game lớn bao giờ cũng phải được thiết kế dựa vào một engine nào đó. Mua một cái engine tốn vài triệu đến vài chục triệu USD.
Từ engine này, bạn có thể tưởng tượng, sáng tạo ra vô số game khác nhau. Còn bảo nhà sản xuất game viết từng câu lệnh để tạo ra game thì họ cũng bó tay. Tương tự, Google, Facebook, Youtube... được thiết kế trên những engine thích hợp, chứ không thể bảo Mac Zukerberg và đồng sự lập trình ra những thứ đó. Những người tạo ra những engine khác nhau ấy gọi là nhà sản xuất phần mềm, đồng thời họ cũng là những người sáng tạo ra ngôn ngữ lập trình mới.
Tóm lại, bây giờ, người tạo ra sản phẩm công nghệ, chưa chắc biết lập trình; còn người giỏi lập trình lại chưa chắc tạo ra được sản phẩm công nghệ nào. Bảo người lập trình phải có đầu óc sáng tạo này nọ là chuyện không tưởng. Cơ bản là người sáng tạo sản phẩm công nghệ thuê người lập trình viết phần mềm với những yêu cầu gì đó, rồi lập trình viên viết ra phần mềm nhưng lại không hiểu chúng dùng để làm gì, để chạy cái gì, nhằm mục đích gì? Sự sáng tạo của lập trình viên là viết ra cái phần mềm làm thế nào đáp ứng được các yêu cầu mà người ta đòi hỏi một cách tối ưu. Chỉ vậy thôi.
>> Các bài viết của tác giả Lâm
Đó là nỗi đau của ngành lập trình Việt. Nỗi đau ấy bắt nguồn từ việc ta hoàn toàn không tạo ra được phần cứng nào. Nếu 25 năm trước, ta không "đi tắt đón đầu", bỏ tiền của công sức ra nghiên cứu và làm chủ công nghệ điện tử thì bây giờ ta chính là người sáng tạo ra sản phẩm công nghệ, thậm chí sản xuất ra phần mềm, tự sáng tạo ngôn ngữ lập trình và thuê ai đó lập trình cho ta chứ không phải ngược lại.
Chúng ta thường hay nói "công nghệ 4.0" nhưng chẳng có công nghệ nào không dựa trên nền tảng cả. Cái mới luôn dựa trên cái cũ. Công nghệ IT dựa trên nền tảng công nghệ điện tử bán dẫn. Chúng ta không có 3.0 (điện tử bán dẫn) thì làm thế nào để tạo ra 4.0 (công nghệ thông tin)? Chúng ta sẽ còn lập trình thuê đến bao giờ? Giá trị của việc lập trình trên một sản phẩm công nghệ là rất nhỏ bé, gần như không đáng kể.
Bạn có đồng ý với quan điểm của tác giả Lâm?
>> Bài viết không nhất thiết trùng với quan điểm VnExpress.net. Gửi bài tại đây.