0236.2240.741
msita.vietnam@gmail.com
học lập trình đà nẵng
2 Dec 2016

Muốn học lập trình, nên bắt đầu từ đâu?

Những người mới bắt đầu học lập trình thường hay băn khoăn không biết học lập trình bắt đầu từ đâu? Msita xin chia sẻ 1 lá thư đặc biệt để giúp bạn hiểu hơn về điều đó.

“Tôi chưa bao giờ làm bất cứ điều gì liên quan đến lập trình hoặc phát triển web. Tôi về cơ bản là hoàn toàn không có manh mối gì cả. Nhưng tôi rất quan tâm đến việc học nó, vì vậy… tôi nên bắt đầu từ đâu? Bạn có thể giới thiệu giúp tôi các trang web tốt nhất, những cuốn sách, v.v… cho người mới bắt đầu mà có nội dung tương đối dễ hiểu không? Và theo bạn thì tôi phải mất bao lâu để đi từ một người chưa biết gì trở thành một lập trình viên có trình độ trung bình hoặc thậm chí chuyên gia?

Cảm ơn!
Clueless to Expert

I’ve never done anything whatsoever related to coding or web development. I’m basically totally clueless. But I am interested in learning it, so…where do I start? Can you recommend the best sites/books/etc for a beginner that would be relatively easy to understand? And how long would you guess it would take for me to go from clueless to intermediate or even expert?
Thanks!
Clueless to Expert

Bức thư đã được trả lời như thế này.

Clueless to Expert thân mến,

Tôi rất vui mừng khi biết rằng bạn muốn tìm hiểu thêm về lập trình và phát triển web. Như tôi muốn nói, internet là tương lai của chúng ta, vì vậy bạn càng học nhiều hơn thì bạn càng có nhiều cơ hội hơn trong tương lai!

Trước tiên để trả lời câu hỏi thứ hai của bạn, thật khó để có thể biết được cần thời gian bao lâu để một người mới bắt đầu trở thành một chuyên gia về lập trình. Điều đó đòi hỏi rất nhiều cuộc thảo luận về thế nào là một người mới bắt đầu và thế nào là một chuyên gia , nó hoàn toàn phụ thuộc vào những kỹ năng nào mà bạn muốn có và ứng dụng của chúng nữa.

Nhưng một điều chắc chắn là bạn có thể học được những kỹ năng cho riêng mình, và có thể đi từ một người chưa biết gì tới một trình độ khá tốt trong một vài tháng hoặc một vài năm đầy nỗ lực.

Tôi khuyên bạn nên bắt đầu bằng cách học thật giỏi kỹ năng về HTML và CSS. Một khi bạn đã bắt đầu tham gia vào việc học lập trình thì có nhiều con đường khác nhau cho bạn lựa chọn, nhưng tất cả chúng đều đòi hỏi một kiến thức vững chắc về HTML và CSS. Để bắt đầu bạn cần:

  • Hãy làm quen với những kiến thức về HTML & CSS.
  • Bắt đầu học thuộc lòng tất cả các thẻ HTML và HTML5 và các chức năng của chúng. Sau đó, lặp lại quá trình này với CSS.
  • Trang web Nettuts+ có một hướng dẫn tổng quan rất tuyệt vời về tất cả những thứ HTML & CSS trong loạt bài viết Web Development from Scratch của họ.
  • Các hướng dẫn tương tác cũng rất thú vị, tôi khuyên bạn nên xem qua hướng dẫn Web Fundamentals Track trên Codecademy.
  • Kể từ khi HTML5 chiếm vị trí quan trọng trong phát triển web, bạn có thể sẽ phải tìm hiểu sâu hơn về nó.
  • Bắt đầu xây dựng!! Chọn lấy một dự án (ví dụ làm trang web của riêng bạn) và hoàn thành nó.
  • Nếu bạn gặp phải những vấn đề khó thì hãy tìm kiếm giải pháp trên Google! Tôi tin chắc rằng bạn không phải là người đầu tiên gặp phải vấn đề đó. Trang web StackOverflow cũng là một nguồn tuyệt vời để nhận được những câu trả lời chất lượng về lập trình.
  • Hãy nhớ rằng, không có gì là hoàn hảo khi thực hiện lần đầu tiên, nhưng khi đã có nhiều kinh nghiệm thì bạn có thể hoàn toàn làm được điều đó!

Chúc bạn gặp nhiều may mắn và sớm trở thành một lập trình viên giỏi!

Dear Clueless to Expert,

I am so excited to hear that you want to learn more about coding and web development. As I like to say, the internet is the future, so the more you learn the more empowered you are going to be!

To answer your second question first, it’s hard to set timelines for things like how long it takes to go from beginner to expert coder. That necessitates lots of discussion about what it means to be a beginner vs. an expert, which totally depends on what skills you are talking about and their application.

That said, it is possible to learn these skills on your own, and it is possible to go from knowing nothing to being pretty good at a few of them within a few months or a few (short) years of dedicated effort.

I recommend that you start by getting really good at HTML and CSS. Once you start getting into coding there are many different paths you can take, but they all required a solid knowledge of HTML and CSS.

To get started:

  • Familiarize yourself with what HTML & CSS are.
  • Start memorizing all of the HTML and HTML5 tags and their functions. Then rinse, and repeat the process with CSS.
  • NetTuts+ has an awesome overview of all things HTML & CSS in their Web Development from Scratch series.
  • Interactive tutorials can be fun, I recommend taking a look at Codecademy’s Web Fundamentals Track.
  • Since HTML5 is all the rage, you can take a deeper dive on that one.
  • Start building!! Pick a project (like making your own website) and get ‘er done.
  • If you hit a wall, go to the Google! We promise that you are not the first person to encounter the problem. StackOverflow is another great resource for getting your coding questions answered.
  • Remember, nothing you make at first is going to be perfect, but with some elbow grease you will absolutely get there!

We here at Skillcrush are also working on an HTML & CSS tutorial, and will let you know as soon as it is out!

Happy coding!

Yours,
Ada

Bức thư này được dịch từ skillcrush.com.

khóa học lập trình msita đà nẵng

Và bây giờ, hãy cùng Msita tìm hiểu thêm nữa về lập trình nhé.

1. Lập trình là gì ?

Lập trình là công việc tạo ra một sản phẩm, một thành quả, và con đường trở thành lập trình viên sẽ rõ ràng hơn khi bạn biết rõ thứ mà các bạn sẽ tạo ra. Nếu mục tiêu của bạn chỉ là “học viết code”, mà không có định hướng rõ ràng về thứ mà các bạn sẽ làm ra và cách chúng sẽ làm cho cuộc sống tốt đẹp hơn, bạn sẽ thấy con đường phía trước đầy chông gai và khó nhọc.

Lập trình là việc xây dựng ra các sản phẩm CNTT để phục vụ cho cuộc sống hằng ngày, từ các sản phẩm web, các ứng dụng máy tính, ứng dụng di động, các phần mềm, các trò chơi…

2. Bạn muốn lập trình cái gì ?

Vậy, bạn muốn lập trình thứ gì? Một website, một trò chơi, hay một ứng dụng iPhone? Hoặc có thể bạn muốn xây dựng hẳn một công ty khởi nghiệp đáng giá hàng triệu USD? Đó cũng có thể là một sản phẩm tương tác mang tính nghệ thuật. Hay bạn muốn sử dụng kiến thức của mình để làm các sếp hài lòng và dành thời gian để làm những việc khác? Hoặc đơn giản bạn chỉ muốn kiếm việc dễ dàng hơn, muốn bổ sung vào hồ sơ của mình những thuật ngữ to tát, hoặc hoàn thiện chương trình học của mình. Tất cả những lí do trên đều có thể trở thành mục tiêu của bạn. Nhưng trên hết, bạn cần phải biết mình cần gì, và hãy học tập phục vụ cho điều đó.

3. Điểm cốt lõi của việc học lập trình

Học lập trình không khó . Khó ở chỗ là chúng ta có phương pháp học và có chịu cố gắng học hay không thôi. Khi bắt đầu học một ngôn ngữ lập trình cũng giống như bạn đang bắt đầu vào học một môn ngoại ngữ để giao tiếp với người nước ngoài. Ngôn ngữ lập trình là cách để người lập trình giao tiếp với máy tính, và nhờ nó làm 1 công việc nào đó trong phạm vi khả năng cho phép của nó. Bạn muốn điều khiển được chiếc máy tính của mình không còn cách nào khác là bạn phải nắm được tư duy lập trình (chính yếu) và ngôn ngữ lập trình (thứ yếu).

Và hãy luôn nhớ điều này bất kỳ một bài toán, một yêu cầu, một công việc dù lớn hay nhỏ thì khi đưa vào lập trình sẽ trải qua 3 giai đoạn: (Nhập – Xử Lý – Xuất)

Hãy nhớ kỹ điều này, nó sẽ giúp cho bạn định hình được tư duy lập trình của mình sau này. Và tôi sẽ tiếp tục chia sẽ kiến thức về tư duy lập trình với các bạn trong những phần tiếp theo. Mong các bạn xem tiếp hồi sau. Nói về lập trình thì nó mênh mông, bao la. Có thể nói là chuyện dài nhiều tập. Nhưng một khi các bạn đã nắm được cốt truyện rồi (tư duy lập trình) thì chắc chắn bạn sẽ đam mê và thích thú nó. Tôi tin là như vậy !

học lập trình msita đà nẵng

4. Có rất nhiều hướng đi, sau đây là một trong các hướng:

Lập trình web : Frontend (là làm HTML, CSS, Javascript), Backend(PHP, Java, Ruby, Python, ASP.Net,Perl, …)
Lập trình mobile : iOS, Android, Windowphone, …
Lập trình mạng
Lập trình nhúng
Và một số hướng khác mình không thể nói hết được
Và khi đã chọn được hướng đi, việc bắt đầu từ đầu cũng rất là khó khăn, đòi hỏi bạn phải kiên trì và có lòng đam mê, nếu không 1 tuần hay chừng 1 tháng là bạn sẽ nản và từ bỏ ngay.

Còn nếu bạn kiên trì, vượt qua nhưng không đam mê, không tò mò lạ lẫm, không tự hỏi mình những câu hỏi về những đoạn mã đó tại sao không nên viết thế này, viết thế kia, chạy sao … rất nhiều câu hỏi. Bạn tự đặt và hỏi thì bạn thích hợp với CNTT vì bạn có đam mê, ngược lại bạn đừng đi theo nó, vì không có đam mê, bạn sẽ không thể bắt kịp mọi người khi mà tốc độ phát triển CNTT rất nhanh, nhanh hơn những ngành khác rất nhiều, điều này bạn nên cân nhắc.

Về việc chọn ngành học, là do các bạn tự cân nhắc

Nếu bạn đi theo lập trình web, đòi hỏi bạn rất nhiều ngôn ngữ cần hiểu biết. Bởi vì làm được 1 trang web cần kết hợp nhiều ngôn ngữ: HTML, CSS, Javascript, và 1 ngôn ngữ server (PHP, Python, Ruby, Java, C#/VB, ….) cùng với 1 database (MySQL, SQL Server, NoSQL, …)

Về lập trình mobile(di động) thì bạn chỉ cần nắm 1 ngôn ngữ là đủ như : Objective-C dùng cho lập trình iOS, C# dùng cho lập trình Windowphone, Java cho lập trình Android. C# và Java ở đây nó là Java nhưng có biến thể 1 chút, các bạn học là sẽ nắm được sự khác biệt này.

Lập trình mạng và lập trình nhúng thì mình không dám chia sẻ gì, nhưng những ngành này thì tỉ lệ việc làm kiếm được ít hơn 2 hướng trên là lập trình web và mobile, tuy nhiên ít hơn không có nghĩa là khó xin việc, vẫn có nhiều việc được đăng tuyển đều đều và lương khá cao.

ngôn ngữ lập trình

Hướng nào cũng có thể mang lại cho bạn cuộc sống ổn định cả, tuy nhiên thời gian đầu bạn cũng có thể thử, thử hướng này trong một thời gian đủ dài, 3, 4 tháng chẳng hạn, nếu bạn thấy không ổn, bạn có thể đổi sang một hướng khác, cuộc sống rất dài, bỏ ra vài tháng hoặc thậm chí 1 năm để tìm được hướng đi phù hợp cho mình thì cũng không đáng là bao nhiêu, tuy nhiên qua việc thử chọn hướng, các bạn cũng sẽ ngày càng có thêm nhiều kinh nghiệm cho chính bản thân mình.

5. Không có gì chạy ngay từ lần thử đầu tiên

… và chưa chắc đã chạy trong lần thứ hai hoặc thứ 3

Khi bạn mới học lập trình, bạn sẽ gặp phải tính huống sau: bạn nghĩ rằng tất cả các dòng code đều hoàn hảo và bạn đã kiểm tra kỹ tất cả mọi thứ, nhưng code của bạn không hề chạy! Bạn không biết bắt đầu từ đâu để sửa, và những dòng thông báo (nếu may mắn chúng sẽ được hiện lên màn hình) khó hiểu. Bạn có thể nghĩ tới việc từ bỏ tại đây, bạn nghĩ rằng sẽ không bao giờ có thể tìm ra câu trả lời, bạn không thể có lời giải.

Nhưng điều này rất phổ biến với lập trình viên ở bất kỳ trình độ nào. Nó không phản ánh trí tuệ của bạn, cũng như ảnh hướng tới khả năng khám phá công nghệ cũng như cuộc đời lập trình sau này của bạn. Điều này sẽ xảy ra thường xuyên với những người mới, và cả với những lập trình viên chuyên nghiệp. Sự khác biệt thực sự lại là cách mà mọi người xử lí nó.

Một điểm khác biệt giữa những lập trình ít kinh nghiệm và những người lâu năm trong nghề khi gặp khó khăn là niềm tin. Niềm tin vào việc bản thân họ sẽ tìm ra được cách khắc phục cũng như tìm ra điều chưa đúng trong dòng code. Họ cũng tin rằng sẽ có nhiều hơn một cách để thực hiện mục tiêu. Giải pháp để biến những dòng code vô dụng thành hữu ích có thể không rõ ràng, những với sự kiên trì, họ sẽ tìm ra.

6. Sẽ có ai đó luôn luôn nói rằng những gì bạn làm là sai

Những tranh cãi xung quanh việc dùng dấu ngoặc nhọn ( } ) ở cuối dòng lệnh hay ở đầu dòng tiếp theo sẽ diễn ra liên miên. Việc này cũng xảy ra với việc dùng phím tab để lùi vào khi viết code. Đôi khi bạn cũng bị cuốn vào những tranh cãi trái chiều dạng như “phải comment cho từng hàm khi viết code” và “code tốt là không cần dùng comment”.

Tất cả những tranh cãi, lời khuyên này đều sẽ làm phiền bạn. Nhưng thực sự thì không bao giờ có một chuẩn mực rõ ràng cho việc lập trình. Rất nhiều lập trình viên đã lựa chọn cách làm việc mà họ cảm thấy phù hợp nhất với mình, nhưng đó chưa chắc đó đã là con đường duy nhất. Việc đối mặt với nhiều người trong nghề và nghe những nhận xét đúng sai của họ về việc lập trình của bạn là một việc vô cùng vất vả khi bạn bắt đầu sự nghiệp.

Nếu bạn làm trong một nhóm lập trình, sẽ có một vài người sẽ gặp phải khó khăn khi tiếp nhận các dòng code từ bạn. Đôi khi họ đúng, những cũng có khi, họ rất cổ hủ và bắt bạn phải sửa theo cách viết của cả nhóm.

Sẽ có những người nhận xét bạn không phải là lập trình viên thực thụ:

  • Viết HTML không phải là lập trình!
  • Nếu bạn không dùng vi, bạn không biết cách lập trình đúng nghĩa.
  • Những lập trình viên thực thụ sẽ chỉ dùng C.
  • Windows không phải nơi để lập trình.
  • Những thứ này không phải dành cho tất cả mọi người.
  • Cậu không phải thể trở thành lập trình viên!!!
  • Lập trình có ý nghĩa khác nhau với những người khác nhau, và bản thân công việc lập trình cũng đã khác rất nhiều so với thời điểm nó mới xuất hiện. Điều nực cười là rất nhiều công cụ, nền tảng được tạo ra để giúp cho những người mới học lập trình hoặc những lập trình viên lão luyện tạo ra sản phẩm nhanh hơn đều bị gán cho nhãn “không dành cho lập trình viên đích thực”.

Có thể thấy ở đây là sự sợ hãi của những lập trình viên. Khi ai cũng có thể dễ dàng tiếp cận với ngôn ngữ lập trình và tự tạo sản phẩm, cũng như tự gọi mình là người lập trình, thì sẽ không còn ai là lập trình viên nữa. Nhưng có lẽ, rào cản về kiến thức này đã bị phá bỏ từ rất lâu rồi.

Hãy sử dụng những công cụ giúp bạn dễ dàng xây dựng sản phẩm bạn mong muốn. Sẽ không phải xấu hổ nếu bạn nói trò chơi bạn làm ra được dựng trong Stencuyl hoặc GameMaker chứ không phải được viết từ đầu. Hãy lựa chọn cho mình môi trường và công cụ mà bạn cảm thấy thoải mái và có thể gắn bó với nó.

7. Hãy kiên trì với việc lập trình

Không có bất cứ tài liệu nào có thể chỉ cho bạn con đường đúng hoặc nhanh nhất để nắm vững kiến thức lập trình. Có rất nhiều cách để có thể học, và thực hành. Bạn có thể học những khái niệm đầu tiên từ sách hoặc những bài học trực quan trên mạng, hoặc có thể bắt đầu ngay bằng việc sửa lỗi sai của người khác. Và tất nhiên, có rất nhiều ngôn ngữ cho bạn lựa chọn để bắt đầu.

Một vấn đề khá phổ biến khi các bạn tự học lập trình, đó là các bạn sẽ dễ dàng vượt qua những phần đơn giản, nhưng sẽ gặp khó khăn tại những phần rất quan trọng sau đó. Bạn có thể biết cách in một vài dòng lên màn hình, nhưng không thể làm việc được với những dự án thật. Bạn sẽ bắt đầu cảm thấy mất phương hướng và đổ lỗi cho giáo trình.

Khi bạn gặp phải tình huống này, tất cả những giáo trình trực tuyến hay tài liệu đều trở nên vô dụng, vì những viết ra nó đều mặc định rằng, bạn đã có kinh nghiệm trong lập trình. Việc khó khăn tiếp theo là bạn sẽ phải tìm ra thứ mình cần phải học tiếp, trong khi bạn không thể biết cái mà bạn không biết.

Bạn sẽ vấp phải trở ngại này khi học lập trình ở bất kỳ đâu, còn cách giải quyết nó, là hãy tiếp tục kiên trì với việc lập trình. Hãy tiếp tục tìm kiếm những điều mới mẻ xung quanh những thứ đã học, thu nạp thêm thông tin, và tự tay xây dựng những ứng dụng của riêng mình. Bạn sẽ dễ dàng tìm được thành công nếu như bạn biết rõ mục tiêu học lập trình của mình là gì.

phòng lập trình SDC

Thành công sẽ đến với bạn nếu bạn kiên trì xây từng viên gạch lên bức tường của mình. Nếu bạn kiên trì và dành thời gian để tìm hiểu nó, việc lập trình sẽ dễ dàng bị bạn chinh phục.

Ngay lúc này hãy xây dựng cho mình một nền tảng vững chắc và Msita – dạy kinh nghiệm lập trình sẽ là điểm đến tin cậy dành cho bạn.