Học lập trình từ con số 0

Chào các bạn thân yêu của Sếp Hỏi Blog, đây là bài viết đầu tiên trong loạt các bài viết nói về việc học lập trình và nhân dịp các bạn tân sinh viên bước vào giảng đường được hơn 1 tháng. Cách đây khoảng 4 năm trước, mình cũng mang danh tân sinh viên, chân ướt chân ráo vào Sài Gòn để học tập đồng nghĩa với việc xa gia đình, xa quê hương và phải tự mình sống trong một môi trường hoàn toàn khác, chắc chắn là các bạn vẫn còn đang bỡ ngỡ và bên cạnh đó cũng có những trải nghiệm thú vị trong hơn 1 tháng vừa qua.

university

Lên giảng đường, việc học cũng khác hoàn toàn cấp 3, các bạn phải chủ động và đặc biệt là phải tự giác lên kế hoạch học tập cho mình một cách hiệu quả nhất. Tuy nhiên, nói là thế nhưng thực tế là một chuyện hoàn toàn khác. Ở Đại Học, các bạn phải trải qua rất nhiều môn Đại Cương như Giải Tích, Đại Số Tuyến Tính, Cấu Trúc Rời Rạc, Vật Lý Kĩ Thuật và các môn cơ sở cho chuyên ngành (ở đây mình chỉ đề nói đối với các bạn sinh viên ngành Công Nghệ Thông Tin) và chắc chắn bàn sẽ nhanh chóng chán nản bởi vì một điều !! là nó khác hoàn toàn trong ý nghĩ của bạn khi bước vào giảng đường. À thì, ý nghĩ trong đầu của bạn sẽ ” là một sinh viên công nghệ thông tin, mình sẽ tạo ra các website, các game nổi tiếng đình đám, mình sẽ trở thành một hacker, …” nói chung là nó rất tươi đẹp để bạn có thể hứng thú. .study-stress

Chém gió như vậy là đủ rồi, mục đích của loạt bài này là để giúp các bạn tân sinh viên lấy lại niềm đam mê, sự hưng phấn và hướng cho các bạn có mục tiêu đúng đắn (cảm giác như đa cấp vậy :(). Trước khi mình trình bày chiến lược (của riêng mình thôi nha – đúng hoặc sai tùy bạn nhận xét – và lưu ý là mình không chịu trách nhiệm nếu kết quả không mong muốn) thì mình sẽ phân tích vì sao các bạn lại cảm thấy chán nản và cảm giác kiểu như là bị mất phương hướng. Như đã nói thì việc học quá nhiều môn (không liên quan đến chuyên ngành) và thậm chí năm nhất các bạn học một vài môn cơ sở (liên quan đến chuyên ngành – và thực chất nó đóng vai trò background cho về sau) mà bạn vẫn không cảm thấy hứng thú. Bởi vì một lí do, nó không giống như trong trí tưởng tượng.

Bạn muốn xây dựng một website, tuy nhiên với môn Tin Học Đại Cương bạn chỉ biết hệ nhị phân, cách chuyển đổi từ thập phân sang nhị phân và ngược lại, hay các bạn chỉ được học bảng mã ASCII, rồi một vài câu lệnh cơ bản như if else, switch case, while do, do while… !!! và rồi giải mấy bài toán như tính ngày tháng năm, cao hơn là tính tiền lương cho công nhân rồi nào là các giải thuật tìm kiếm, sắp xếp và bạn tự hỏi ủa website của “tao đâu rồi”, “cái *** gì thế kia, chỉ in ra cái màn hình đen đen thôi à”, “ủa mày giờ làm game sao mày …” … nhiều câu độc thoại nội tâm xuất hiện.

Tuy nhiên, các bạn đừng có coi thường và thấy nó không làm được gì thì không muốn học. Tất cả các môn như Tin Học Đại Cương, Cấu Trúc Dữ Liệu Và Giải Thuật hay Hướng Đối Tượng là nền tảng để xây dựng kĩ năng sau này. Bạn hãy tưởng tượng thế này cho dễ, hồi cấp 3 mấy bạn có học tích phân, rồi vẽ đồ thị hàm số, muốn làm được như vậy thì phải thuần thục các phép tính toán +, -, *, / à thì mấy môn kia cũng vậy đấy. Kiểu như nó là nền, mà là nền thì làm gì hiện hữu trước mặt bạn. Cũng giống như xây cái ngôi nhà đồ sộ, thì mấy bạn chỉ thấy được cái nhà nó desgin ra sao, nội thất ra sao mà sẽ không bao giờ để ý cái móng, cái nền nhà. Nhờ có nó nhà mới vững chắc được. Mà nếu theo ý mình, thì các chả lẽ phải tiếp tục học mấy môn (màn hình đen) như trên phải ngồi đổi số, hay làm mấy bài tập tính tiền lương công nhân.  Theo kinh nghiệm của mình, thì mình chắc trên 80% các bạn sẽ “giác ngộ” được và lấy mấy quyển sách ra học và … một vài ngày sau thì lại đâu vào đấy. Màn hình đen, “chán thấy ***”, “khô khan quá”, “…”. Cũng giống như là bạn lên mạng, đọc mấy bài viết kiểu như làm thế nào để thành công, rồi thì làm cách A, B, rồi cách C… rồi mấy bạn cũng lấy giẩy ra lên kễ hoạch và vài ngày sau… cũng đâu vào đấy. Các cụ nói có sai “có thực với vực được đạo”. Chỉ có một cách duy nhất để lấy lại “niềm tin” và sự “hưng phấn” là “thỏa mãn” nhu cầu của mình. À thì mình sẽ làm game, mình sẽ làm website, mình sẽ làm android … . Bạn sẽ bắt đầu từ…

books

Trước khi mình chia sẻ, thì mình có một vài lưu ý

  1. Đây chỉ là ý kiến chủ quan và mình đút kết từ kinh nghiệm của mình, nên có thể đúng hoặc sai tùy bạn áp dụng
  2. Nếu bạn áp dụng theo cách của mình mà không hiểu quả, thì đừng có ném gạch, hay đánh mình tội nghiệp lắm.
  3. Hết rồi

Ở đây, loạt bài viết này dành cho các bạn sinh viên không biết gì hết về lập trình (bắt đầu từ số 0), còn mấy bạn đã biết code, có giải thưởng tin học cấp 3 thì có thể tham khảo hoặc góp ý cho mình để hoàn thiện bài viết này hơn.

CHỌN MỘT NGÔN NGỮ ĐỂ HỌC

Ở đây không phải là tiếng Anh, tiếng Pháp, hay tiếng Tây Ban Nha đâu, mà chính là ngôn ngữ bạn có thể sử dụng để tạo ra các website, các game … hay các ứng dung khác. Để mình cho bạn một vài gợi ý nhỏ, nếu muốn làm website thì nên chọn HTML/CSS kết hợp PHP một chút Javascript (mấy khái niệm này mình sẽ nói sau), nếu muốn làm Game thì chọn Unity, hoặc HTML5 và nếu muốn làm android thì học Java Android, muốn làm IOS à mà thôi nhiêu trên là đủ rồi. Có nhiều người đọc bài viết này sẽ nói rằng, xúi bậy không hà, nó có biết gì về lập trình đâu mà bắt học HTML/CSS, PHP rồi là Unity…. Ờ thì cũng đúng, nó biết gì đâu mà học. Tuy nhiên, các bạn tin mình đi, khi mình tò mò một vấn đề nào đó, kiểu như giờ làm thế nào để tạo ra cái trang web in tên mình chạy chạy lên…, kiểu như giờ muốn làm một cái game flappy bird, giờ làm sao in con chim lên màn hình ?… rồi các câu hỏi tương tự luôn ở trong đầu chí ít cũng hướng bạn đến môt vấn đề nào còn hơn là không biết mình sẽ làm gì ?

html5-and-css3

Sau khi các bạn chọn cho mình một ngôn ngữ, hồi lúc trước là mình chọn làm web nên học HTML/CSS, Javascript và PHP. Vậy câu hỏi đặt ra là ? Nên làm gì bước đầu tiên, à không bước đầu tiên làm rồi, sang bước thứ 2 là phải tìm cho mình một người hướng dẫn – vì sao cần người hướng dẫn ? Bạn là một người hoàn toàn mới lạ HTML/CSS giống như bạn vào một thành phố bạn muốn đến sân vận động, mà bạn hoàn toàn không biết đường – không biết sự tồn tại của nó nằm ở đâu – không biết nó như thế nào – thì lúc này việc đầu tiên là bạn cần phải có một người hướng dẫn. Vậy làm thế nào để học HTML/CSS đây ? Mình sẽ học ở đâu ?

TÌM NGƯỜI HƯỚNG DẪN

planning

Đầu tiên, để có thể nắm cơ bản về một ngôn ngữ (ở đây mình ví dụ HTML/CSS cho đơn giản)  bạn cần phải tìm cho mình một người hướng dẫn. Và cách tìm nhanh nhất, đơn giản nhất là tìm kiếm trên google. Bạn chỉ cần vào google.com và gõ từ khóa “học html/css căn bản” thì bạn có thể thấy được nhiều tài liệu liên quan và cực chi tiết.

Các bạn nên ưu tiên tìm kiếm các khóa học miễn phí bằng video thay vì đọc sách. Học bằng video giúp các bạn dễ tiếp thu và mườn tược được vấn đề (rất có lợi khi các bạn chưa học về lập trình). Bạn nên dành thời gian 4-5 tiếng mỗi ngày cho việc học theo video, đặc biệt là phải làm các bài tập trên video, làm càng nhiều càng tốt. Sau khi đã xong một vài video hay khóa học – lúc này bạn đã có kiến thức căn bản – và dĩ nhiên bạn có quyền tự tạo cho mình một dự án nho nhỏ – kiểu như hiển thị thời khóa biểu của mình lên web, hay tạo một vài trang nho nhỏ để hiển thị thông tin (kiểu như CV xin việc). Đó là trường hợp lí tưởng – bạn hiểu hết các vấn đề video – khóa học nó giảng. Đời không như là mơ mà ! Trong quá trình bạn học, có thể gặp các vấn đề, các thắc mắc mà không biết hỏi ai ? Lúc này, điều quan trọng nhất là bạn phải kiếm được một người anh/em … có kinh nghiệm về chủ đề mà bạn theo học để có thể hỏi một cách thấu đáo khi cần thiết. Các bạn mới vào đại học có thể kết bạn với mấy anh khóa trên, đó là điều quan trọng và nên làm trước tiên. Hoặc bạn còn có thể lên các diễn đàn trực tuyến để hỏi về các chủ đề mà bạn thắc mắc. Chỉ cần lên google.com và gõ từ khóa “diễn đàn html/css” và nếu có một chút tiếng Anh có thể vào stackoverflow.com để thắc mắc. Tuy nhiên, để có thể hiệu quả bạn nên kết bạn một vài người có kinh nghiệm. Nếu họ có dự án, thì bạn xin phép tham gia vào để học việc (điều này giúp bạn học một cách nhanh chóng và thấu đáo).

Mình lưu ý một điều, là các môn nên tảng như Tin Học Đại Cương, Cấu Trúc Dữ Liệu Và Giải Thuật, Hướng Đối Tượng là đặt biệt quan trọng, rất quan trọng nên các bàn cần phải học chăm chỉ – chỉ cần đến lớp, làm bài tập – là đủ rồi. Còn việc học một ngôn ngữ để làm web, game là giúp bạn mở ra nhiều cái nhìn mới và có thể thấy rõ hơn mình làm được gì, giúp bạn thấy động lực để học tập …

programing

Ở phần sau, mình sẽ chia sẻ cách lên kê hoạch, và nên học chăm các môn Đại Cương hay là chỉ cần tập trung môn chuyên ngành…

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s