Tắt Quảng Cáo [X] Đăng Nhập để ẩn Tất Cả Quảng Cáo ## **MUỐN HỌC LẬP TRÌNH THÌ NÊN BẮT ĐẦU TỪ ĐÂU?** > *Đây là một câu hỏi phổ biến cho những ai còn tò mò và đang chập chững tiếp cận với thế giới lập trình nhưng bị chết trôi bởi quá nhiều nguồn tràn lan. Cùng tìm hiểu qua bài chia sẻ của Scarlet, một tác giả tài năng của Spiderum, cựu thực tập sinh tại Google, LinkedIn.* ## **A. CHỌN TƯ DUY ĐÚNG ĐỂ TIẾP CẬN** Nếu bạn tình cờ nghe được một trong 2 lời khuyên nghe khá hợp tình hợp lý như sau: > ***Myth #1**: "Em phải đến trường trước cái đã. Bởi muốn làm game thì phải học về toán vi tích phân ([Vector Calculus]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO)), muốn xây hệ thống thì phải học đại số Boolean ([Boolean Algebra]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO)), vân vân và mây mây..."* * Thực tế: học hỏi một kỹ năng mới là cả một quá trình cần động lực rất lớn để tìm hiểu và tiếp thu. Nếu bạn bắt đầu bằng những thứ khô khan như kiến thức sách vở thay vì phấn khích tìm tòi cách giải quyết những vấn đề thú vị bạn gặp phải trong cuộc sống hằng ngày, việc học sẽ rất nhanh trở nên nhàm chán và khiến bạn dễ bị nản. Việc đến trường có thể sẽ trở nên thiết yếu khi bạn thật sự nghiêm túc với việc kiếm sống bằng lập trình, nhưng để bắt đầu thì không nhất thiết phải đợi đến lúc học xong đại học mới dám làm.* > ***Myth #2**: "Anh nghĩ tốt nhất là em nên học ngôn ngữ abc vì nó xyz..."* *Thực tế: đây là một lời khuyên phần lớn mang tính chất thành kiến và sở thích cá nhân. Hãy tưởng tượng những ngôn ngữ lập trình như những dụng cụ xây nhà được thiết kế cho nhiều mục đích khác nhau. Bạn không thể đóng đinh bằng xẻng, cũng như mong đợi ngôn ngữ ưa thích của người khác có thể giải quyết vấn đề của chính mình. Vì ngôn ngữ lập trình là một công cụ, bạn nên quan tâm đến việc "Học ngôn ngữ này sẽ giúp ích được gì cho vấn đề mình đang cố giải quyết?" hơn là "Ngôn ngữ nào là tốt nhất để học?". Hãy học cách lắng nghe những người đi trước, nhưng đừng mù quáng làm theo trong khi chưa hiểu rõ mục đích của mình là gì. Ở phần dưới, mình sẽ nói rõ hơn về cách chọn ngôn ngữ lập trình phù hợp.* Ngôn ngữ lập trình cũng giống như ngôn ngữ con người chúng ta vậy. Bạn có thể biết viết tiếng Pháp, nhưng cần biết nhiều hơn thế để trở thành một nhà văn. Tương tự, bạn có thể biết rõ *syntax* (cú pháp câu lệnh) của một ngôn ngữ lập trình, nhưng cần biết nhiều hơn thế để giải quyết vấn đề bằng ngôn ngữ đó. Một điểm khác biệt lớn với ngôn ngữ con người là sau khi bạn đã thuần thục được ngôn ngữ lập trình đầu tiên, sẽ dễ hơn rất nhiều để học và hiểu những ngôn ngữ thứ 2, 3, 4... vì: **(1)** Đa số syntax giữa những ngôn ngữ lập trình phổ biến thường khá giống nhau **(2)** Trong lúc học ngôn ngữ lập trình đầu tiên, bạn có lẽ đã nắm được những khái niệm cơ bản cần thiết và dần quen với cách tư duy logic có hệ thống ## **B. CHỌN GIÁO TRÌNH PHÙ HỢP ĐỂ ÁP DỤNG** Vì mỗi người có một cách học và tiếp cận kiến thức khác nhau, bạn nên tự làm vài phép thử nho nhỏ để xem cách học nào là phù hợp nhất cho bản thân. Có thể bắt đầu bằng những bước phổ biến được tổng hợp lại cho người mới học lập trình sau đây: **1. Xác định hướng đi** Tìm một (vài) vấn đề / project nhỏ mà bạn quan tâm và thôi thúc muốn giải quyết. Nó có thể là một chương trình phần mềm giúp bạn giải toán nhanh hơn, hoặc một trò chơi giúp bạn học tiếng Anh tốt hơn. Ý tưởng nên bắt đầu từ sự hứng thú vì nó sẽ giúp bạn giữ động lực để học lập trình, đồng thời được áp dụng những kiến thức học được vào thực tế. **2. Chọn ngôn ngữ lập trình** Tìm hiểu trên Google xem ngôn ngữ lập trình nào là thích hợp nhất cho project của bạn. Hoặc dùng website dưới đây để giúp bạn định hướng ngôn ngữ lập trình: [ Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO **3. Chọn nguồn** Hãy cố gắng tìm và cố định một nguồn học có chất lượng cao, thân thiện với người mới học và được nhiều người đi trước gợi ý. Rồi sau đó, bạn có thể chia nhỏ từng phần ra thành mục tiêu để đạt được trong một khoảng thời gian nhất định. * [Michael0x2a's Github]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Tổng hợp rất nhiều nguồn cho nhiều ngôn ngữ lập trình khác nhau * [tiago-atha's Github]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Tổng hợp một kho sách miễn phí cho lập trình * [FreeCodeCamp]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Nhiều khoá học tốt có uy tín và hẳn một cộng đồng lớn để luôn hỗ trợ khi bạn cần. Trên đây cũng có khá nhiều số lượng bài viết hướng dẫn cho người mới mà mình thấy rất hữu ích nữa. * [CodeAcademy]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Giao diện đẹp để học và tương tác với code nhưng tập trung khá nhiều về mảng lý thuyết * [Teach Yourself CS]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Tổng hợp và gợi ý nguồn sách cho những khái niệm cốt lõi của Computer Science * [Open Source Society University]( Vui lòng đăng kí hoặc đăng nhập để thấy liên kết tại BigMMO) - Tổng hợp nhiều nguồn học trong một giáo trình đại học online mà bạn có thể tự nghiên cứu ở nhà **4. Biết nơi để hỏi** Trong quá trình học, bạn nên tích cực tra khảo trên mạng và hỏi những người đi trước trên những cộng đồng lớn. * Stack OverFlow (bạn không thể sống thiếu trang này đâu, tin mình đi) * Reddit * Quora * DayNhauHoc * Cộng Đồng Lập Trình Việt Nam **5. Tăng kinh nghiệm** Hoàn thành nhiều projects đa dạng về độ khó khác nhau trong cùng một ngôn ngữ lập trình đó. Hoặc bạn có thể tăng khả năng tiếp cận và giải quyết vấn đề với những câu đố hóc búa đòi hỏi óc phân tích. * HackerRank * CodeWars * TopCoder *p/s: mình xin phép để link bài viết gốc dưới comment để cả nhà tham khảo đầy đủ các nguồn siu bổ ích do tác giả chia sẻ nhé ^^* Nguồn: group Người Trong Muôn Nghề