Là lập trình viên thì dĩ nhiên là phải biết … lập trình. Tuy nhiên, một trong những khó khăn khiến nhiều bạn bỏ cuộc, đó là việc chọn và học ngôn ngữ lập trình đầu tiên.
Dù cho bạn có học Đại Học, hay tự học lập trình, bạn đều sẽ phải đối diện với những khó khăn này! Vì vậy, mình sẽ chia sẻ một số kinh nghiệm và định hướng khi học những ngôn ngữ lập trình đầu tiên.
Đầu tiên nên học ngôn ngữ gì?
Mình hay nhận được câu hỏi từ nhiều bạn: Nên bắt đầu bằng ngôn ngữ lập trình gì? Thật sự, ở giai đoạn đầu, học ngôn ngữ gì không quan trọng như bạn nghĩ!
Tại sao vậy? Ở giai đoạn đầu, bạn học là để nắm cơ bản, để hiểu về lập trình, chứ không phải học rồi theo ngôn ngữ đó cả đời! Khi đã có trình độ, bạn có thể học một ngôn ngữ/công nghệ chỉ trong vài ngày hoặc vài tuần. Do vậy đừng quá lăn tăn về chuyện chọn ngôn ngữ. Thay vì ngồi đắn đồ suy nghĩ, cứ bắt đầu học đi thôi!
Đầu tiên, bạn có thể chọn một ngôn ngữ đơn giản để nhập môn trước. Mình thấy đa phần các trường ở Việt Nam dạy C, đây là một ngôn ngữ khá hay, ngắn gọn, giúp bạn hiểu cách máy tính hoạt động. Một số trường nước ngoài dạy Python, cú pháp khá gọn và trong sáng, cũng khá thích hợp cho newbie.
Sau đó, hãy học một ngôn ngữ lập trình nào đó có hỗ trợ OOP: C++, C#, Java. Hãy nhớ rằng ngôn ngữ không quan trọng, mục đích của bạn là để làm quen và nắm vững các khái niệm OOP.
Nguồn học ở đâu? Nếu tiếng Anh không giỏi, các bạn có thể lên Google tìm: Giáo trình C, Giáo trình Java v...v và tải giáo trình về học. Giáo trình ở các trường Đại Học Việt Nam tuy hơi cũ nhưng cũng khá hiệu quả, vì chúng chỉ tập trung vào các khái niệm cơ bản, syntax của ngôn ngữ. Nếu tiếng Anh kha khá, các bạn hãy lên các trường online để tập học dần từ bây giờ, sau này đi làm cũng phải học bằng tiếng Anh thôi hà.
Học những gì trong đấy?
Ở giai đoạn đầu, bạn sẽ cảm thấy khá khó khăn vì có quá nhiều khái niệm mới, quá nhiều điều cần học. Tuy nhiên, chúng thường bao gồm những điều sau đây:
- Cú pháp (syntax) ngôn ngữ
- Biến và con trỏ
- Cấu trúc điều kiện (if/else)
- Vòng lặp
- Hàm
- Đọc/ghi file
- Một số thư viện và hàm cơ bản
Sau khi học về OOP, bạn sẽ cần học thêm một số điều như:
- Bốn thuộc tính của OOP
- Lý do sử dụng OOP
- Class, Object, Modulde, Namespace
- Access Modifier
- Nguyên lý thiết kế OOP (Cái này khá khó, đi làm có nhiều kinh nghiệm đôi khi làm vẫn không đúng)
Các khái niệm như cấu trúc dữ liệu và thuật toán cũng khá là cần thiết và khó học, nên mình sẽ nhắc đến chúng ở một bài viết khác.
Nắm vững khoảng 1,2 ngôn ngữ, các khái niệm OOP, là bạn đã có một nền tảng khá ổn trong ngành rồi đấy (Nói vậy chứ không dễ đâu nhé)! Nếu có thời gian rảnh, bạn có thể đi sâu vào từng ngôn ngữ hoặc thư viện, vd như LINQ trong C#, Template trong C++, Generic trong Java, Reflection.... Cái khái niệm về networking, multithread, concurency control... cũng là những khái niệm khó và hay, ngôn ngữ nào cũng dùng được, hãy cố gắng nắm vững chúng.
Học sao cho code giỏi? Nản quá phải làm sao?
Như mình đã chia sẻ trong bài Căn bản và tư duy lập trình, muốn code giỏi thì các bạn phải … code nhiều. Ở giai đoạn đầu, các bạn hãy chịu khó làm bài tập nhiều, viết code nhiều để quen với cú pháp của ngôn ngữ, quen với cách tư duy.
Khi có lỗi thì nên tự sửa, đừng hễ gặp lỗi là mang lên các forum này nọ hỏi. Làm theo cẩm nang fix bug, hãy tập đọc message lỗi để tìm cách sửa các lỗi cú pháp, lỗi khi chương trình chạy sai. Chỉ cần luyện tập nhiều là bạn sẽ giỏi lên thôi!
Nhiều bạn chia sẻ với mình là cảm thấy code khó quá, học rất nản, sợ không theo ngành nổi. Đừng lo, hầu hết dân trong nghề đều công nhận là code thật ra khá khó.
Ngày xưa, khi ngồi làm bài tập, code mình viết toàn sai và bị lỗi. Mình cũng từng rất nản, nghĩ rằng mình không hợp với lập trình (mình chắc ai cũng từng cảm thấy như thế).
Tuy nhiên, sau khi code nhiều, tiếp xúc nhiều với lập trình, khả năng của bạn sẽ tiến bộ dần lên. Lúc đó, những vấn đề phức tạp ngày trước không còn làm khó bạn được đâu. Cố lên nhé!
Học xong thì làm gì?
Một số bạn có câu hỏi là em đã học xong ngôn ngữ này ngôn ngữ kia, giờ em nên làm gì?
Đầu tiên, không có khái niệm học xong một ngôn ngữ, chỉ có xong một môn trên trường mà thôi. Nhiều người đi làm 5-10 năm mà còn cảm thấy mình không “xong” nổi một ngôn ngữ. Kiến thức bạn học được trong trường rất ít, chưa đủ lên tầm junior nữa, đừng tự tin quá!
Nếu đã khá vững một ngôn ngữ, bạn có thể tìm và tải source code của một ứng dụng/thư viện viết bằng ngôn ngữ đó. Xem cách tổ chức code thế nào, cách viết code, đặt tên biến ra sao. Đây là điều mà các bạn mới ra trường hay thiếu.
Lý do là ở trong trường, chúng ta chỉ cần viết code cho chạy được là xong. Tuy nhiên, thiết kế cấu trúc toàn bộ dự án ra sao, viết code thế nào cho dễ đọc, dễ hiểu, dễ bảo trì là những điều trường học không hề dạy.
Do vậy, các bạn hãy chịu khó xem code người khác viết viết để lấp đầy khoảng trống kiến thức của mình nhé!
Học framework, học xong là phải làm!
Tiếp theo, hãy bắt đầu học một framework nào đó! Ví dụ bạn học Java, hãy thử tìm hiểu Spring hoặc Android. Học C# thì thử tìm hiểu ASP.NET MVC hoặc WPF.
Kiến thức và kinh nghiệm sử dụng framework là thứ mà các công ty đang cần. Nhưng nhớ là phải nắm căn bản trước khi ham hố nhảy vào học framework nhé!
Tới một lúc nào đó, việc làm bài tập sẽ không có ích gì nữa. Lý thuyết phải đi đôi với thực hành. Lúc này, việc bạn cần là tạo ra một sản phẩm. Không cần phải là một thứ gì to tát, hãy áp dụng kiến thức mình đã học để làm cái gì đó nho nhỏ đơn giản (Xem các gợi ý trong bài viết về pet project nhé).
Vững kiến thức cơ bản, biết cách dùng framework, có dự án trên Github; những điều đó khá là đủ cho bạn có một CV khá đẹp để đi xin thực tập. Nếu có thể, hãy ráng học một số kĩ năng tìm việc, sau đó xin đi thực tập từ năm 3 năm 4 nhé! Không có cách học nào nhanh bằng việc học trong môi trường thực tế, tiếp xúc với dự án thật đâu!
Về kinh nghiệm thực tập và phỏng vấn, các bạn xem lại trong series muôn nẻo đường tìm việc nhé!
Kết
Như mình đã nói, việc học ngôn ngữ lập trình đầu tiên không quá quan trọng, cũng không quá khó khăn như bạn nghĩ. Vấn đề là liệu bạn có biết tự định hướng bản thân, có dám bắt tay vào học và làm ngay hay không thôi!
Hi vọng bài viết này đã có ích cho bạn! Nếu gặp khó khăn hay có điều gì muốn chia sẻ, các bạn cứ chia sẻ trong mục comment nha.