Bài viết đã được cập nhật vào:
Danh sách các câu hỏi:
- Anh ơi, mới học lập trình thì học cái gì đầu tiên?
- Em đã học xong ngôn ngữ C (hoặc C++), em nên học ngôn ngữ gì tiếp theo?
- Mới học lập trình thì học ngôn ngữ nào vậy anh?
- Học lập trình có khó không?
- Em yếu tư duy lập trình, em làm thế nào để cải thiện?
- Em học lập trình kém, làm sao để cải thiện?
- Không học Đại học, Cao đẳng thì có theo CNTT được không?
- Không học Đại học, Cao đẳng mà học trường nghề có được không?
- Học ngành không phải CNTT thì có thể làm về lĩnh vực CNTT & lập trình được không?
- Đi làm có cần bằng Đại học không anh?
- Em là sinh viên CNTT sắp ra trường…?
- Học lập trình có cần giỏi Toán không?
- Học lập trình có cần giỏi tiếng Anh không?
- Em chưa biết gì, muốn học lập trình thì mất bao nhiêu thời gian?
- Làm nghề CNTT lương có cao không? Có sợ thiếu việc làm không?
- Em muốn lập trình web, nên bắt đầu như thế nào?
- Em muốn lập trình mobile app, nên bắt đầu như thế nào?
- Em muốn lập trình game, nên bắt đầu như thế nào?
- Em muốn làm về lĩnh vực mạng máy tính (an ninh mạng, quản trị mạng,…), nên bắt đầu như thế nào?
- Em muốn học về lĩnh vực Trí tuệ nhân tạo (AI), nên bắt đầu như thế nào?
- Em muốn làm hacker, nên bắt đầu như thế nào?
- Vô trường Đại học nào mới ngon, tư vấn cho em với!
Câu hỏi 1. Anh ơi, mới học lập trình thì học cái gì đầu tiên?
Câu hỏi này cũng tương tự câu hỏi “muốn nấu ăn thì cần mua nguyên liệu gì?”.
Không biết đồ ăn mình nấu là gì, làm sao biết được nguyên liệu để mà mua.
– Em cần xác định được đích đến của em. Nhìn phía xa xa em thấy một ngọn núi, đó là đích đến.
– Thấy ngọn núi rồi, sẽ hình dung ra được con đường, phương hướng để đi. Em sẽ xác định được trình tự các môn học cần học, mỗi môn học là một bước chân trên con đường ấy.
– Và dĩ nhiên, môn học đầu tiên trên con đường ấy, chính là câu trả lời dành cho em.
Và thông thường thì, môn học đầu tiên chính là “NHẬP MÔN LẬP TRÌNH”.
Vậy, nếu em không biết đích đến là cái gì, thì em làm sao biết được học cái gì đầu tiên? Đơn giản thôi, em cứ học “Nhập môn lập trình” trước để có ý niệm về lập trình – khái niệm nền tảng của ngành CNTT. Rồi từ từ tính tiếp.
Mở rộng hơn, dù hướng đi của em là gì, thì có lẽ em cần vượt qua khoảng 3 môn TAM TRỤ nền tảng nhất, kiểu như nó là gốc rễ đầu tiên của mọi hướng đi ấy.
3 môn tam trụ bao gồm:
1. Nhập môn lập trình (Introduction to programming).
2. Lập trình Hướng đối tượng (Object-oriented programming, viết tắt là OOP).
3. Hệ quản trị cơ sở dữ liệu (Database management systems). Nói chung gọi tắt là môn database đó.
Đến đây sẽ có nhiều bạn thắc mắc tại sao danh sách trên không có môn này, tại sao không có môn kia. Có thể môn học ấy vẫn là nền tảng đấy, nhưng mình cho nó nằm ở phần phía sau, học sau. Qua kinh nghiệm đào tạo, trải nghiệm thực tế, mình định ra lộ trình như vậy. Mạn phép xin lỗi nếu nó trái với góc nhìn của bạn.
Câu hỏi 2. Em đã học xong ngôn ngữ C (hoặc C++), em nên học ngôn ngữ gì tiếp theo?
Trong ngành CNTT, học theo trình tự các môn học chứ không học theo trình tự các ngôn ngữ. Đích đến của em sẽ định ra trình tự các môn học. Tùy vào môn học sẽ cần học thêm một ngôn ngữ mới.
Ngôn ngữ phục vụ môn học.
Môn học phục vụ hướng đi.
- Ví dụ 1: Mới học, thường em sẽ học môn “Nhập môn lập trình”, em có thể dùng ngôn ngữ C hoặc C++ hoặc Python để phục vụ cho môn học. Môn Nhập môn lập trình có 3 nội dung lớn: tư duy, ngôn ngữ và kỹ năng. Ngôn ngữ là 1 trong 3 phần đó thôi nhé.
- Ví dụ 2: Nếu hướng đi của em là lập trình Android, thì khả năng rất cao em sẽ cần học về Java, và rất có thể em sẽ học thêm vài ngôn ngữ khác nếu em dùng “công nghệ cao” cho làm app Android.
Ngôn ngữ lập trình không phải là cái quái gì cả mà nhiều người tôn thờ nó như một tôn giáo. Ngôn ngữ là công cụ để thể hiện tư duy ra thực tế. Ngôn ngữ là một mảnh ghép trong 1 bức tranh tổng thể.
Vì vậy, câu hỏi này của em cũng gần tương tự như câu hỏi 1 – bị lạc lối, trái ngược trình tự. Em có thể xem thêm phần trả lời câu hỏi 1 ở trên để hiểu rõ hơn nhé.
Nếu em vẫn muốn câu trả lời từ anh mà thỏa đáng câu hỏi của em, thì anh nghĩ là em nên học tiếp C# hoặc Java hoặc Python nhé em.
Ghi chú thêm: Ở giai đoạn chuyên môn hóa, em sẽ bắt đầu học chuyên sâu về ngôn ngữ, khi ấy ngôn ngữ cũng sẽ bắt đầu trở nên thật sự quan trọng đó nhé, lúc này ngôn ngữ bắt đầu trở thành một tôn giáo trong lòng em. Bởi vì anh phát hiện ra một điều, ngôn ngữ không chỉ là công cụ, mà nó còn gợi ý cho em những kỹ thuật mới để em lên đẳng cấp cao hơn.
Câu hỏi 3. Mới học lập trình thì học ngôn ngữ nào vậy anh?
Cái này tương tự câu hỏi 2 ở trên luôn. Em chịu khó xem lại phần giải đáp câu 2 ở trên nha.
Mới học lập trình em sẽ cần học môn “Nhập môn lập trình”. Trong môn này em có thể học ngôn ngữ C hoặc C++ hoặc Python hoặc ngôn ngữ khác (nếu được định hướng đúng đắn). Theo cá nhân anh thì em nên học ngôn ngữ C, vì nó đơn giản, đủ để em làm thủ công nhiều, làm thủ công nhiều sẽ rèn luyện tư duy tốt hơn nha. Còn nếu thích thì em học luôn C++ hoặc Python cũng được.
Câu hỏi 4. Học lập trình có khó không?
Một câu hỏi khá thú vị. Có người trả lời là dễ, có người trả lời là khó. Cũng có người nói là vừa dễ vừa khó luôn.
Ở góc nhìn của anh thì anh trả lời như sau:
Học lập trình khó vãi luôn.
Nhưng may mắn là anh có đam mê, kiên trì, kinh nghiệm. Nên anh cảm thấy học lập trình dễ lắm.
Và nếu như em xác định được mục tiêu học của em, em sẽ cảm thấy có động lực nhiều hơn, em kiên trì chịu khó, khi ấy khó hay dễ là do bản thân em quyết định.
Câu hỏi 5. Em yếu tư duy lập trình, em làm thế nào để cải thiện?
Đây quả là một căn bệnh nan giải. May mắn là anh làm nghề bác sĩ chuyên trị bệnh này.
Muốn chữa bệnh, phải xác định rõ căn nguyên của bệnh. Từ đó mới đưa ra phương thuốc.
Theo kinh nghiệm đào tạo lập trình, tư vấn lập trình cho “quá trời bạn” học sinh sinh viên, anh phát hiện ra một số nguyên nhân dẫn đến căn bệnh này & cách chữa như sau:
1. Yếu rèn luyện. Lý do này chiếm đến 80%. Đúng vậy, em rèn luyện quá ít, không thông thạo các bài toán cơ bản, làm sao mà giải quyết các vấn đề khó hơn.
Học lập trình là một quá trình rèn luyện lâu dài. Rèn luyện đến mức học thuộc như bảng cửu chương. Cho một bài toán. Làm đi làm lại hoài, thay đổi đề bài một chút, làm đi làm lại hoài. Đến mức học thuộc lòng hồi nào không hay. Khi ấy chỉ cần giảng viên cho ra 1 đề bài cơ bản, trong đầu em đã tuôn trào ra code rồi, và khi em đưa những dòng code từ não ra máy tính, chạy 1 cái là ok không bị lỗi gì luôn. Đó mới gọi là cứng code, là thành thạo.
Thành thạo các bài toán cơ bản chính là mấu chốt của vấn đề. Và hãy nhớ rèn luyện có trình tự em nhé.
2. Không có bài tập phù hợp để rèn luyện. Mỗi môn học sẽ gồm nhiều bài giảng nhỏ, mỗi bài giảng có thể có các bài tập đi kèm.
Nếu em tìm được các bài tập này rèn luyện theo từng bài giảng thì hay quá. Tiếc là có ít tài liệu kiểu như vậy.
Cho nên em cứ xem một loạt bài giảng, rồi đùng 1 cái em nhận bài tập để làm, cứ như trên trời rơi xuống không biết code từ đâu, ra sao. Tự dưng em cảm thấy em yếu lập trình.
Em hãy chủ động tìm hiểu, tìm kiếm các bài tập trên mạng để tự rèn luyện, và nhớ xác định mức độ khó của nó để định ra trình tự làm cho phù hợp nhé.
Câu hỏi 6. Em học lập trình kém, làm sao để cải thiện?
Câu hỏi này rộng hơn câu hỏi “Em yếu tư duy lập trình, làm sao để cải thiện?”.
Anh sẽ liệt kê các triệu chứng, xem thử em bị dính triệu chứng nào nhé.
- Triệu chứng 1. Cho một bài toán đơn giản (nhưng biến đổi thêm xíu mắm muối vào), em suy nghĩ rất lâu mới ra cách giải.
- Triệu chứng 2. Em học không thấm, không tiếp thu được tốt. Hoặc dù có thầy cô tốt, dù có tài liệu đầy đủ, em học vẫn không thấm.
- Triệu chứng 3. Em chưa cảm thấy có động lực để học.
Để anh xem nào, 3 triệu chứng là 3 căn bệnh, với các toa thuốc khác nhau như sau:
- Triệu chứng 1 ==> Em yếu tư duy lập trình ==> Em hãy xem lại phần trả lời câu hỏi “Em yếu tư duy lập trình….” ở trên nhé.
-
Triệu chứng 2. Với các lý do sau:
- Khách quan: tài liệu trình bày kém, thầy cô dạy dở ẹc. Muốn khắc phục thì em bỏ học đi khỏi học thầy cô nữa, hoặc em tầm sư học đạo người thầy tốt hơn, hoặc em tìm kiếm các tài liệu khác tốt hơn cho em nhé.
- Chủ quan: em chưa chủ động trong học tập. Em cần đầu tư mạnh cho Google và Facebook nhé.
- Trình tự học tập của em bị sai. Đây là 1 lý do sâu xa mà rất nhiều bạn dính phải. Em nên tham khảo các câu hỏi định hướng về web, mobile, game,… của anh để học tập theo trình tự hợp lý nhé.
-
Triệu chứng 3. Không có động lực không học nổi. Em hãy liệt kê ra giấy ít nhất 10 lý do khiến em cần học CNTT & lập trình. Đừng cảm thấy 10 lý do là “quá khủng”. Anh có thể ví dụ như:
- Em thích làm ra game đẹp.
- Em thích kiếm nhiều tiền.
- Em muốn có nghề nghiệp tốt để giúp đỡ gia đình.
- Em thích được thử thách.
- Em muốn được FA.
- Em thấy lập trình thú vị.
- Em thích làm hacker.
- Vì đó là đam mê của em.
Đấy, có khó gì đâu. Càng cố đưa ra nhiều lý do càng tốt. Em ghi các lý do này ra 1 tờ giấy, dán nó chung quanh phòng ngủ, chỗ làm việc của em, đừng ngại. Em sẽ thấy nó bắt đầ có tác dụng.
Nếu em thật sự không thể liệt kê ra nhiều lý do, anh nghĩ em chưa phù hợp với ngành CNTT & lập trình. Em hãy mạnh dạn đổi ngành, anh ủng hộ, em cần sống với đam mê của mình thì mới cảm thấy vui vẻ được, đúng không?
Nói thêm về việc học sai trình tự.
Nói thêm về môi trường học tập.
Môi trường ảnh hưởng cực kì lớn đến sự phát triển của em. Thầy cô dạy dở, bỏ thầy cô kiếm người khác học không sợ cái gì cả. Tài liệu dở, đốt đi em, tài liệu không thiếu, quan trọng là phải chịu khó tìm kiếm. Bạn bè em ai cũng thi đua học tập, em cũng ghen ăn tức ở phải học giỏi hơn cả nó nữa, chả phải tốt hơn sao. Đây cũng là 1 lý do sâu xa của việc chọn trường Đại học tốt, vào được trường tốt là em thành công bước đầu rồi.
Câu hỏi 7. Không học Đại học, Cao đẳng thì có theo CNTT được không?
Câu trả lời là ĐƯỢC.
Vì ngành CNTT mang tính tự học rất cao. Trường Đại học góp 10% kiến thức cho em, còn 90% còn lại là do chính em tự học tự rèn luyện.
NHƯNG, có 2 vấn đề quan trọng em nên biết:
Vấn đề một. Trường Đại học cho em:
- Môi trường để em phát triển, giao lưu kết bạn, học thầy không tày học bạn. Học và rèn luyện luôn cả kỹ năng mềm, teamwork,… (Nếu em tự học, liệu em có rèn luyện được teamwork hay không?).
- Người thầy cô có khả năng định hướng tương lai, gợi ý các vấn đề mà em học để đạt kết quả, thay vì em tự học tràn lan mông lung.
- Kiến thức nền tảng tốt. Không phải trường nào cũng đào tạo tốt, nhưng nhiều môn ở trường Đại học là nền tảng tốt mặc dù nhiều thầy cô dạy dở. Nền tảng tốt thì sau này phát triển lên không sợ bị lung lay vì móng nhà yếu.
- Cơ hội việc làm tốt hơn. Nếu em có tấm bằng giỏi từ những trường top, nổi tiếng, điều này có thể giúp em dễ có việc làm, đạt mức lương cao hơn người khác. Phân biệt sinh viên trường này trường nọ ở công ty lớn là có thật.
- Những thử thách, áp lực,… để em làm quen sớm.
Vấn đề hai. Nếu em thích không học Đại học/Cao đẳng mà tự học ở nhà:
- Tự học thì cần phải có đam mê cực lớn.
- Nên có một người thầy Có Tâm, Có Tầm” dẫn lỗi, định hướng. Phải có hướng đi mục tiêu cụ thể, không có định hướng thì học lệch lạc không sâu không làm gì ra hồn cả. Tương truyền Mộ Dung Phục học nhiều võ công trong thiên hạ, đánh một chưởng vào Vô Danh Tăng thì bị Vô Danh Tăng phẩy một cái nhẹ hóa giải như đánh muỗi, còn Tiêu Phong thì không học rộng như Mộ Dung Phục nhưng chiêu thức đã đạt cảnh giới Lô Hỏa Thuần Thanh, đánh Giáng Long Thập Bát Chưởng khiến Vô Danh Tăng hộc cả máu.
- Phải rèn luyện nền tảng tốt, nhất là kỹ năng máy tính (nén, giải nén, thành thạo duyệt web, gõ phím nhanh,…).
- Phải rèn luyện kỹ năng tự học, như phương pháp tra cứu Google, đọc tài liệu bằng tiếng Anh.
Do đó em hãy cân nhắc cho kỹ, liệu em không học Đại học/Cao đẳng, tự học ở nhà thì có đáng hay không. Nếu đáng thì hãy mạnh dạn em nhé, liều ăn nhiều.
Gợi ý cho em: sau một quá trình tự học chinh chiến, em nên xác định rõ sau này em sẽ làm nghề gì, ở lĩnh vực nào trong CNTT. Từ đó em tra cứu các job (việc làm) của nhà tuyển dụng. Em cố gắng hoàn thiện, đáp ứng các tiêu chí việc làm ở job thì em ok rồi đó.
Câu hỏi 8. Không học Đại học, Cao đẳng mà học trường nghề có được không?
Trường Đại học, Cao đẳng hơn trường trung cấp, trường nghề ở mấy điểm sau:
- Đào tạo bài bản, chuyên sâu, học nhiều, lý thuyết vững chắc.
- Giảng viên trình độ cao.
Cũng có một số điểm thua:
- Học nhiều môn hàn lâm hơn so với trường nghề.
- Vài bạn sinh viên ĐH/CĐ ra trường có khả năng thích nghi môi trường làm việc chậm hơn so với sinh viên trường nghề. Đơn giản vì trường trung cấp, trường nghề dạy theo kiểu học thợ, thực hành nhiều, nên các bạn sẽ nhanh chóng nắm bắt nhanh nhạy với thực tế hơn. Tuy nhiên đó là giai đoạn đầu, giai đoạn sau các bạn ĐH/CĐ có khả năng đi nhanh đi xa hơn.
- Học trường trung cấp, trường nghề, em sẽ có nhiều thời gian rảnh rỗi để tự học hơn.
Nói gì thì nói, quan trọng nhất vẫn chính là bản thân mình em nhé.
Nhưng dù sao đi nữa, học Đại học/Cao đẳng vẫn có ưu thế hơn.
Câu hỏi 9. Học ngành không phải CNTT thì có thể làm về lĩnh vực CNTT & lập trình được không?
Câu trả lời là ĐƯỢC.
Vì ngành CNTT rất rộng, có một số ngành nghề liên quan CNTT nhưng không đòi hỏi em phải biết nhiều về lập trình.
- Nghề tester: cần sự tỉ mỉ cẩn thận, soi mói. Phù hợp với các bạn nữ.
- Nghề BA (Business Analyst): em sẽ là cầu nối trung gian giữa khách hàng và đội ngũ lập trình viên. Em trò chuyện với khách hàng là một bệnh viện, em hiểu chút về ngành Y, sau đó em chuyển đổi ngôn ngữ của ngành Y sang ngôn ngữ trong lĩnh vực của ngành CNTT để đội ngũ lập trình viên hiểu và phát triển phần mềm.
- Nghề manager: đòi hỏi em cần có kỹ năng về quản lý nhân sự, quản lý dự án, v.v Em cũng cần phải có kỹ năng giao tiếp tốt đó nhé.
- Và vài nghề khác mà anh chưa biết.
Tuy nhiên nếu em muốn làm chính thống về lĩnh vực CNTT & lập trình, em cần phải xây dựng nền tảng vững chắc. Em sẽ cần học lại bài bản từ đầu, với lòng đam mê và kiên trì vô hạn. Chúc em thành công.
Câu hỏi 10. Đi làm có cần bằng Đại học không anh?
Có rất nhiều người nói là làm trong ngành CNTT không cần phải có bằng Đại học đâu.
Cũng có vẻ đúng.
Bởi vì làm trong ngành CNTT thì điều quan trọng nhất vẫn là thực lực. Em giỏi thì em méo phải sợ gì hết, chỉ sợ em không phù hợp công ty thôi.
Những bạn nào học tàn tàn không chịu khó, cố kiếm được tấm bằng ra trường thì coi chừng đó nha.
Vậy không lẽ tấm bằng Đại học không có ý nghĩa gì sao?
Theo quan điểm của anh, tấm bằng Đại học vẫn có ý nghĩa lớn của nó. Kiểu như vầy:
- Nếu em học giỏi, chưa chắc em có điểm cao.
- Nhưng nếu em có điểm cao, rất có thể em học giỏi.
Suy ra, tấm bằng là một lợi thế giúp nhà tuyển dụng tin tưởng hơn về em, tạo thiện cảm cho em ở giai đoạn phỏng vấn đi làm. Đặc biệt là tấm bằng loại khá, giỏi ở các trường Đại học thuộc loại “top”, em sẽ được ưu ái nhiều hơn, mức lương có thể cao hơn nữa. Và có thực tế là, anh thấy có không ít công ty CNTT lớn nhỏ ở Việt Nam rất ưu ái sinh viên ở trường Đại học “top”, có thêm bằng cấp lại càng tốt. Phân biệt đối xử là có thật.
Vậy sao em nỡ dại dột tin vào các bài viết đầu độc “bằng đại học chỉ để làm tấm lót chuột”, biết đâu nó giúp em có lương cao hơn một chút thì sao.
Nếu công ty từ chối em với lý do em không có bằng Đại học dù em giỏi, thực lực tốt, phù hợp yêu cầu công việc. Tính sao?
- Nghĩ tích cực, công ty có các quy tắc riêng, em nên tôn trọng quy tắc ấy.
- Nghĩ xấu xa hơn chút, nếu em được nhận vào môi trường trọng bằng cấp như vậy liệu em có phát triển được tốt không. Vậy nên em phải vui vì bị từ chối.
Nói gì thì nói, quan trọng vẫn là thực lực bản thân em nhé.
Câu hỏi 11. Em là sinh viên CNTT sắp ra trường…?
Anh sẽ tư vấn cho em một số chiêu thức để em trông có vẻ pro để nhà tuyển dụng thích em.
Chiêu thức 1. CV hoặc Resume
CV là bản tóm tắt trình độ học vấn, năng lực, kinh nghiệm, kỹ năng của em… Resume cũng kiểu như vậy nhưng nó ngắn gọn hơn (cỡ 1 trang giấy thôi). CV tốt (hoặc resume tốt), phù hợp với yêu cầu việc làm là một điểm cộng lớn cho em. Em nên tìm hiểu cách làm CV cho tốt nhé.
Chiêu thức 2. Thể hiện bản thân qua dự án
Toàn bộ kinh nghiệm, quá trình chinh chiến của em, các dự án, sản phẩm của em, hãy tóm tắt, liệt kê, tuyển chọn cái nào em làm tốt nhất, phù hợp yêu cầu việc làm. Em chém gió về sản phẩm của em như con hổ mạnh mẽ rồi, đã vậy em còn có đăng dự án lên Github này nọ nữa để nhà tuyển dụng “tận mắt thấy”, khác gì hổ mọc thêm cánh?
Chiêu thức 3. Tiếng Anh và kỹ năng mềm
Nếu em có thể trả lời phỏng vấn bằng tiếng Anh thì đó là một điểm cộng rất là lớn.
Hàng ngày, con người đều giao tiếp. Anh rất thích những người nói chuyện hay, lôi cuốn, kiểu như họ là chính mình, họ muốn chia sẻ nhiều điều. Và nếu như em cũng được như vậy, hiển nhiên anh sẽ có thiện cảm với em nhiều hơn.
Trong bán hàng, nhiều khi mình muốn mua bột giặt Surf dùng thử, dù nó không nổi tiếng bằng OMO, nhưng mình biết rằng Surf là sản phẩm của Unilever, mà Unilever bao hàm các sản phẩm OMO, Comfort, P/S….. Unilever cho mình thiện cảm để mình mua bột giặt Surf.
Quyết định mua hàng dễ dàng xuất phát từ tình cảm, thay vì từ tính năng của sản phẩm.
Quyết định của nhà tuyển dụng có thể xuất phát từ tình cảm thay vì chỉ đơn thuần là xem xét em có ok hay không. Muốn có tình cảm, tăng kỹ năng mềm và tiếng Anh.
Chiêu thức 4. Biết mình biết ta trăm trận trăm thắng
- Biết mình = hiểu rõ trình độ của bản thân, chuyên môn của bản thân.
- Biết ta = hiểu rõ công ty và việc làm mà mình ứng tuyển vào.
Hợp mình, hợp ta, kỹ năng của em khớp với yêu cầu công việc, tự khắc có việc làm tốt thôi.
- Muốn biết mình thì phải ngồi nhà WC “nghiệm” thật lâu, và trải nghiệm phải nhiều.
- Muốn biết ta thì phải chịu khó tra cứu các việc làm, tra cứu các công ty phù hợp.
Câu hỏi 12. Học lập trình có cần giỏi Toán không?
Một câu hỏi khá thú vị.
Có người trả lời Toán cực kì cần thiết, có người lại trả lời là không cần phải giỏi Toán.
Thật ra, tùy vào định hướng lĩnh vực của em mà em sẽ cần phải giỏi Toán hay không.
- Nếu em làm về lĩnh vực Software Engineering (làm ứng dụng desktop, web, mobile…), có thể em chỉ cần nắm vững Toán phổ thông là ok. Toán cao cấp thì không cần đâu.
- Nếu em làm về lĩnh vực nghiên cứu nói chung như trí tuệ nhân tạo (AI), đồ họa máy tính, công nghệ tri thức, v.v thì học Toán nhiều, cần giỏi Toán là điều hiển nhiên. Bởi vì những lĩnh vực này mang bản chất nghiên cứu từ lý thuyết, và Toán luôn là nền tảng lý thuyết của rất nhiều lĩnh vực.
- Nếu em làm về game, em sẽ cần học tốt Toán phổ thông, Vật lý phổ thông nữa càng tốt.
- Còn về các lĩnh vực khác thì khả năng cần Toán là không cao, chỉ cần Toán phổ thông cơ bản là ok.
Tuy nhiên nói gì thì nói, một khi đã đạt đến trình độ cao, dù ở bất cứ lĩnh vực gì, sớm muộn gì em cũng sẽ phải đụng đến Toán nhiều thôi.
Em học Toán không phải để đi chợ tính tiền hay tính đạo hàm, mà bước đầu em học Toán để rèn luyện tư duy logic nhanh nhẹn, điều này có lợi thế rất lớn cho việc học lập trình nhé.
Câu hỏi 13. Học lập trình có cần giỏi tiếng Anh không?
Tiếng Anh phổ thông thì chắc không cần giỏi đâu em.
Nhưng thật sự, tiếng Anh là yếu tố cực kì quan trọng giúp em giỏi CNTT nói chung & lập trình nói riêng.
Bởi vì, hầu hết các tài liệu tốt, các nguồn tài nguyên quý giá đều là tiếng Anh. Nếu em tra cứu vấn đề bằng tiếng Anh, em dễ dàng giải quyết vấn đề hơn. Đặc biệt là những vấn đề chuyên sâu, em tra cứu bằng tiếng Việt nhiều khi không ra gì đâu.
Nếu em muốn…:
- Tự học: đọc tài liệu tiếng Anh.
- Giao tiếp với khách hàng nước ngoài: tiếng Anh giao tiếp.
- Làm việc ở công ty nước ngoài: viết tài liệu bằng tiếng Anh, tiếng Anh giao tiếp.
Như vậy, tối thiểu em cần phải rèn luyện kỹ năng đọc tài liệu tiếng Anh để học tốt nhé. Chỉ cần tốt kỹ năng này thôi là em đủ sống sót hết quãng đời sinh viên rồi.
Có bạn than vãn rằng bạn học tiếng Anh dở lắm. Kiểu như đó là 1 căn bệnh khó chữa vậy. Giống như học sinh môn Văn mà bắt đi học đội tuyển Toán ấy.
Thật ra, tiếng Anh không hẳn là kiến thức. Với góc nhìn của anh, tiếng Anh là 1 kỹ năng. Mà nếu đã là kỹ năng thì nó hoàn toàn có thể rèn luyện và cải thiện được, bất chất em học ngu như thế nào, chỉ cần em kiên trì rèn luyện đúng đắn, OK?
Câu hỏi 14. Em chưa biết gì, muốn học lập trình thì mất bao nhiêu thời gian?
- f: Thời gian mà em cần bỏ ra.
- a: Trình độ kiến thức mà em mong muốn.
- b: Nội lực, tư chất (kinh nghiệm, tư duy, kỹ năng, tiếng Anh, v.v)
- c: Sự rèn luyện.
- d: Hệ số hack.
Câu hỏi 15. Làm nghề CNTT lương có cao không? Có sợ thiếu việc làm không?
Câu hỏi khá nhạy cảm. Nhìn chung làm CNTT thì lương cao hoặc rất cao nha em. Nhưng điều đó còn phụ thuộc rất nhiều vào năng lực và bản lĩnh trường đời của em đấy.
Anh thấy có không ít bạn học sinh bị tiêm nhiễm từ báo chí hay từ ai đó mà không “biết mình, biết ta”, mới ra trường cứ như ở trên mây với ảo tưởng mức lương phải cao mới chịu làm cơ.
Cơ hội việc làm và mức lương của em phụ thuộc vào:
1. Trình độ kiến thức, kỹ năng, kinh nghiệm thực tế của em.
2. Sự phù hợp giữa em và việc làm ứng tuyển.
3. Sự đóng góp của em cho công ty (em có thể bán được cái gì cho công ty).
4. Và vài yếu tố khác.
Ngành CNTT không bao giờ thiếu việc làm. Nhưng rất nhiều doanh nghiệp than vãn không kiếm được nhân lực, vì sao vậy? Vì 4 yếu tố ở trên đó. Thật ra, doanh nghiệp than vãn vì không kiếm được nhân lực trình độ cao )
Lấy ví dụ: công ty cần tuyển thêm 1 bạn ở vị trí Android developer với mức lương khá ngon. Em và bạn X nộp đơn ứng tuyển việc làm. Tỉ lệ 1 chọi 1, 1 mất 1 còn. Về trình độ chuyên môn, em giỏi hơn bạn X một chút (em 10 điểm bạn X 8 điểm thôi). Nhưng về kỹ năng tiếng Anh, em rất là kém (em 5 điểm bạn X 10 điểm). Công ty lại có nhu cầu hợp tác với khách hàng nước ngoài. Vậy em nghĩ ai sẽ bị loại khỏi cuộc chơi?
Em bị loại vì em thua về kỹ năng (yếu tố 1 ở trên), nhưng cũng có thể vì yếu tố 2. Nếu em ứng tuyển vào công ty rất chú trọng trình độ chuyên môn, hiển nhiên em sẽ phù hợp hơn.
Thực trạng của nhiều bạn sinh viên bị thất nghiệp thường là nằm trong 4 yếu tố ở trên.
Câu hỏi 16. Em muốn lập trình web, nên bắt đầu như thế nào?
Lộ trình anh vạch ra như sau:
1. Nhập môn lập trình.
2. Lập trình Hướng đối tượng.
3. Hệ quản trị cơ sở dữ liệu.
4. Ứng dụng cơ sở dữ liệu vào lập trình. Học thêm một ngôn ngữ phục vụ cho việc ứng dụng, kết nối cơ sở dữ liệu như C#, Java, Python.
5. Version control systems (VCS). Có thể em nên học Git.
6. Kiến thức cơ bản về web, mạng máy tính như IP, port, host, dns.
7. Học cơ bản front-end, bao gồm: HTML, CSS, javascript.
8. Học cơ bản một công nghệ/ngôn ngữ back-end. Nên học PHP vì nó cơ bản, dễ triển khai.
9. Bắt đầu học sâu hơn 1 chút xíu về các thư viện, công nghệ như HTML5, CSS3, jquery, Bootstrap, v.v Đến lúc này là em có thể làm ra 1 trang web hoàn chỉnh tựa tựa như Tiki, Lazada, Shopee, zing, Facebook (nhưng chức năng cơ bản ít thôi nha).
10. Cân nhắc bổ sung kiến thức nền tảng với các môn học “Cấu trúc dữ liệu và giải thuật”, các kỹ thuật lập trình chuyên sâu như đệ quy, xử lý tập tin nhị phân, đa tiểu trình, v.v
Đến bước này, phân hóa:
- Nếu em thích khâu thiết kế giao diện bên ngoài hơn, em nên theo hướng front-end.
- Nếu em thích khâu lập trình nền tảng, xử lý thuật toán, em nên theo hướng back-end. Trong hướng back-end này, có thể em sẽ rẽ sang nhánh DevOps nếu em thích.
- Nếu em thích 1 mình làm trọn vẹn toàn bộ, em theo full-stack (cả front-end lẫn back-end).
Em đã trải qua 1 chặng đường dài. Em sẽ thấy bầu trời phía trước rộng hơn. Tùy vào định hướng tiếp theo của em mà tính tiếp, em sẽ cần học nâng cao trình độ javascript nhiều. Và rất có thể em sẽ cần học thêm các công nghệ mới, anh có thể liệt kê một số cái nổi bật hiện tại như: npm, yam, CSS Preprocessors, TypeScript, React.js, Angular, Vue.js, Nodejs, web socket, web service, v.v
Lập trình web là lĩnh vực cực kì rộng lớn, với rất nhiều công nghệ. Khi đã đụng đến công nghệ, em hãy luôn luôn nhớ rằng công nghệ có thể thay đổi nhanh chóng. Nay mai công nghệ X (trong trang web của em có sử dụng) sẽ sụp đổ, em luôn phải chuẩn bị tinh thần dùng công nghệ khác thay thế.
Ghi chú mạnh 1: Những gì anh tư vấn hôm nay có thể hữu ích với em (hôm nay là tháng 3 năm 2019), nhưng 1 tháng sau, 1 năm sau có thể nó sẽ bị lạc hậu bởi công nghệ. Công nghệ có thể thay đổi, nhưng kiến thức, nền tảng bên dưới thì gần như không bao giờ thay đổi. Hãy học chắc nền tảng, thật chắc, thật tốt.
Ghi chú mạnh 2: Lập trình web là một nhánh con trong lĩnh vực Software Engineering (SE), do đó em cần rèn luyện thêm nhiều kiến thức về SE nữa mới làm việc ngon lành được nhé.
Câu hỏi 17. Em muốn lập trình mobile app, nên bắt đầu như thế nào?
Lộ trình anh vạch ra như sau:
1. Nhập môn lập trình.
2. Lập trình Hướng đối tượng.
3. Hệ quản trị cơ sở dữ liệu.
4. Ứng dụng cơ sở dữ liệu vào lập trình. Học thêm một ngôn ngữ phục vụ cho việc ứng dụng, kết nối cơ sở dữ liệu như C#, Java, Python.
5. Version control systems (VCS). Có thể em nên học Git.
Đến lúc này em có 2 lựa chọn thông dụng là Android hoặc iOS. Windows Phone thì anh thấy ngỏm nhiều rồi nên anh không rành nha.
Nếu em chọn theo Android:
6. Học Java core cho chắc đi kèm các kỹ thuật sâu hơn như đệ quy, đa tiểu trình, xử lý bitwise, xử lý tập tin nhị phân, v.v.
7. Học Android cơ bản (view, layout, activity, context, navigation, task, service, v.v).
8. Bổ sung các kiến thức nền tảng với các môn học “Cấu trúc dữ liệu và giải thuật”, “Mạng máy tính cơ bản”, mô hình MVC, HTTP & REST APIs, v.v.
9. Học Android trên mức cơ bản.
Đến bước này, chân trời rộng mở, có quá nhiều thứ để học. Tự em sẽ khám phá ra những thứ đó nhé.
Tại bước này, em cũng có thể cân nhắc học các công nghệ lập trình app Android như React Native (javascript), Flutter (dart), v.v
Nếu em chọn theo iOS:
Anh không có kinh nghiệm gì về iOS hết, anh chưa bao giờ làm việc với nó, vì vậy anh chỉ tư vấn chung chung là em học thêm ngôn ngữ Swift nhé. Khi đã ngon cơ bản thì em có thể cân nhắc học các công nghệ lập trình app iOS như React Native, Flutter, v.v Mà thường thì hàng Apple nó “tông xuỵt tông” với nhau, nên dùng Macbook lập trình luôn nha.
Ghi chú mạnh 1: Những gì anh tư vấn hôm nay có thể hữu ích với em (hôm nay là tháng 3 năm 2019), nhưng 1 tháng sau, 1 năm sau có thể nó sẽ bị lạc hậu bởi công nghệ. Công nghệ có thể thay đổi, nhưng kiến thức, nền tảng bên dưới thì gần như không bao giờ thay đổi. Hãy học chắc nền tảng, thật chắc, thật tốt.
Ghi chú mạnh 2: Lập trình mobile là một nhánh con trong lĩnh vực Software Engineering (SE), do đó em cần rèn luyện thêm nhiều kiến thức về SE nữa mới làm việc ngon lành được nhé.
Câu hỏi 18. Em muốn lập trình game, nên bắt đầu như thế nào?
Đây là một câu hỏi khá rộng.
Game thì có game trên desktop, mobile, web.
Về cơ bản tối thiểu, game = thiết kế cấu trúc + tư duy + đồ họa. Vì vậy chỉ cần học xong 1 môn học đầu tiên “Nhập môn lập trình” là đủ để em làm game được rồi.
==> Khoe một tí, đây là sản phẩm game của học trò anh sau khi học xong môn học “Nhập môn lập trình”: https://www.facebook.com/thanh.it95/videos/vb.100000373519596/1662332893789145
Do đó cơ bản anh cho em con đường đi như sau:
1. Nhập môn lập trình. Lưu ý khi học xong môn này, tối thiểu phải làm ra được 1 game cơ bản trên console.
2. Lập trình Hướng đối tượng. Khi học xong môn này, em nên cố gắng làm ra 1 game đồ họa.
3. Version control systems (VCS). Có thể em nên học Git.
4. Cấu trúc dữ liệu và giải thuật cơ bản (linked list, queue, stack, binary tree, các thuật toán sắp xếp, v.v).
5. Học các kỹ thuật cơ bản chuyên sâu hơn như đệ quy, xử lý bitwise, xử lý tập tin nhị phân.
6. Học cơ bản lý thuyết về game như game map, coordinate system, sprite,… Học Toán (nhất là Toán vector).
Đến lúc này, có vẻ ngôn ngữ bắt đầu quan trọng với em. Cũng đến lúc em cân nhắc lựa chọn các hướng đi.
- Nếu em thích dùng công nghệ để làm game, em nên học Unity3D (dùng C#) hoặc Cocos2dx (dùng C++) hoặc Unreal Engine. Các công nghệ này hỗ trợ làm game trên desktop, mobile app đều ok.
- Nếu em thích làm game thủ công trên Android ==> em xem lộ trình học Android ở phần câu hỏi “Em muốn lập trình mobile app…”.
- Nếu em thích làm game thủ công trên web ==> em xem lộ trình học lập trình web ở phần câu hỏi “Em muốn lập trình web…”.
- Nếu em thích làm game chuyên sâu, kiểu như game lớn ấy, bắt buộc em sẽ phải học sâu về C/C++ (rất khó), và bắt đầu đụng đến các thư viện đồ họa cơ bản, rồi đụng đến người khổng lồ OpenGL hoặc DirectX.
Tùy theo các hướng đi mà sẽ còn học nhiều nữa. Khi ấy em nên tự khám phá thêm nhé.
Ghi chú mạnh 1: Những gì anh tư vấn hôm nay có thể hữu ích với em (hôm nay là tháng 3 năm 2019), nhưng 1 tháng sau, 1 năm sau có thể nó sẽ bị lạc hậu bởi công nghệ. Công nghệ có thể thay đổi, nhưng kiến thức, nền tảng bên dưới thì gần như không bao giờ thay đổi. Hãy học chắc nền tảng, thật chắc, thật tốt.
Ghi chú mạnh 2: Lập trình game là một nhánh con trong lĩnh vực Software Engineering (SE), do đó em cần rèn luyện thêm nhiều kiến thức về SE nữa mới làm việc ngon lành được nhé.
Câu hỏi 19. Em muốn làm về lĩnh vực mạng máy tính (an ninh mạng, quản trị mạng,…), nên bắt đầu như thế nào?
Lộ trình anh vạch ra như sau:
1. Nhập môn lập trình.
2. Lập trình Hướng đối tượng.
3. Học các kỹ thuật cơ bản chuyên sâu hơn như xử lý bitwise, xử lý tập tin nhị phân, đệ quy… Trong đó xử lý bitwise là quan trọng.
4. Rèn luyện kỹ năng IT cơ bản, thành thạo cơ bản về sử dụng trình duyệt web, cài phần mềm, cài hệ điều hành. Ghi chú thêm là làm mấy cái này thì không khó, nhưng đến mức am hiểu, có kinh nghiệm thì rất khó à nha.
5. Hệ quản trị cơ sở dữ liệu (cơ bản), ứng dụng nó vào lập trình được càng tốt.
6. Kiến trúc máy tính.
7. Nguyên lý hệ điều hành.
8. Nên học về hệ điều hành nhân Linux như Ubuntu, Fedora, CentOS,… Làm quen nhiều với terminal.
9. Học môn Mạng máy tính cơ bản. Hiểu rõ về IP, DNS, bandwidth, routing, v.v
10. Học thêm về lập trình shell, nên học thêm ngôn ngữ Python.
11. Rèn luyện thêm kỹ năng IT như registry, diệt virus bằng tay, cài đặt máy in, kết nối mạng LAN, máy ảo, sandbox, v.v.
12. Chịu khó đầu tư cỡ 1 triệu VNĐ mua các đồ chơi, thiết bị mạng cơ bản về để voọc như cáp RJ45, router, switch, access point, wifi range extender.
OK, tới đây có thể xem là nền tảng ổn rồi. Giờ em bắt đầu rẽ nhánh tùy theo em thích, em có thể bắt đầu quan tâm các chứng chỉ của Cisco (CCENT, CCNA,…) hoặc Microsoft (MCSA, MCSE,…) và nhiều nữa.
Ghi chú mạnh: Những gì anh tư vấn hôm nay có thể hữu ích với em (hôm nay là tháng 3 năm 2019), nhưng 1 tháng sau, 1 năm sau có thể nó sẽ bị lạc hậu bởi công nghệ. Công nghệ có thể thay đổi, nhưng kiến thức, nền tảng bên dưới thì gần như không bao giờ thay đổi. Hãy học chắc nền tảng, thật chắc, thật tốt.
Câu hỏi 20. Em muốn học về lĩnh vực Trí tuệ nhân tạo (AI), nên bắt đầu như thế nào?
AI là lĩnh vực rất rộng. Tuy nhiên anh không học và không làm về AI, chỉ có lỏm được vài chiêu cơ bản thôi, nên cũng có chút hiểu biết, cho em 1 con đường an toàn trước khi chạm trán thật sự về AI nhé.
1. Nhập môn lập trình.
2. Lập trình Hướng đối tượng.
3. Hệ quản trị cơ sở dữ liệu.
4. Ứng dụng cơ sở dữ liệu vào lập trình. Học thêm một ngôn ngữ phục vụ cho việc ứng dụng, kết nối cơ sở dữ liệu như C#, Java, Python.
5. Version control systems (VCS). Có thể em nên học Git.
6. Học các kỹ thuật cơ bản chuyên sâu hơn như xử lý bitwise, xử lý tập tin nhị phân, đệ quy…
7. Học thật tốt thật pro ngôn ngữ Python. Tìm hiểu thêm về Matlab cũng tốt.
8. Cấu trúc dữ liệu và giải thuật. Học thật là chắc, thật là pro. Không học chắc là ngỏm luôn nha em.
9. Lý thuyết đồ thị. Học thật là chắc và pro luôn.
10. Học các môn Toán cao cấp thật là tốt (Đại số, Giải tích, Xác suất thống kê). Đặc biệt là XÁC SUẤT THỐNG KÊ.
11. Cơ sở trí tuệ nhân tạo (nhập môn trí tuệ nhân tạo). Làm quen các bài toán tìm đường, tìm lời giải, làm quen với Machine Learning cơ bản.
12. Machine Learning.
13. Data mining.
Lúc này có nhiều môn cho em học bổ sung thêm, rồi còn phân nhánh nữa như:
- NLP (Natural Language Processing) ==> AI trên ngôn ngữ, bao hàm cả chữ và âm thanh.
- Thị giác máy tính (Computer Vision) ==> AI trên hình ảnh và video.
- Machine Learning, học sâu hơn nữa thì có Deep Learning.
-
Game & Problem Solving (giải quyết bài toán).
- Ví dụ 1: Làm AI cho trò chơi game caro, cờ Tướng,…
- Ví dụ 2: Cho sẵn các giả thuyết, quy luật (tổng 3 góc của tam giác = 180 độ, công thức hàm cos, định lý Pythagoras…), cho sẵn 2 cạnh của tam giác, nhờ máy tính chỉ ra từng bước để tìm độ dài cạnh còn lại.
- Và nhiều nhánh nữa.
Đặc biệt em sẽ cần đọc, nghiên cứu nhiều bài báo khoa học nhé (tiếng Anh là hiển nhiên).
Đến đây thì hết tầm hiểu biết của anh rồi, khi ấy anh nghĩ em sẽ tự mở ra cho mình chân trời mới để đi nhé
Ghi chú mạnh: Những gì anh tư vấn hôm nay có thể hữu ích với em (hôm nay là tháng 3 năm 2019), nhưng 1 tháng sau, 1 năm sau có thể nó sẽ bị lạc hậu bởi công nghệ. Công nghệ có thể thay đổi, nhưng kiến thức, nền tảng bên dưới thì gần như không bao giờ thay đổi. Hãy học chắc nền tảng, thật chắc, thật tốt.
Câu hỏi 21. Em muốn làm hacker, nên bắt đầu như thế nào?
Câu hỏi khá thú vị, và cũng là câu hỏi của nhiều bạn trẻ.
Về cơ bản, hacker là người cực kì giỏi về máy tính, hiểu biết sâu rộng.
Nếu em học về lĩnh vực kỹ thuật phần mềm, em học siêu giỏi, đến mức siêu đẳng, cũng có thể xem đó là hacker.
Chứ không phải hacker đơn giản là tìm mật khẩu wifi, bẻ khóa phần mềm, RIP tài khoản Facebook đâu nha.
Theo quan điểm của anh, hacker có 2 dạng: hacker về hệ thống và hacker về mạng máy tính. Dù là dạng nào thì con đường bắt đầu anh đề xuất như sau: con đường bắt đầu cơ bản gần giống hệt như con đường về học ở lĩnh vực mạng máy tính. Cụ thể như sau:
1. Nhập môn lập trình.
2. Lập trình Hướng đối tượng.
3. Học các kỹ thuật cơ bản chuyên sâu hơn như xử lý bitwise, xử lý tập tin nhị phân, đệ quy…
4. Rèn luyện kỹ năng IT cơ bản, thành thạo cơ bản về sử dụng trình duyệt web, cài phần mềm, cài hệ điều hành. Ghi chú thêm là làm mấy cái này thì không khó, nhưng đến mức am hiểu, có kinh nghiệm thì rất khó à nha.
5. Hệ quản trị cơ sở dữ liệu (cơ bản), ứng dụng nó vào lập trình được càng tốt.
6. Kiến trúc máy tính.
7. Nguyên lý hệ điều hành.
8. Nên học về hệ điều hành nhân Linux như Ubuntu, Fedora, CentOS,… Làm quen nhiều với terminal.
9. Học môn Mạng máy tính cơ bản. Hiểu rõ về IP, DNS, bandwidth, routing, v.v
10. Học thêm về lập trình shell, nên học thêm ngôn ngữ Python.
11. Rèn luyện thêm kỹ năng IT như registry, diệt virus bằng tay, cài đặt máy in, kết nối mạng LAN, máy ảo, sandbox, v.v.
12. Chịu khó đầu tư cỡ 1 triệu VNĐ mua các đồ chơi, thiết bị mạng cơ bản về để voọc như cáp RJ45, router, switch, access point, wifi range extender.
Đến đây, bắt đầu rẽ nhánh:
- Nếu em thích theo hacker về lĩnh vực hệ thống và phần mềm, em học toàn bộ nội dung ở lĩnh vực Kỹ thuật phần mềm (Software Engineering) để lấy làm nền tảng, học chuyên sâu về C/C++, hợp ngữ, học API của hệ điều hành, bắt đầu tìm hiểu các khái niệm về reverse engineering, v.v
- Nếu em thích theo hacker về lĩnh vực Mạng máy tính, em nên quan tâm học các chứng chỉ của Cisco (CCENT, CCNA,…) và Microsoft (MCSA, MCSE,…) và nhiều nữa. Học mã hóa & mật mã, sử dụng các tool, v.v
Nói chung, hacker là một khái niệm không thống nhất, với anh nó chỉ những người cực giỏi về máy tính, có hiểu biết sâu rộng. Người bình thường giải quyết vấn đề trong 60 phút, em giải quyết trong 6 phút, đó gọi là hack. “Hack” nghĩa là làm cái gì đó hay hơn bình thường, siêu hơn bình thường. Chỉ đơn giản vậy thôi.
Câu hỏi 22. Vô trường Đại học nào mới ngon, tư vấn cho em với!
Một câu hỏi đụng chạm à nha, so sánh các trường là có đụng chạm liền.
Qua kinh nghiệm chinh chiến, tư vấn, tiếp xúc của anh với nhiều bạn học sinh sinh viên khắp 3 miền thì anh có thể cảm nhận được một phần về chương trình học, cách đào tạo ở mỗi trường. Cho nên anh ghi ra nhận xét các trường dưới góc nhìn trải nghiệm của anh, chứ thực tế có thể nó không đúng với góc nhìn của các bạn khác, em chỉ nên tham khảo thôi nhé.
Viết thật lòng, quan điểm cá nhân, không ngại đụng chạm. Anh viết theo thứ tự các trường nào đầu tiên thì khả năng là tốt nhất.
Nếu ở Hà Nội, có các trường sau:
- Đại học Bách khoa Hà Nội (HUST). Trường có rất nhiều bạn giỏi, nhiều bạn đi thi các cuộc thi lập trình. Chương trình đào tạo chuyên sâu. Đầu ra khó đấy, Bách Khoa mà. Có một khuyết điểm là ở giai đoạn nền tảng, có không ít bạn sinh viên chưa rèn luyện nhiều nên lập trình rất là yếu.
- Học viện Công nghệ Bưu chính Viễn thông (PTIT). Trường cũng thuộc hàng có tiếng về đào tạo CNTT. Mặc dù có vẻ lép vế hơn Bách khoa Hà Nội một chút nhưng trường có tỉ lệ gái xinh cao hơn nhiều nha.
- Đại học FPT. Trường cũng có nhiều bạn cực kì giỏi. Có một vấn đề là trường đào tạo không bài bản, dễ mất căn bản. Nếu em không có nền tảng gì từ trước thì rất dễ bị bỏ rơi. Trường chú trọng vào khâu thực hành, thực dụng. Vì vậy nếu em thích làm ra sản phẩm, đặc biệt trong lĩnh vực Kỹ thuật phần mềm, thì có thể đây là lựa chọn phù hợp với em. Chỉ có điều trước khi nộp đơn vào trường thì em nên kiểm tra lại túi tiền của em nha.
- Đại học Công nghệ – Đại học Quốc gia Hà Nội (UET). Cũng như các trường trên, trường có đào tạo nhiều chuyên ngành như Kỹ thuật phần mềm, Mạng máy tính, Hệ thống thông tin, Khoa học máy tính.
- Học viện Kỹ thuật Quân sự, Học viện Kỹ thuật Mật mã. Vốn là trường của quân đội nên chắc chắn một điều là đào tạo rất kỹ, bài bản. Giảng viên nhiệt tình.
Nếu ở TP. Hồ Chí Minh, giang hồ có câu: “Phần mềm thì Tự nhiên, phần cứng thì Bách Khoa, mạng thì UIT”.
Có các trường sau:
- Đại học Khoa học Tự nhiên – Đại học Quốc gia TP.HCM (HCMUS). Trường của anh luôn nên anh cũng nắm khá rõ. Trường có đào tạo đầy đủ các lĩnh vực chuyên ngành, nhưng trường nổi tiếng nhất là ở lĩnh vực Kỹ thuật phần mềm. Ngoài ra trường cũng đào tạo về Khoa học máy tính cực kì tốt. Trường có đội ngũ sinh viên thi Olympic, ACM hùng hậu. Trường có kinh nghiệm lâu năm trong đào tạo ngành CNTT, vì vậy khung chương trình học khá logic, học chú trọng vào nền tảng rất tốt. Trường anh xuất thân là trường Đại học Tổng hợp, cứ hỏi người lớn về trường Đại học Tổng hợp ấy, nhiều người nể, vì cũng nổi tiếng như Bách Khoa ấy. Khuyết điểm của trường là cơ sở vật chất tệ, ở chi nhánh quận 5 kiếm chỗ ngủ trưa “ngon” cũng khó khăn, đây là điều khiến anh còn thất vọng.
- Đại học Bách Khoa – Đại học Quốc gia TP.HCM (HCMUT). Bách Khoa thì nổi tiếng rồi. Quả không sai tí nào, vốn nổi tiếng về đào tạo kỹ thuật nên Đại học Bách Khoa đào tạo CNTT theo hướng kỹ thuật rất tốt (tức là gắn với máy móc, điện tử) ==> Bạn nào thích học về IoT, thích làm robot thì qua Bách Khoa rất là hợp nha. Về mảng nghiên cứu khoa học thì trường cũng đào tạo tốt đấy. Chỉ có điều em nên cân nhắc về khối kiến thức hàn lâm ở những năm đầu nhé.
- Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM (UIT). Trường cũng đào tạo đầy đủ các lĩnh vực chuyên ngành nhưng trường vẫn mạnh nhất và tốt nhất về đào tạo Mạng máy tính, bảo mật, an ninh mạng các kiểu. Bạn nào thích làm hacker thiên về hướng mạng máy tính thì nên đăng ký vào đây. Thật ra trường UIT là tách ra từ khoa Công nghệ Thông tin trường Đại học Khoa học Tự nhiên (HCMUS), giảng viên bên trường HCMUS, Bách Khoa thường xuyên qua đây giảng dạy. Anh cũng nghe đồn bên UIT có chỗ ngủ trưa khá là xịn đó nhé.
- Đại học FPT. Ở miền Bắc thì anh có liệt kê, đánh giá trường Đại học FPT rồi, cũng có nhận xét đầy đủ rồi nên em có thể xem lại ở phần trên nha.
- Đại học Sư phạm Kỹ thuật. Nếu em thích học về IoT, hoặc học về lĩnh vực lập trình đi liền với thiết bị (điều khiển đèn, quạt, robot,…), đây có lẽ là ngôi trường phù hợp với em đấy.
- Học viện Công nghệ Bưu chính Viễn thông (PTIT). Ở miền Bắc anh cũng có liệt kê, đánh giá rồi. Chỉ có điều anh cảm nhận là PTIT ở miền Nam không nổi tiếng và đào tạo tốt bằng bằng PTIT ở miền Bắc.
- Học viện Kỹ thuật Quân sự, Học viện Kỹ thuật Mật mã. Vốn là trường của quân đội nên chắc chắn một điều là đào tạo rất kỹ, bài bản. Giảng viên nhiệt tình.
Có một điều đáng buồn là đã từng xảy ra trận chiến nảy lửa so sánh giữa Khoa học Tự nhiên và Bách Khoa xem trường nào tốt hơn. Cả 2 trường đều tạo ra những thế hệ sinh viên xuất sắc hàng đầu mà nhiều công ty lớn rất thích. Thật ra cá nhân anh nhận xét dựa trên sự tiếp xúc với nhiều bạn, tham khảo chương trình học này nọ nên anh có xếp hạng như vậy. Một bạn khác có bảng xếp hạng của riêng bạn là điều rất bình thường. Quan trọng là ở bản thân mình. Bản thân mình tỏa sáng để tạo ra danh tiếng cho trường, chứ không phải danh tiếng của trường khiến mình có vẻ giỏi hơn.
Nếu ở miền Nam, cụ thể hơn là phía miền Tây còn có trường Đại học Cần Thơ, là một trường Đại học lớn cũng có đào tạo CNTT nha em.
Nếu ở miền Trungthì anh có biết trường Đại học Bách khoa Đà Nẵng, Đại học Duy Tân nhé.
TUY NHIÊN.
Những câu chữ dài dòng anh viết ở trên không quan trọng.
Quan trọng vẫn là chính bản thân.
Bản thân xác định được sẽ đi theo hướng đi nào (chuyên ngành nào, lĩnh vực nào) ==> chọn trường phù hợp. Nếu anh thích về Mạng máy tính và bảo mật, anh chẳng đăng ký vào trường KHTN và Bách Khoa mà thiên hạ tranh luận vị trí top 1, anh đăng ký vào trường UIT thôi là được rồi.
Ngành CNTT mang tính chất tự học cao. 10% từ nhà trường và 90% tự học. Cho dù trường em chọn là top đầu đi nữa thì liệu 90% còn lại em có tốt hay không? Vậy nên mới có chuyện cũng có vài ông anh mà anh quen biết, chỉ học trường Đại học Sư phạm thôi nhưng kiến thức về CNTT cũng cao và sâu lắm, khiến anh rất nể đó thôi.
Hoặc thậm chí, nếu 10% em cũng hơn người khác và 90% em cũng giỏi hơn, liệu sau này em có thật sự chiến thắng khi em bước vào trường Đời. Trường Đời là ngôi trường của các ngôi trường, nó không chỉ bao hàm CNTT mà còn bao hàm nhiều thứ khác.
Cảm thấy mình nhỏ bé để phấn đấu, và cảm thấy mình to lớn với những chiến thắng đạt được trên con đường phía trước. Chúc em thành công.
Nguồn bài viết: Nguyễn Trung Thành – Công đồng lập trình viên Việt Nam