thumbnail - Tự học lập trình khó đạt lương cao
Cúc La Mã
Hà Nội

Tự học lập trình khó đạt lương cao

Tôi thấy đa phần các bạn tự học lập trình, không qua đại học, thường làm việc theo phong cách "điền vào chỗ trống", khó có thể đi đường dài.

Thực ra, lập trình viên học đại học và lập trình viên nhảy ngang cũng không có quá nhiều khác biệt. Nhiều bạn tuy mang tiếng học đại học nhưng lại tự động bỏ qua hoặc học yếu những môn cơ bản hoặc nợ môn quá nhiều... Thế nên, họ cũng chẳng khác gì các lập trình viên nhảy ngang hay tự đào tạo. Tuy nhiên, nếu so sánh sự khác biệt giữa một lập trình viên học đại học (học một cách nghiêm túc, có học lực tốt) với một lập trình viên tự học, tự nhảy ngang, tôi xin đưa ra một vài ý sau:

1. Khác biệt về quy trình đào tạo: Các trường đại học đều có quy trình đào tạo rõ ràng, được kiểm chứng, cấp chứng chỉ hoặc được chuyển giao chương trình đào tạo từ những trường nổi tiếng, hoặc đạt chuẩn nào đó. Trong khi các bạn tự học, tự đào tạo lại thường không có quy trình rõ ràng, thông thường nó phụ thuộc rất nhiều vào bên cung cấp. Tuy nhiên, nhiều bạn học đại học có thể cũng chẳng khác gì mấy bạn không học do năng lực tiếp nhận kém.

2. Khác biệt về kiến thức cơ bản: Thông thường, trong trường đại học, sinh viên được học rất nhiều kiến thức cơ bản, cơ sở bên dưới về cách máy tính hoạt động. Đặc biệt là học rất nhiều môn Toán cao cấp (là dạng Toán cao cấp B, về độ khó chỉ thua Toán cao cấp A của ngành chuyên Toán). Xác xuất thống kê cũng là một dạng toán mà các bạn phải học trong chương trình đào tạo công nghệ thông tin (CNTT) ở đại học.

Các bạn cũng sẽ học đến từng bit nhị phân trong máy tính và can thiệp, đọc bộ nhớ bằng các phần mềm rất chuyên dụng để trích lọc hoặc xem nội dung lưu trữ trên máy tính. Cách các bộ phận máy tính hoạt động và can thiệp trực tiếp bằng ngôn ngữ và các chương trình do bạn tự viết bằng Hợp ngữ (Assembly). Các bạn cũng học trí tuệ nhân tạo với ngôn ngữ đầu tiên, cơ bản là Prolog. Rồi các bạn sẽ học cả đồ họa máy tính chủ yếu bằng cách tự code các cách vẽ các vật thể như hình tròn, hình elip, hình vuông, tam giác... bằng các thuật toán. Đặc biệt là thư viện đồ họa OpenGL.

Một khác biệt cơ bản dễ thấy nhất giữa lập trình viên được đào tạo đại học và tự học chính là ở khả năng học và sử dụng nhiều thuật toán hơn, bao gồm các thuật toán sắp xếp, các thuật toán phức tạp như Prim, thuật toán tìm cây bao trùm tối đại (k-best)... Đặc biệt trong môn Đồ thị máy tính. Thực sự, tôi không biết ai có thể tự học mấy kiến thức bên trên, vì rất ít thấy ai dạy chúng ngoài trường đại học.

Ở ngoài, người ta có thể dạy bạn một vài thuật toán nhưng không thể dạy bài bản giống trong trường đại học được. Cũng có thể có một số người được hướng dẫn hoặc có năng lực tự học vượt trội nhưng số này cực kỳ ít. Thông thường, những kiến thức này được học ở hai năm đầu tiên trong trường đại học, chủ yếu để hình thành các hiểu biết cơ bản ở bên dưới và tư duy logic.

Nếu đi tuyển dụng, có hai ứng viên, một người tự học và một người học đại học ra, chúng ta có thể thấy sự khác biệt chủ yếu khi hỏi về các thuật toán. Các bạn tự học về thuật toán có nguy cơ cao không trả lời được. Tôi học ra trường gần chục năm rồi, giờ hỏi lại các thuật toán, e rằng nhất thời không trả lời được. Nhưng nếu tự tìm hiểu lại một chút, chắc chắn sẽ nhớ ra và triển khai rất nhanh (lúc đi học tôi học rất tốt những môn này, điểm khá cao).

3. Khác biệt về kiến thức nâng cao

Thực ra, để viết được một phần mềm, bạn cần rất nhiều ngôn ngữ khác nhau, hiếm khi chỉ viết bằng một ngôn ngữ lập trình. Đó thông thường là sự kết hợp nhiều ngôn ngữ lập trình. Do đó, ba năm học đại học tiếp theo, các bạn sẽ học được nhiều ngôn ngữ khác nhau, được cố tình sắp xếp theo lộ trình có chủ đích của các chương trình đào tạo đại học. Các bạn tự học thường sẽ học những kiến thức lập trình trực tiếp giống như học đại học ở ba năm trên về kiến thức nâng cao này.

Nhưng vẫn có sự khác biệt giữa người học đại học và tự học nằm ở chỗ các "nguyên lý" lập trình. Đặc điểm này cũng giống như lúc viết văn, bạn biết lập dàn bài hay không vậy? Thông thường (không phải tất cả) các bạn sẽ làm theo kiểu viết tới đâu hay tới đó, kiểu điền vào chỗ trống là cách làm việc của các bạn tự học. Còn khi được đào tạo bài bản, bạn sẽ làm việc có kế hoạch rõ ràng, theo một khung sườn công việc đã được hình dung và sắp xếp. Đương nhiên, một số bạn tự học vẫn có thể đạt tới trình độ này nếu được người hướng dẫn hoặc là tự có cơ duyên học được.

Nếu viết và sử dụng ngôn ngữ lập trình thông thường, các bạn học đại học và tự học vẫn có sự khác nhau ở chỗ: Người tự học rất ít khả năng tự thọc sâu xuống hệ thống để tùy chỉnh các control, giao diện lập trình... theo cách tùy ý. Trong khi những bạn học đại học một cách xuất sắc có thể tự thiết kế lại các control, giao diện lập trình cơ bản...

4. Khác biệt về phong cách làm việc

Tôi thấy đa phần các bạn tự học không qua chương trình đại học thường làm việc theo phong cách "điền vào chỗ trống". Để lắp ráp vào một hệ thống, phần việc được chia, được phân công rõ ràng, thường phụ thuộc vào hệ thống, thư viện có sẵn. Nhưng các bạn được đào tạo đại học lại có thể tự làm từ A-Z (từ giai đoạn ý tưởng tới kế hoạch, sản phẩm cụ thể).

Đặc điểm đó làm các bạn tự học chỉ có thể làm việc được khi có "thư viện", framework, công cụ lập trình của người khác và họ chỉ sử dụng lại, lắp ráp lại. Nhưng khi bảo các bạn ấy tự can thiệp, chỉnh sửa thư viện, framework, công cụ lập trình... thì rất khó khăn nếu không nói là không thể, chứ đừng nói tự xây dựng, tự viết ra một ngôn ngữ lập trình của riêng mình.

Đương nhiên, có nhiều ngôn ngữ lập trình đã hỗ trợ bạn những cách tự chỉnh sửa giao diện với các thuật toán được viết sẵn, bạn chỉ cần lấy ra và dùng, nhưng bảo bạn nhúng tay vào để chỉnh sửa theo ý mình thì chỉ có người học chuyên sâu, bài bản mới làm được.

5. Khác biệt về mức lương, thưởng

Vấn đề lương thưởng nằm ở giá trị công việc bạn đang làm, nên nó phụ thuộc vào vị trí công việc mà công ty cấp cho bạn. Nếu giá trị đó cao thì đương nhiên lương thưởng cao, còn giá trị thấp thì lương thấp, thậm chí cả hệ thống nữa. Nhưng ở đây, tôi giả sử các bạn làm công việc có giá trị như nhau, ở cùng công ty, khi đó, đương nhiên việc bạn học đại học sẽ được công ty trả lương, thưởng lúc mới vào làm việc cao hơn những người tự học, và khả năng đi đường dài của bạn với công ty cũng sẽ cao hơn người tự học (do họ phải phụ thuộc người người khác).

Nhưng cũng đừng vì vậy mà vội cho rằng các bạn học đại học đều giỏi hơn người tự học. Thực ra, học đại học cũng chỉ là một cơ hội thôi, còn việc học được hay không, hay học theo quy trình như thế nào, năng lực học tập ra sao... đều phụ thuộc vào từng cá nhân. Giống như việc uống thuốc chữa bệnh vậy, cùng một bệnh, cùng một loại thuốc như nhau, nhưng có người khỏi, có người không khỏi là do mức độ cam kết thực hiện, tuân thủ quy trình, cũng như khả năng miễn dịch, đáp ứng thuốc của cơ thể mỗi người.

Các bạn có cơ hội học đại học cũng giống như các bạn có thuốc, có bác sĩ, nhưng mức độ cam kết thực hiện là tùy thuộc từng người nên kết quả rất khác nhau. Có người ưu tú, có người bình thường, có người lại dở tệ, không bằng các bạn tự học.

Theo Tuệ - VnExpress

Chủ đề liên quan

Chủ đề khác