Học lập trình cũng giống như học ngoại ngữ, mà ở đây chính là ngôn ngữ lập trình máy tính. Ngôn ngữ lập trình cho phép bạn giao tiếp với máy tính, ra lệnh cho máy tính thực hiện một loạt các công cụ, lệnh thực thi để hoàn thành một loại công việc nào đó. Máy tính ở đây bao gồm cả các bộ phận cần vi xử lý trong các máy móc khác như máy in, TV, điện thoại thông minh, máy móc sản xuất...
Điểm khác biệt giữa ngôn ngữ lập trình và ngôn ngữ giao tiếp hằng ngày của con người là trình độ thực hiện, tiếp thu của bên lắng nghe. Các thế hệ ngôn ngữ lập trình hiện tại chưa phát triển được tới mức chỉ mô tả yêu cầu, mục đích của người ra lệnh mà máy móc làm theo mà vẫn ở mức các bạn phải mô tả cách thức, phương pháp thực hiện. Đương nhiên tương lai thế hệ ngôn ngữ lập trình thứ 5, thứ 6... nào đó có thể phát triển mạnh tới mức này.
Chính sự khác biệt căn cản đó đã tạo ra những loại ngôn ngữ lập trình khác nhau phù hợp với từng trình độ máy tính:
Với những hệ thống "yếu", cấu hình không cao như máy in, máy giặt, firmware... (vi xử lý bên trong không mạnh mẽ như các máy tính chơi game, làm việc...) sẽ sử dụng các ngôn ngữ lập trình cấp thấp như Hợp ngữ, C... Đặc điểm của các dạng ngôn ngữ này là hỗ trợ xử lý ở mức thấp (giống như bạn nói những thứ đơn giản, dễ hiểu, kiểu câu đơn...) do đó không có khả năng mô tả mạnh mẽ như các ngôn ngữ lập trình bậc cao. Tức là khi bạn yêu cầu máy tính xử lý một việc gì đó, bạn phải chi tiết nhất có thể, từ mô tả các thức thực hiện đến "từng chân tơ, kẽ tóc".
Điều này làm cho các dạng ngôn ngữ này kén người học, vì đa phần các bạn phải code rất nhiều cho một việc nhỏ. Theo kiểu bạn nói nhiều nhưng mà hiểu ít, nên sẽ rất vất vả. Nhưng ưu điểm là nó tham ra nhiều vào mảng sản xuất bằng các sản phẩm thực tế, số lượng lớn ví dụ như máy giặt, máy in, các đồ gia dụng khác... nên sẽ bán được khá nhiều, khiến lương thưởng rất cao và ngôn ngữ không có biến động lớn, không có tính đào thải nhanh. Vì ít người học nên thời gian bạn ở lại trong nghề cũng rất cao.
Với những hệ thống mạnh mẽ, giải quyết các bài toán lớn, phức tạp, người ta sẽ có các ngôn ngữ lập trình cao cấp hơn như C++, C#, java, javascript, html, sql, python, lua, kotlin... Đặc điểm của những loại ngôn ngữ lập trình này là nó cho phép bạn thực hiện được nhiều nhiệm vụ phức tạp hơn, mô tả cách thực hiện phức tạp hơn, yêu cầu cũng cao hơn. Nhưng những ngôn ngữ này có mức độ biến động, tiến hóa rất nhanh, tính đảo thải công nghệ lớn.
Ưu điểm của nó là dễ học hơn, code ít hơn, nhưng được nhiều hơn nên đỡ mệt hơn, khiến rất nhiều người theo học. Điều này làm cho thị trường lao động khá dồi dào, nhưng vì mức biến động, tiến hóa lớn nên sớm bị đào thải (thông thường các lập trình viên 35-40 tuối sẽ phải nhường sân chơi cho giới trẻ vì không cập nhật kịp cái mới hoặc bị quen tay với cái cũ, không học được các giải pháp mới).
Nhược điểm của ngôn ngữ lập trình này là các sản phẩm chủ yếu là phần mềm, không gắn giá trị trực tiếp với phần cứng như các ngôn ngữ cấp thấp, nhúng... nên thị trường ít hơn, sản phẩm bán ra cũng ít hơn, thu nhập cũng ít hơn đáng kể. Thêm nữa, việc phát triển phần mềm có chi phí đầu tư, sản xuất không lớn bằng việc sản xuất phần cứng và firmeware...
>> Làm IT lương cao không cần học trường top
Để học một ngôn ngữ lập trình, bạn không phải vất vả nhiều như ngôn ngữ nói, giao tiếp của con người, vì có các "luật chính tả, cú pháp" rõ ràng, được quy định rất nghiêm ngặt. Thường chỉ cần học trong vòng bảy ngày tới sáu tháng là bạn có thể viết phần mềm được, tùy trình độ ngôn ngữ và khả năng tiếp thu. Vậy nếu học nhanh như vậy, bạn cần gì tốn thời gian đi học đại học?
Thực ra khi bạn học đại học, người ta chỉ cung cấp các nền tảng cơ bản cho khả năng tự học và hình dung cụ thể về nghề nghiệp trong tương lai, cũng như sàng lọc những ứng viên tài năng cho các chương trình nghiên cứu chứ không hướng mục đích bạn sẽ làm một việc gì cụ thể trong hệ thống sản xuất. T
rong hai năm đầu, các bạn sẽ học cơ bản về cách hoạt động, vận hành của máy tính và sử dụng các công cụ phần mềm nổi tiếng như Microsoft Office, Windows... Cũng như các thuật toán cơ bản để hình thành khả năng giải quyết vấn đề và tưu duy. Mục tiêu là cung cấp cái nhìn khi các bạn viết phần mềm thì hệ thống sẽ hoạt động ra sao (hiểu cách thức vận hành bên dưới).
Trong ba năm chuyên ngành tiếp theo (phân ban và học lập trình thường mất 5 năm chứ không phải bốn năm học như ngành nghề khác), đây là thời điểm các bạn làm quen với các ngôn ngữ lập trình phổ biến, các cách tạo ra các công cụ phần mềm, sử dụng, lắp ráp phần cứng, xây dựng kết nối hệ thống phần cứng (nếu bạn học về mạng và bảo mật).
Vậy có cách nào để không cần học đại học? Có những chương trình đào tạo sẽ giảm bớt hai năm học cơ bản của bậc đại học (hiểu hệ thống hoạt động phía dưới) mà dạy bạn chuyên ngành bên trên luôn. Tức là, các bạn có thể sử dụng hệ thống, tạo ra hệ thống, nhưng không cần biết nó vận hành, cấu tạo ra sao?
Đặc điểm của chương trình đào tạo này sẽ tạo ra những lập trình viên có thể sử dụng ngay, tốn ít thời gian đào tạo và đương nhiên họ là những lập trình viên kiểu phân việc cụ thể. Họ khó có khả năng tạo ra một hệ thống kiểu toàn bộ mà sẽ phụ thuộc vào một hệ thống sản xuất đã tồn tại, đã được chuyên môn hóa, phân việc hóa. Tức là, họ chỉ làm mỗi một việc cụ thể, ở một mảng công việc thể chứ họ không thể làm từ dưới lên trên toàn bộ hệ thống, cũng không thể hiểu được phía dưới hoạt động như thế nào.
Ví dụ, khi xây dựng một ứng dụng lấy dấu vân tay trong việc làm căn cước công dân, lập trình viên tham gia lập trình nhúng sẽ giải quyết phần code cho firmware của máy lấy vân tay (người quyết định hệ thống bên trên có được xây dựng hay không nằm ở người này). Khi hệ thống lấy vân tay thành công, sẽ có phần code, thư viện sẵn có, người lập trình phần việc bên trên viết ra ứng dụng phần mềm khai hồ sơ CCCD sẽ làm nhưng sử dụng thư viện do người lập trước đó cung cấp.
Người code bên trên này có thể được đào tạo theo mô hình hai năm, tức là phần việc của anh ta phụ thuộc vào người khác, phần việc của người khác. Anh ta không thể làm độc lập mọi khâu được. Với một người đào tạo đại học, anh ta có thể làm cả hai phần việc trên, tức là có thể viết thư viện hoặc đọc hiểu, cách vận hành của thư viện lấy mẫu vân tay trong firmware trên và code luôn cả phần mềm khai hồ sơ quản líý CCCD, thậm chí có thể tối ưu, chỉnh sửa tăng hiệu suất của phần mềm.
>> Đằng sau lương 100 triệu của kỹ sư IT
Quay trở lại vấn đề, có nên học lập trình từ nhỏ? Điều quan trọng nhất khi bạn làm lập trình chính là khả năng tưởng tượng và tính logic. Hầu hết những gì bạn làm trong ngôn ngữ lập trình là một dạng kiểu viết văn, viết tiểu thuyết... Tức là bạn phải nhìn thấy những màn hình, các bước thực hiện công việc của máy tính, người dùng, cách người ta sản xuất, bán hàng... nhưng lại được mô tả bằng các đoạn mã code, mã hóa.
Nhưng nó khác viết văn, viết tiểu thuyết ở chỗ bạn phải logic, thực hiện đúng các luật, quy tắc của ngôn ngữ lập trình, bạn không thể miêu tả viết những thứ thiếu logic, thiếu thực tiện vì nó sẽ không thể chạy được. Cho nên rèn luyện tính tưởng tượng, logic là cực kỳ quan trọng với lập trình hay các công việc có tính sáng tạo cao như vậy. Nhưng ngôn ngữ lập trình, như tôi đã nói, có thể học khá nhanh, nên không cần phải mất nhiều thời gian để học mà nên dành thời gian đó để rèn luyện trí tưởng tượng và khả năng logic thì hơn.
Khả năng lập trình của bạn phụ thuộc rất nhiều vào trí tưởng tượng của bạn. Cũng giống như viết văn, viết tiểu thuyết... có người chỉ viết được một đoạn văn, có người chỉ viết được một câu, có người viết được một bài văn, có người viết được cả cuốn sách, có người viết tác phẩm nổi tiếng, có người không... Có người có thể tự viết, có người phải nhờ người khác đọc, nêu ý tưởng còn mình thì chép lại...
Đa số các công ty lớn họ đã có ý tưởng, có đội ngũ sản xuất ý tưởng, nên chỉ cần các bạn viết một câu nhỏ, một đoạn văn ngắn. Khi đó, họ sẽ tuyển nhiều bạn vào và lắp ráp thành một hệ thống để có được một bài văn hoàn chỉnh trong khi các bạn mỗi người chỉ viết được một đoạn văn.
Phần mềm cũng vậy, cũng hoạt động theo cách tương tự, sản xuất theo cách tương tự. Rất ít người có khả năng viết được code hoàn chỉnh từ ý tưởng tới một phần mềm hoàn thiện có giá trị cao. Do đó, việc học thế nào phụ thuộc vào khả năng, mong muốn của bạn trở thành người như thế nào trong việc sản xuất phần mềm. Nếu bạn muốn tham gia một thị trường có sẵn, sản phẩm có sẵn, kiểu lắp ráp hệ thống thì có thể không cần chọn đại học, không cần phải có trí tưởng tượng sâu sắc.
Nhưng nếu bạn cần biến mình trở thành một nhà sản xuất phần mềm có giá trị cao, có thể mang lại sự khác biệt, làm từ A-Z thì nên tập trung vào trí tưởng tượng, vào khả năng viết lách, sáng tạo trước, khả năng am hiểu công việc của người khác... Nếu vậy, bạn cũng không cần phải học lập trình từ khi còn quá nhỏ mà tập trung vào rèn luyện tính logic, trí tưởng tượng... để có thể trở thành người khác biệt nhất theo kiểu "10 năm hành sự, sáu năm mài kiếm". Đặc biệt, hãy dành thơi gian rèn luyện tiếng Anh. Tiếng Anh học được thì không một ngôn ngữ lập trình nào có thể làm khó bạn.
>> Bạn có đồng tình với quan điểm trên? Gửi bài tại đây. Bài viết không nhất thiết trùng với quan điểm VnExpress.net.