10 Quan niệm không đúng trong việc học lập trình

Bài viết được dịch từ Hongkiat.com

Có vô số những ngộ nhận và lầm tưởng xung quanh công việc lập trình. Nhiều người cho rằng đó là một công việc chỉ dành cho những con người rất tài năng. Một con đường nghề nghiệp chỉ dành riêng cho geek (những người đam mê các hoạt động về trí não), hoặc có năng khiếu toán học, và là một công việc không cho phép bạn mắc sai lầm.

Có quá nhiều quan niệm sai về nghề lập trình phần mềm mà tôi đang theo đuổi!Có quá nhiều quan niệm sai về nghề lập trình phần mềm mà tôi đang theo đuổi!


Ở bài viết này chúng ta sẽ tiến hành gỡ rối, khám phá và sửa chữa những ngộ nhận trong nghề lập trình viên, và có thể được xem như là một lời tư vấn đáng tin cậy cho những ai đang cân nhắc xem liệu công việc lập trình có phải là con đường sự nghiệp cho họ hay không. Nếu bạn có bất kỳ sự lầm tưởng nào khác thì hãy bổ sung vào danh sách này, bằng cách liệt kê chúng ra ở phần bình luận phía dưới nhé!

1. Tôi phải tinh thông toán học để có thể học các ngôn ngữ lập trình

Mọi người thường bị nhầm lẫn về mối quan hệ giữa toán học và lập trình, bởi vì họ muốn có một câu trả lời dứt khoát là ‘Có’ hoặc ‘Không’. Nhưng thực ra, câu trả lời thì thường là “còn tùy, nhưng hầu như là không”. Là một lập trình viên, chúng ta dành hầu hết thời gian của mình để viết code, không phải với các công thức toán học, và kiến thức toán học của bạn thì không tỷ lệ trực tiếp tới kỹ năng lập trình của bạn.

Đừng hiểu sai ý tôi, chúng ta vẫn sẽ cần kiến thức cơ bản về đại số, nhưng chỉ cần ở mức căn bản, và vâng nó chỉ là đại số mà thôi. Bên cạnh đó, có rất nhiều thư viện và plugin để bạn có thể áp dụng trực tiếp vào trong code của mình, nó sẽ giúp bạn giải quyết các vấn đề về toán học và thuật toán.

Học lập trình không cần phải giỏi toánTuy nhiên, nếu bạn đang cố tạo ra một sản phẩm nào đó mà yêu cầu các kiến thức toán học hoặc vật lý cao cấp hay về đồ họa máy tính, thì bạn chắc chắn cần phải tinh thông toán học (nhưng đừng lo, có vô số những giải pháp về vật lý và đồ họa đã có sẵn trong ngành này).

2. Tôi phải là một thiên tài (với chỉ số IQ cỡ 160)

Không quan trọng liệu chỉ số thông minh (IQ) của bạn là 160 hay chỉ 90, việc lập trình không liên quan đến các yếu tố về sinh học đó, nhưng nó phụ thuộc rất nhiều vào niềm đam mê của bạn. Nếu bạn đã tham gia một bài kiểm tra để xác định điểm số IQ của mình, thì việc biết được chỉ số đó cũng chẳng giúp bạn được gì nhiều trong việc nhận ra cái mà bạn muốn làm hoặc bạn có thể tiến xa đến mức nào.

Tôi không phải là một thành viên của câu lạc bộ những người có chỉ số IQ cao nhất (MENSA), nhưng tôi có 4 năm kinh nghiệm lập trình, và tôi có thể lập trình một cách khá thoải mái bởi vì tôi không quan tâm đến việc mình bị thất bại bao nhiêu lần, điều quan trọng là biết học từ những sai lầm đó, đó là cách cơ bản nhất để một lập trình viên có thể tiến bộ.

Bất kỳ ai mà biết cách truyền đạt thì đều có thể học lập trình được. Bởi vì trong phần sâu cốt lõi của nó, lập trình cũng là một “ngôn ngữ” cùng với ngữ pháp và từ vựng, và sự tồn tại của nó thì chỉ với mục đích giúp bạn có thể truyền thông với máy tính để hoàn thành một tác vụ hoặc hành động xác định nào đó, cũng giống hệt như cái mà chúng ta đang làm trong thế giới con người. Điều đó thực sự rõ ràng.

3. Tôi phải đỗ vào đại học để học lập trình

Người ta nói rằng trong trật tự để vươn tới “tuyệt đỉnh võ công” về lập trình, bạn phải cần nhờ một bậc thầy để chỉ dẫn con đường cho bạn đi. Và tại đỉnh cao nhất của các thứ bậc là chức danh Giáo sư (đó là danh hiệu cao nhất mà bạn có thể vươn tới trong con đường học thuật). Nhưng ngày nay, chúng ta phải cảm ơn đến Internet, bạn có thể học cách làm thế nào để lập trình từ những lập trình viên đầy nhiệt huyết, mà không phải từ những giảng viên tại các trường đại học.

Học lập trình trực tuyếnBạn hãy đăng ký một khóa học cho người mới bắt đầu tại các trang web dạy lập trình tương tác trực tuyến như Codecademy, hoặc đọc các bài hướng dẫn thực hành trên các trang như Nettuts+, những tài liệu này được giải thích rõ ràng bằng cả hai loại định dạng là văn bản và video. Nếu bạn gặp phải một vấn đề hóc búa và muốn có được một câu trả lời trực tiếp? thì Stack OverflowStackexchange là những người bạn tốt nhất của bạn. Việc tìm kiếm trên Google cũng có thể giúp bạn tìm đến những kết quả tốt (và sẽ dẫn bạn tới vô số nguồn tài nguyên về phát triển phần mềm).

Xin nhắc lại, tôi không nói rằng các trường đại học không thể dạy bạn bất cứ điều gì. Một giáo sư hoặc giảng viên đại học chắc chắn có thể giúp bạn hiểu nhanh hơn về các lý thuyết và khái niệm như là lập trình hướng đối tượng (Object Oriented Programming), và tạo ra một chút thuận lợi mà bạn cần khi bắt đầu tham gia vào lĩnh vực này.

Nhưng bất kể con đường nào mà bạn chọn, thì bạn cũng phải thành thạo khả năng tự học, bởi vì không giống như những ngành nghề thuộc lĩnh vực khác, ngành lập trình luôn luôn phát triển với tốc độ như vũ bão, và chỉ bạn mới có thể quyết định xem liệu mình có thể luôn bắt kịp nó hay không mà thôi.

4. Tôi phải trở thành người lớn mới có thể học các ngôn ngữ lập trình

Các bậc phụ huynh làm ơn đừng sử dụng độ tuổi của con bạn để ngăn cản chúng học các ngôn ngữ lập trình, và đó không chỉ là quan điểm của cá nhân tôi. Tại Code.org, có một yêu cầu kiến nghị rằng nên đưa lập trình trở thành một môn học bắt buộc tại các trường học, để giúp cho bọn trẻ có thể học cách suy nghĩ một cách có logic hơn.

Tuy nhiên, có một sự khác nhau trong mô hình học lập trình giữa trẻ em và người lớn. Cách tốt nhất để bọn trẻ học là theo cách trực quan, từ đó những nhận thức trực quan của chúng sẽ ngày càng phát triển. Theo phương pháp này thì ScratchAlice là các công cụ hoàn hảo dành cho trẻ em có thể học lập trình (cách này thì tốt hơn rất nhiều so với các cuốn sách dạy lập trình truyền thống).

Và nếu chúng thích một môi trường học tập tương tác hơn (bởi vì ai mà chả muốn điều đó cơ chứ?), thì cộng đồng lập trình như Khan Academy là nơi tốt nhất để học. Các bậc phụ huynh cũng có thể trợ giúp trong quá trình bọn trẻ của bạn học, và chỉ dẫn chúng cùng với sự giải thích cặn kẽ, cung cấp các bí quyết và tài nguyên, nếu có thêm sự giúp đỡ của bố mẹ thì sẽ làm gia tăng hiệu quả của việc học này lên rất nhiều.

5. Tôi chỉ nên học ngôn ngữ lập trình tốt nhất mà thôi

Ngôn ngữ lập trình ‘tốt nhất’ ư? Đó là một suy nghĩ sai lầm, bởi vì ngôn ngữ lập trình tốt nhất là ngôn ngữ phù hợp với mục đích hiện tại của bạn, hoặc cho công việc hoặc trong học hành. Hay nói cách khác, không có ngôn ngữ lập trình nào gọi là tốt nhất cả, vì còn tùy thuộc vào cái mà bạn muốn làm cùng với nó.

Không có ngôn ngữ lập trình tốt nhấtTuy nhiên, có những ngôn ngữ tuyệt vời dành cho người mới bắt đầu. Python là một trong số đó vì nó đơn giản, dễ đọc và linh hoạt. Java cũng là một ngôn ngữ dễ học và tốt cho tất cả mọi người, nó có một thư viện tài liệu phong phú và một cộng động hoạt động năng nổ, hoặc bạn cũng có thể nhảy vào học C# giống như tôi đã làm. Trên tất cả, bạn nên quyết định lựa chọn công cụ của mình dựa trên tốc độ thực thi của ngôn ngữ, các đặc trưng riêng, khả năng tương thích, và khả năng bảo trì, v.v…

6. Chỉ cần vài tuần để học và tinh thông một ngôn ngữ lập trình

Bạn đừng tin vào câu khẩu hiệu này. Thật đáng buồn khi nhìn thấy nhiều bạn trẻ khao khát cố gắng học một ngôn ngữ lập trình trong một khoảng thời gian ngắn rồi nhận ra rằng họ không có khả năng tạo ra một trò game MMORPG hoành tráng (game nhập vai trực tuyến nhiều người chơi) trong vòng vài tuần lễ. Và sau đó, họ sẽ nản chí, và tự nhận mình là một kẻ ‘bất tài’ và sau đó từ bỏ giấc mơ trở thành một lập trình viên game.

Thực ra, bạn có thể dành vài tuần để học lập trình, nhưng bạn sẽ mất nhiều năm để trở nên tinh thông việc lập trình đó. Cũng giống như các họa sĩ vẽ tranh, lập trình yêu cầu bạn phải có đam mê và kiên trì, và hầu hết những sản phẩm mà bạn tạo ra vào lúc đầu có thể sẽ chẳng được người ta sử dụng. Tuy nhiên, nếu bạn luôn cố gắng hoàn thiện mình, bạn sẽ phải tiến từng bước một. Để trở thành một lập trình viên giỏi, bạn nên cảm thấy thoải mái mỗi lần gặp thất bại, bởi vì đó là cách duy nhất để giúp bạn tiến lên.

7. Tôi nên nhớ tất cả các cú pháp và tránh việc nhờ giúp đỡ

Về mặt tâm lý mà nói, nếu bạn lập trình mà không cần sự chỉ dẫn từ bên ngoài, thì bạn sẽ phải nhớ mọi thứ và trở thành một “siêu nhân” có thể xây dựng bất cứ thứ gì từ con số 0. Nhưng sự thật là, bạn không phải lo lắng về việc nhớ các cú pháp, và bạn sẽ phải viết cùng đoạn code đó hàng ngàn lần trước khi có thể tạo ra một framework của riêng mình.

Bạn không cần phải nhớ hết cú pháp ngôn ngữ lập trìnhGoogle, IDE và các Framework không phải được tạo ra chỉ để cho vui — chúng được thiết kế đặc biệt nhằm giúp bạn lập trình được nhanh hơn. Bài tập tốt nhất là sử dụng IDE cùng với cú pháp được đề xuất và tra cứu “sư phụ” Google bất cứ khi nào mà bạn gặp phải một vấn đề hóc búa.

Việc sử dụng các framework sẽ giúp bạn hiểu được điều mà ngôn ngữ lập trình đó làm, và những giới hạn nào nó có thể đẩy tới. Sau đó, khi mà bạn đã có một kiến thức tạm đủ, thì hãy tự trải nghiệm bằng những tác vụ lập trình xác định. Hãy khám phá, vọc vậy một thứ gì đó và phấn khích trong việc làm rối tung mọi thứ lên.

8. Tôi hoàn toàn không thể viết được nhiều code như vậy

Tôi là một trong nhiều người đã cảm thấy kinh hãi khi lần đầu tiên nhìn thấy mã nguồn của một trang web, bởi vì bạn có thể chắc chắn rằng 4000 dòng code có thể là quá nhiều. Tuy nhiên, trong khi HTML không phải là một ngôn ngữ lập trình, thì nội dung của nó có rất nhiều trong mọi file code nói chung. Nếu bạn để ý quan sát một chút, thì bạn sẽ nhận ra rằng chúng chỉ có một mớ code bao gồm các câu lệnh lặp lại, các phương thức và vòng lặp mà thôi.

Tất cả chỉ có vậy; các lập trình viên hầu như đều sử dụng cùng những thứ mà bạn đã học trong các khóa học sơ cấp và trung cấp để thực hiện tất cả các giải pháp từ đơn giản đến phức tạp. Và một khi bạn đã quen với nó, bạn sẽ cảm thấy rằng 10,000 dòng code cũng chỉ là trò trẻ con. Bạn có thể tạo ra chúng một cách rất nhanh chóng!

9. Tôi là phái yếu. Tôi không thể lập trình.

Tôi xin nói thẳng là tôi là một fan hâm mộ của các lập trình viên nữ. Những bạn nữ trong lớp học của tôi trước đây thường rất giỏi trong cả hai môn toán và khoa học; và nghề nghiệp lập trình của tôi đã chứng minh niềm tin đó là đúng đắn. Phụ nữ đã và luôn ở top trên trong danh sách những lập trình viên có ảnh hưởng nhất, đây là một trong những danh sách đó dành cho bạn, chỉ để chứng minh điều tôi vừa nói:

  • Ada Lovelace có thể được xem là lập trình viên đầu tiên trên thế giới.
  • Grace Murray Hopper đã phát triển trình biên dịch đầu tiên cho ngôn ngữ lập trình.
  • Adele Goldstine đã góp phần tạo nên máy tính điện tử đầu tiên trên thế giới.
  • Jean E. Sammet là người đã phát triển ngôn ngữ lập trình FORMAC, một biến thể của ngôn ngữ FORTRAN.
  • Marissa Mayer là một trong những lập trình viên đầu tiên của Google.

Có khá ít phụ nữ theo đuổi ngành lập trìnhSức ảnh hưởng của phụ nữ trong lĩnh vực lập trình là một điều hiển nhiên, nhưng giống như hầu hết đàn ông không thể gây được sự thu hút trong ngành công nghiệp nước hoa, chỉ có một tỉ lệ rất nhỏ phụ nữ so với nam giới trong nghề lập trình viên có thể là do các yếu tố như áp lực xã hội và kinh tế cũng như sự đam mê và viễn cảnh khác nhau trong cuộc sống v.v…

10. Tôi chỉ có thể bắt đầu kiếm tiền một khi tôi đã tinh thông công việc lập trình

Nếu chỉ nhìn thoáng qua tại hầu hết các vị trí tuyển dụng lập trình viên, và bạn có thể nhìn thấy họ sẽ yêu cầu vài năm kinh nghiệm và phải thành thạo hàng tá những ngôn ngữ lập trình cho vị trí đó. Nhưng thực ra nó không đến nỗi khắc nghiệt như vậy. Bạn luôn có thể nhận lấy một công việc lập trình tương xứng với kinh nghiệm coding của mình, nhưng bạn không thể chỉ ngồi đó và đợi được.

Nếu ứng tuyển trực tiếp không được, thì xin thực tập (hoặc thử việc) là cách rất tốt để thu được kinh nghiệm làm việc và có cơ hội để trở thành một nhân viên chính thức, nhưng trên tất cả, là bản hồ sơ công việc portfolio của bạn phải đưa ra những khả năng ấn tượng nhất để những nhà tuyển dụng muốn xem. Nếu muốn có được danh tiếng trong cộng đồng thì bạn hãy bắt đầu một dự án mã nguồn mở ngay hôm nay.

Freelancer cũng là một nơi tuyệt vời để bắt đầu, bởi vì hầu hết khách hàng ở đó thường rất khó tính. Dù theo cách nào đi nữa thì cũng là điều tốt, vì bất kỳ ai cũng phải bắt đầu từ một nơi nào đó, nhưng bạn phải luôn luôn chủ động trong công việc.

Chào mừng bạn đến với thế giới lập trình!

Với tất cả những điều kể trên, lập trình thì cũng chỉ giống như bất kỳ lĩnh vực nào khác, nơi mà bạn phải làm việc chăm chỉ là yếu tố quyết định để thành công. Vì thế còn chần chừ gì nữa, bạn hãy thực hiện ngay bước đi đầu tiên của mình và bắt đầu bài học lập trình đầu tiên ngay hôm nay!

Các bài viết liên quan:

Về tác giả bài viết:

AlvarisAlvaris là một lập trình viên, một web designer và là một biên tập viên cho blog Hongkiat.com.

25 comments on “10 Quan niệm không đúng trong việc học lập trình

    • Chào Cường,

      Thực ra lập trình cũng có nhiều cấp độ khác nhau, trừ trường hợp bạn làm công việc nghiên cứu chuyên sâu một lĩnh vực gì đó thì mới cần những kiến thức toán cao siêu, còn lại với kiến thức trung bình cộng thêm sự nỗ lực là bạn có thể học được hết.

      Trên trang giới thiệu của blog Vinacode cũng có nhiều người đã hỏi câu hỏi giống như bạn hỏi, bạn ghé qua đó đọc nhé: https://vinacode.net/gioi-thieu/

      Chúc bạn sớm chọn được hướng đi cho mình 🙂

  1. Vinacode ơi! Trong bài viết bạn có đề cập đến các dự án mã nguồn mở. Vậy bạn biết có cách nào để tìm các dự án mã nguồn mở về PHP ở Việt Nam không? Mình mới chuyển ngành sang lĩnh vực lập trình web nên rất muốn có một nơi để thực hành!
    Cảm ơn bạn!!!^^

  2. Từng có quan điểm 6,7,8 nhưng đã bỏ. Chia sẽ kinh nghiệm một tí:
    6.
    Hồi đó vừa học Java + Android; SQL + PHP + HTML5 + JS + CSS3 cùng lúc. Học nhiều lúc tưởng mình bị điên luôn rồi chớ. Chỉ vài tuần thì có thể làm được một ứng dụng cơ bản chạy trên thiết bị Android, có một cái web chạy bằng PHP rồi. Nhưng khi nhìn lại thì nhìn ứng dụng của mình cái nào cũng không hoàn chỉnh cả. Lỗi đủ thứ lỗi. Buồn + căng thẳng nên Mấy ngày liền không viết code, không làm gì hết. Khi thoải mái đầu óc rồi mới nhận ra mình học quá nhiều thứ một lúc mà học không tới nơi tới chốn cái nào cả. Nên bỏ web đi, đi theo Java + Android trước đã và giờ khi thì có được ứng dụng chạy khá ổn định :D, thời gian nữa ổn mình sẽ quay lại học web. Theo suy nghĩ của mình là bắn phát nào phải cho tới phát đó rồi bắn tiếp. Chứ không là Biên Hòa thẳng tiến :v
    7.
    Lúc đó cũng cố nhớ hết mọi thứ code, đủ loại code nhưng không nhớ hết được dẫn đến bức xúc trong người. Tiếp tục đi lang thang lên mạng tìm đọc được một bài viết (Giờ không nhớ nó ở đâu) đọc miệt mài. Ấn tượng nhất một câu “…đừng biến đầu mình thành ổ cứng rẻ tiền, Hãy để bộ lưu trữ khác làm việc đó như Ổ cứng, dropbox…” (Nhớ không rõ) từ đó những đoạn code hay mình copy vào một file text. ghi chú thích rõ ràng rồi lưu ở máy một bản, đưa lên dropbox 1 bản. Khi nào cần thì lấy xuống copy paste vào là xong vì đó là code của mình mà;
    8.
    Mình tải Source code của người khác về đọc, mấy lần đầu nản quá trời, chẳng muốn đọc. Thấy nhiều quá trời. Nhưng khi cố gắng đọc một source đơn giản nhất thì phát hiện ra không hề khó, mọi thứ đơn giản. Tỉnh táo nhìn một tí là thấy được phân ra từng hàm với chức năng rõ ràng. Đặc biệt học được nhiều đoạn code hay, với nhiều kỹ thuật trong đó nữa. :D;
    P/S: Mình chỉ chia sẻ kinh nghiệm bản thân từng gặp thôi. :D; Mong ai đang trong hoàn cảnh giống mình thì tìm được cách giải quyết 😀

  3. Có người xách vữa cả đời cũng không lên được thợ xây dù cho cần cù , chăm chỉ đến mấy ;)) . Nói chung không có IQ cao cũng học được nhưng có thành thợ xây không nó lại là chuyện khác 😀

  4. Sáng nay mình có làm một bài test để tuyển vào thực tập ở một công ty.Mình nhận thấy một điều rằng bây lâu nay mình đã quá chú trọng vào ngôn ngữ mà quên đi thuật toán,tư duy logic..Ở đó ,người ta ko yêu cầu mình phải giỏi ngôn ngữ này kia,người ta yêu càu mình phải giải quyết được vấn đề đưa ra,cụ thể là thuật toán..Mình đã được hoc và tiếp xúc với rất nhiều môn học ở trường đại học…Tuy nhiên mình không đào sâu,không rèn luyện nhiều nên kiến thức không vững cho lắm..Mình không biết bây giờ các trang web tập trung vào dạy về ngôn ngữ ,có trang nào dạy cho mình về tư duy thuật toán không?

    • Bạn không cần phải học thuật toán chỉ để đi phỏng vấn. Hãy học thuật toán từ những công ty đã phỏng vấn bạn, và áp dụng nó vào các công ty tiếp theo. Như vậy bạn sẽ không mất thời gian để vượt qua bài phỏng vấn, cái mà chỉ chiếm 1% thời gian đi làm của bạn. Nếu bạn vẫn muốn học riêng thuật toán cho nó chính quy trước khi đi phỏng vấn? Hãy dành thời gian đó (khoảng 1~2 tháng) để đi thực tập không lương cho một công ty nào đó thì hơn. Bạn sẽ học được cả ngôn ngữ, framework, các giải quyết vấn đề thực tế và các thuật toán nằm trong đó for free 😀

  5. e hiện là lập trình Android + Java .. khả năng của e là không thể tự mình viết code được nhưng e biết được chỉnh sửa copy thư viện, code demo và chỉnh sửa các lỗi .. fix lỗi .. thì e có thể đi làm được không ạ

Gửi phản hồ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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s