Để trở thành một lập trình viên

Đây là một bản hướng dẫn để một người không biết gì về lập trình có thể bắt đầu trở thành lập trình viên. Bắt đầu từ đâu phụ thuộc vào mục tiêu và sở thích của bạn.

Trước khi bắt đầu

Mình xin dành vài phút quảng cáo cho những cộng đồng lớn về lập trình viên ở Việt Nam, ngay sau khi đọc bài viết này, các bạn có thể tham gia vào những group này, họ sẽ giúp các bạn rất nhiều.

Nếu như bạn biết một cộng đồng nào thú vị mà chưa được list dưới đây, hãy comment ngay dưới bài viết hoặc email về cho mình ở địa chỉ hi@kimhieu.me để mình bổ sung vào.

Một số trang dạy học lập trình của Việt Nam

Một số trang cực kỳ hữu ích của nước ngoài

Nào, đọc bài thôi.

Theo kinh nghiệm cho thấy, cách tốt nhất để bạn có thể trở thành một lập trình viên bao gồm những bước sau:

  1. Tìm kiếm những người hướng dẫn cho bạn bằng cách tham dự vào một cộng đồng nào đó.
  2. Kết bạn với những người cũng muốn học là một cách để cùng nhau tiến lên.
  3. Hãy tìm kiếm một ý tưởng hay một dự án thực sự nào đó để làm.
  4. Hãy thật sự cố gắng học bằng tất cả sự nỗ lực của bạn, và cố gắng áp dụng kiến thức bạn học được vào dự án ở mục 3 ở trên.
  5. Hãy làm cho dự án hay ý tưởng ở mục 3 hoạt động được và gửi nó cho bạn bè hay người lạ sử dụng.
  6. Lặp lại các bước từ 3–5 cho đến khi bạn thật sự có thể xây dựng được các project khác bằng kiến thức bạn học được.

Bên cạnh đó, dưới đây là một vài tips mà bạn phải luôn nhớ trong quá trình học:

  • Tạo ra một kế hoạch học nghiêm túc và bạn và mentors có thể ngồi review cùng nhau nhằm mục đích hướng việc học của bạn đi đúng hướng
  • Xác định mục tiêu học tập cũng như các milestones một cách rõ ràng nhằm giúp bạn tập trung và luôn hướng về phía trước.
  • Giữ sức khoẻ trong quá trình học, vì đó là một quá trình lâu dài. Hãy ăn, ngủ và tập thể dục đầy đủ.

Những phần dưới đây nhằm giúp bạn xây dựng một kế hoặch học một cách rõ ràng hơn.

Community — Tham gia vào cộng đồng

Một trong những điều quan trọng mà bạn có thể làm trong khi học lập trình, là sử dụng cộng đồng như một cách hổ trợ cũng như tạo động lực cho bạn. 
Bạn nên tham gia vào các event, meetup ở thành phố mà bạn đang sống. Ở đó bạn sẽ được gặp gỡ những người có thể học cùng bạn, hoặc là gặp gỡ những mentor mà bạn có thể học được rất nhiều từ họ.

Bootcamps — Các khoá huấn luyện lập trình

Để trở thành một lập trình viên chuyên nghiệp mà không cần trải qua một quãng thời gian học hỏi kinh nghiệm quả là một điều cực kỳ khó. Và nếu như bạn đang rất nghiêm túc về việc học lập trình, thay đổi nghề nghiệp cũng như làm việc trong một môi trường nghiêm túc, có tổ chức, bạn cần phải nghĩ về việc tham dự bootcamp, một sự kiện mà bạn phải tham dự full-time trong vài tuần để làm việc với những người cũng học như bạn lẫn các mentors. Một bootcamp tốt sẽ chuẩn bị cho bạn có được các kỹ năng về phát triển phần mềm một cách thực tế, và được thiết kế để mọi người có thể tham gia:

  • Viking Code School — Một khoá học online với rất nhiều học viên cùng tương tác với nhau về web development.
  • Telegraph Academy — 12 tuần học về Software Engineering cho nhóm dân tộc thiểu số. Khoá học này tập trung về vấn đề mọi người đều có thể học được mà không cần tốn quá nhiều tiền.
  • App Academy — 12 tuần học về Software Engineering mà không thu phí cho đến khi bạn tốt nghiệp.

Ngoài ra còn rất nhiều khoá học khác về lập trình khác có giá từ $8–20k. Nếu chi phí không phải là vấn đề lớn với bạn thì dưới đây là một vài bootcamp rất tốt cho người mới bắt đầu như bạn:

  • HackReactor — Một khoá học remote về web development cộng thêm là bạn sẽ được học về nền tảng của computer science.
  • Galvanize — In-person classes at several campuses focused on comprehensive classes on web development or data science.
  • Hackbright — Engineering fellowship for women interested in learning how to become a professional software developer.

Nếu như các khoá học trên khá là mắc tiền với bạn, hoặc bạn chưa thể chuẩn bị kỹ để theo đuổi các khoá học fulltime được. Thì bạn có thể theo dõi lẫn tham gia các event được list dưới đây.

Events — Các sự kiện về lập trình

Những bước đầu tiên để học một ngôn ngữ lập trình thật là khó khăn. Tốt nhất là chúng ta nên có một cộng đồng để học cùng, việc học hỏi từ người khác là một điều không thể thiếu. Bên cạnh đó, để tìm được một chổ đứng tốt trong làng lập trình viên địa phương, việc xây dựng network trong công việc là một việc tối quan trọng, hãy xem qua danh sách dưới như là một cách tốt để tìm kiếm những events mà bạn có thể tham gia:

  • Meetup — Tìm kiếm những event tại địa phương bạn đang sống có thể giúp bạn focus vào một chủ đề nào đó.
  • Railsbridge — Trang này có những event miễn phí ở nhiều thành phố khác nhau có thể dạy có bạn cơ bản về phát triển web. Tổ chức này được tạo ra để tập trung vào các nhóm truyền thống ít đại diện trong giới công nghệ.
  • RailsGirls — Event này được diễn ra ở rất nhiều thành phố và tập trung vào việc dạy cho bạn các kỹ năng lập trình căn bản cũng như là web development. Và events này cũng tập trung vào đối tượng nữ giới.
  • MobileBridge — Đây là một events anh chị em với RailsBridge. Hướng vào các bạn muốn học về Mobile development.

Tìm kiếm những events và một cộng đồng để tham gia vào có thể là một phần quan trọng để giữ cho bạn luôn có động lực để trở thành một lập trình viên chuyên nghiệp. Vì mục tiêu ban đầu của bạn khi tham gia là học, nhưng rồi sau đó sẽ muốn chia sẻ lại kinh nghiệm lẫn sự hiểu biết của mình cho chính cộng đồng đó.

Yeah, Học lập trình thôi

Nếu mục tiêu của bạn chỉ đơn giản là “học để code”, thì bạn có thể bắt đầu với những ngôn ngữ đơn giản và dễ học như Python hay Ruby. Đây là những ngôn ngữ mà bạn có thể sử dụng để xây dựng các ứng dụng web, viết các script để xử lý gì đó hay thậm chí là viết những ứng dụng mobile đơn giản.

Với người bắt đầu, bạn thể tham khảo những bài viết sau: cách tốt nhất để học python và lớp Coursera Python trên Coursera.

Dưới đây cũng là những resource rất tốt bao gồm:

Còn đây là những khoá học rất căn bản về Khoa Học Máy Tính:

Một vài khoá học thú vị khác:

Học để phát triển ứng dụng web

Nếu bạn muốn học để xây dựng một trang web, thường thì bạn nên bắt đầu bằng việc học về HTMLCSS để xây dựng giao diện cho website.

Sau khi đã học HTML và CSS, chúng ta có thể học cách để làm cho hai thành phần trên tương tác với nhau. Đó chính là học Javascript

Học lập trình Android

Nếu mục tiêu của bạn là học để phát triển các ứng dụng cho hệ điều hành Android thì bạn có khả năng vẫn sẽ phải học các khoá làm sao để lập trình ở trên. 
Nếu như bạn muốn bỏ qua nó và học ngay về lập trình di động, bạn có thể học những khoá dưới đây mà không cần phải có nền tảng căn bản về ngôn ngữ nào trước.

Để bắt đầu, bạn có thể đọc Android getting started guides hoặc tham gia vào SF / Bay Area Android meetup để tham dự các events và lấy nguồn tư liệu học. Nếu bạn chưa bao giờ lập trình bạn phải học làm sao để lập trình với Java, đó là ngôn ngữ mà ứng dụng cho Android phải sử dụng.

Học về Kiến Trúc Dữ Liệu và Thuật Toán

Học về các kiểu dữ liệu nền tảng (stack, queues, and bags), các thuật toán sắp xếp (quicksort, mergesort, heapsort), cấu trúc dữ liệu (binary search trees, red-black trees, hash tables), và độ phức tạp của thuật toán Big O. Chúng là những câu hỏi phỏng vấn rất căn bản và làm cho bạn có những kiến thức nền tảng cốt lõi về khoa học máy tính.

Đọc code của người khác

Tìm kiếm những repo Github để rồi sau đó đọc code của người khác cũng là một cách cực kỳ hữu ích để giúp bạn nâng cao kiến thức. Các tốt nhất là lên Github và bắt đầu đọc code trên đó:

Thường thì việc đọc code sẽ là một cách rất tốt để định hướng cho bạn vấn đề “gắn kết mọi thứ — put together the pieces” đặc biết khi bạn xem code của người khác và apply cái concepts vào project của bạn.

Các tư liệu khác nên tham khảo

Lời nhắn nhủ

Học lập trình không dễ nhưng không quá khó, cái lớn nhất mà bạn cần có là đam mê và sự kiên trì. Một khi bạn đã nắm bắt được nền tảng của khoa học máy tính thì việc học các ngôn ngữ khác nhau hoặc cùng tham gia giải quyết các bài toán lập trình nhằm làm cho cuộc sống con người tốt đẹp hơn là điều cực kỳ thú vị.

Hãy ngồi xuống và bắt đầu học, những bước đầu tiên thật sự khó khăn, chỉ cần bạn bước được những bước đầu tiên đó, là bạn đã và đang chiến thắng chính mình cũng như đang sẵn sàng đóng góp những điều tốt đẹp hơn cho nhân loại.

Sometimes when you innovate, you make mistakes. It is best to admit them quickly, and get on with improving your other innovations.

Steve Job (1955–2011)

Khi bắt đầu đổi mới, có thể bạn sẽ mắc phải những sai lầm. Khi ấy, tốt nhất là nên thừa nhận thật nhanh chóng và tiếp tục cải thiện những ý tưởng sáng tạo khác của bạn.