Series Nhập Môn Lập Trình – Con đường nào cho các bạn tự học lập trình?

Ở bài trước, mình đã nói về hai con đường để trở thành lập trình viên: Đại Học và Học Đại.

So với việc học Đại Học, con đường tự học – học đại có nhiều thử thách và gian nan trắc trở hơn nhiều. Do vậy, mình dành nguyên bài viết này để định hướng, chia sẻ về con đường dành cho các bạn muốn tự học lập trình. Hi vọng chúng sẽ có ích cho bạn.

Xác định lý do muốn học lập trình

Đầu tiên, phải xin cảnh báo trước với các bạn là việc học và việc lập trình không hề dễ dàng. Chuyện tự học lại càng khó khăn hơn và không phải ai cũng có thể theo đến cùng.

Kiến thức lập trình phức tạp, khó tiếp thu. Khối lượng kiến thức nhiều lại hay thay đổi. Đây là lý do mà nhiều bạn dễ cảm thấy nản lòng, muốn bỏ cuộc khi đang học.

Do đó, mình nghĩ trước tiền các bạn nên xác định lý do mình muốn học lập trình: vì đam mê với IT, học để khởi nghiệp, học để làm ra sản phẩm đổi đời. Khi có ý định bỏ cuộc, hãy nghĩ đến lý do tại sao mình bắt đầu học.

Ngoài ra, việc xác định lý do học sẽ giúp bạn dễ dàng lựa chọn lộ trình học hơn. VD bạn muốn làm web thì chỉ cần học về web, muốn làm app di động thì chỉ cần học kĩ về di động, không phải lan man học đại trà.

Lựa chọn một con đường để đi

Để có thể đi làm, lập trình ra một thứ gì đó, hầu như lập trình viên nào cũng trải qua những giai đoạn sau:

  1. Nhập môn: Chọn một ngôn ngữ nào đó (C, C++, Python) để nhập môn, hiểu các khái niệm cơ bản trong lập trình (biến, hàm, con trỏ, module). Giai đoạn này mất khoảng 1-2 tháng.
  2. Nhập môn sâu hơn: Học C++ hoặc Java/C# để tìm hiểu về các khái niệm OOP, về cấu trúc dữ liệu và thuật toán. Ngoài ra, bạn còn phải học về cách thiết kế database và cách chúng hoạt động. Giai đoạn này cũng mất khoảng 1-2 tháng.
  3. Những giai đoạn về sau mất từ vài năm cho tới vài chục năm để thành thục.
  4. Chuyên sâu về ngôn ngữ: Sau khi đã nắm các khái niệm cơ bản, các bạn bắt đầu tìm hiểu chuyên sâu một ngôn ngữ nào đó: Ngôn ngữ đó điểm mạnh điểm yếu gì, làm được những gì, cách thiết kế code, cách viết hàm ra sao. Bạn cũng phải tìm hiểu về hệ sinh thái của ngôn ngữ đó (C# thì đi với Window, MS SQL và VS, PHP thì đi với Linux, MySQL, ….)
  5. Kiến thức nâng cao: Mỗi ngôn ngữ đều đi cùng với nhiều framework và thư viện. Phải có những kiến thức nâng cao này thì bạn mới có thể xin việc làm, làm được việc.
    1. Bạn chọn Java Web, bạn phải biết về Struts, Hibernate…
    2. Theo Android thì phải rành Java, hiểu rõ về LifeCycle của app Android, các khái niệm như Acitivty, Fragment,…
    3. Theo C# thì bạn phải biết ASP.NET MVC, Entity Framework…
  6. Kiến thức phụ thêm: Kiến thức về cách dùng Git/SVN, về HTTP và AP Về cách viết code, về kiến trúc phần mềm, caching….

Mình khuyên các bạn tự học cũng nên đi theo hướng tượng tự. Hãy xác định thứ mình muốn học rồi tìm tài liệu “nhập môn lập trình” để học những thứ cơ bản trước, sau đó học dần lên.

Điều quan trọng ở đây là các bạn phải rèn cho mình thói quen học tập, có thói quen, bạn sẽ không dễ dàng bỏ cuộc giữa chừng.

Tìm kiếm tài liệu và chọn cách học

Tài liệu học lập trình tiếng Việt khá ít và hơi lộn xộn, chủ yếu là bài tập. Do đó mình khuyên các bạn nên tìm tài liệu tiếng Anh để học, sau này cũng cần dùng tiếng Anh nhiều, học từ bây giờ sẽ tốt hơn.

Dưới đây là một số tài liệu dạng nhập môn cơ bản:

Ngoài ra, các bạn có thể học một số khoá free tại các trường dạy code online như khanacademy, udacity, codeacademy. Bonus: Đây là link 515 khoá học lập trình online miễn phí của các trường đại học danh giá https://medium.freecodecamp.com/515-free-online-programming-computer-science-courses-you-can-start-in-april-8b0ce1817d61

Bản thân mình không khuyến khích các bạn sưu tầm tài liệu. Dân VN mình có sở thích tải rất nhiều tài liệu, sách vở về nhưng… để đó không bao giờ đọc.

Tài liệu lập trình tải tùm lum nhưng không bao giờ đọc

Ở giai đoạn đầu, các bạn hãy chịu khó… làm bài tập. Việc ngồi làm bài tập, ngồi gõ code là cách hay nhất để các bạn nhớ syntax của một ngôn ngữ, nhớ cách gọi hàm, luyện thói quen viết code, tự học cách sửa các lỗi hay gặp.

Hoặc nếu lên một số trang như codeacademy, codeschool, các bạn sẽ được học một cách interactive. Tức là thay vì chỉ đọc và nghe, bạn sẽ được code từng bước theo hướng dẫn. Hệ thống sẽ chấm ngay cho bạn, báo cho bạn biết chỗ sai để mà sửa.

Cách học lập trình tốt nhất vẫn là … làm. Sau khi đã quen với một ngôn ngữ, việc làm bài tập sẽ không giúp ích nhiều cho bạn nữa.  Để tăng tư duy lập trình, hãy tự đặt ra cho mình một dự án nho nhỏ: ứng dụng tính tiền hoặc quản lý thời gian, web bán hàng v…v.

Bạn sẽ thấy mình học được nhiều thứ hơn sơ với việc ngồi giải bài tập nhiều.

Làm một cái pet project nho nhỏ thế này này. Sử dụng tại: language.codeaholicguy.com/

Lời kết

Điều cuối cùng mình muốn khuyên các bạn là: lên kế hoạch ít thôi, đừng quá phí thời gian cho việc lên kế hoạch và trì hoãn mà hãy cắm đầu vào làm ngay đi!

Sau khi đọc xong bài này, hãy lập tức làm theo 4 bước sau:

  • Xác định mình muốn học gì, làm gì
  • Xác định sơ lộ trình học
  • Cắm đầu vào học, sau đó tìm tài liệu dần và cập nhật lại lộ trình
  • Áp dụng kiến thức đã học vào để code ra một cái gì đó.

Khi đã thành thạo những thứ cơ bản, bạn hãy chuyên sâu vào một ngôn ngữ nào đó và bắt đầu dùng nó để làm các dự án nho nhỏ. Đừng quá quan tâm lo sẽ học sai ngôn ngữ, ngần ngừ đắn đo quá lâu, developer giỏi nào cũng biết vài ngôn ngữ.

Cứ đi đi, rồi sẽ thành đường thôi, lâu lâu có bị hơi lạc hướng thì cứ quay lại làm theo kế hoạch do chính mình đề ra nhé! Chúc các bạn may mắn.

Post tấm hình chia sẻ nè, 70% lập trình viên trên stackoverflow đều tự học đó

Một số link để tham khảo thêm

Advertisements

11 thoughts on “Series Nhập Môn Lập Trình – Con đường nào cho các bạn tự học lập trình?”

  1. Mình cũng là dân tự học lập trình trong nhiều năm qua. Con đường thì đúng là khó khăn hơn so với học chính quy đại học.
    Tuy nhiên, theo ý kiến của mình thì tự học là cách tốt nhất nếu bạn thực sự có quyết tâm. Tự đào tạo lấy luôn là phương châm của mình từ lúc học đến giờ.
    Riêng đối với lập trình thì chắc phải đòi hỏi bạn biết Tiếng Anh. Bởi các tài liệu hay bài viết liên quan đến lập trình cho người Việt quả thực ít. Văn hóa sharing thì gần như cũng không có…
    Đọc một vài bài trong blog của bạn cũng thấy bạn có cái tâm trong đó. Số lượng người Việt mình như vậy quả không có nhiều.
    Thank you!

    Liked by 2 people

      1. Sorry bạn vì không như bạn nghĩ, mình có bằng cấp chứ không phải không! 😀
        Mình học đại học tuy nhiên không theo chuyên ngành IT, vì thế việc học lập trình với mình là tự học. Một phần là vì tò mò, nói hơi quá một chút thì là đam mê, và hiện tại công việc của mình cũng đang liên quan nhiều đến lập trình.
        Quay trở lại với câu hỏi của bạn về chuyện xin việc khi không có bằng cấp. Theo mình, nó thực sự là khó khăn, nhất là trong môi trường tại Việt Nam.
        Mình làm cho một doanh nghiệp của Nhật Bản, và mình cũng thường xuyên đi phỏng vấn, tuyển dụng nhân viên. Đối với công ty mình và có thể rất nhiều nơi cũng như vậy: điều kiện là phải có bằng cấp liên quan đến công việc!
        Vẫn biết là nếu không có bằng cấp nhưng vẫn có thể có năng lực chuyên môn tốt, tuy nhiên đứng về phía người đi tuyển dụng, bao giờ cũng phải chọn giải pháp an toàn là tuyển những người đã được qua đào tạo tại trường lớp, xác suất họ làm được việc sẽ cao hơn…
        Nói như vậy không có nghĩa là không có cơ hội đối với các bạn không có bằng cấp, tuy nhiên theo ý kiến của mình thì các bạn cũng nên cân nhắc đến việc theo học một khóa nào đó, kiếm một vài chứng chỉ liên quan…Xác suất tìm được việc của bạn sẽ cao hơn!
        Good luck!

        Liked by 1 person

      2. Ý mình là chuyện xin việc trong ngành IT mà ko có bằng cấp liên quan đến IT ấy bạn :D. Sorry nói ko kĩ làm bạn hiểu nhầm nhé. Cảm ơn chia sẻ của bạn ha.

        Like

  2. Đúng là tự học mà không có một lộ trình rõ ràng sẽ rất mất thời gian và lan man, cảm ơn Hoàng rất nhiều vì đã chia sẻ những điều bổ ích và có tâm cho những người học đại như mình!

    Like

  3. Cho e hỏi theo a mới học có nên đầu tư thời gian cho Tiếng Anh chắc chắn ví dụ để lấy IELTS hay Toiec luôn ko ạ? Vì e thấy đối với t Anh nên học tới nơi tới chốn, nhưng để được vậy lại mất nhiều time và công sức.

    Like

    1. Đầu tư tiếng Anh để đọc hiểu tài liệu và sách vở trước đi em ạ.
      Nếu chưa cần bằng cấp thì không cần ôn thi IELTS hay TOEIC ngay. Mấy bằng này chỉ có thời hạn 2 năm, hết là phải thi lại cũng khá tốn thời gian em :D.

      Like

  4. em muốn theo ngành bảo mật an ninh mạng , nói thẳng ra là em muốn thành một hacker mũ trắng :v , và tất nhiên nếu muốn theo ngành đó thì phải có kiến thức về lập trình, em thì không có qua trường lớp gì cả, em hoàn toàn tự học, thế theo anh, nếu em theo ngành bảo mật thì có nên biết thêm nhiều ngôn ngữ lập trình không ạ. 🙂

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s