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

"Như mọi kỹ sư và lập trình viên, chúng trả giá cho thất bại, ... tại cùng thời điểm, chúng ta luôn luôn ở trong trường học. Chúng ta luôn luôn học hỏi."

Carlos Lazos, Phần 1 của CodeNewbie Podcast

Coding là một cuộc hành trình đi vào sự mơ hồ.

Cho dù bạn đang thiết kế một RESTful API, mở rộng một ứng dụng cho hàng ngàn người dùng, hoặc chỉ cố gắng đặt đúng vị trí một số thứ với CSS, luôn luôn có những thứ bạn không biết.

Lần tới nếu bạn bị mắc kẹt và không biết cách nào để giải quyết vấn đề, hãy thử sử dụng phương thức "Đọc - Tìm kiếm - Hỏi" của Free Code Camp. Như tên gọi nó có nghĩa là:

  1. read là đọc tài liệu hoặc lỗi
  2. tìm kiếm Google
  3. hỏi - không ngại hỏi và yêu cầu được giúp đỡ!

Hãy đi sâu vào mỗi phần.

Đọc

Nếu bạn biết mình cần sử dụng một phương thức cụ thể, nhưng không biết cách để thực hiện nó, tài liệu hướng dẫn là một nơi tuyệt vời để bắt đầu. Nếu bạn không chắc về phương thức mình cần, bạn thường khám phá ra giải pháp chỉ với một vài cái click trong tài liệu hướng dẫn.

Nếu bạn nhận được các lỗi, hãy đọc lỗi! Cố gắng tìm ra cái nó đang cố nói. Nếu không có lỗi, nhưng bạn không biết cái gì đang thực sự xảy ra, bạn có thể thử debug thông qua phương thức console.log().

Khi tôi xây dựng các ứng dụng Free Code Camp của mình và không nhận được kết quả mong muốn, tôi sẽ log ra màn hình kết quả của tất cả mọi thứ: các câu lệnh if, các câu lệnh return của function, các phương thức click, và các phương thức tính giờ.

Một trong những công cụ hữu ích cho điều này là console của trình duyệt. Nếu bạn đang làm việc với CodePen, nó cũng có một console.

Nếu bạn theo dõi các blog về một chủ đề cụ thể (VD: CSS Tricks là một trong những nơi tôi thường tham khảo về CSS), hãy vào các blog đó và xem nếu có các bài viết giải thích các khái niệm bạn đang mắc kẹt.

Nếu vẫn bị mắc kẹt, đây là lúc bạn chuyển tới Google.

Tìm kiếm

Google sẽ nhanh chóng trở thành người bạn tốt nhất của bạn, nếu chưa phải như vậy. Nhưng Google thỉnh thoảng có thể trở thành một người bạn phiền toái, bạn cần chọn lọc tỉ mỉ và cẩn thận để tìm ra câu trả lời hữu ích. Để tận dụng tối đa tình bạn này, có một vài thứ bạn cần nhớ.

Một trong số đó là phần lớn thời gian - đặc biệt khi bạn bắt đầu xây dựng ứng dụng - bạn không nhận được chính xác câu trả lời bạn cần để giải quyết tất cả vấn đề của mình. Bạn sẽ thường phải học, sau đó áp dụng cái đã học được vào tình huống hiện tại.

Phải cụ thể, và ngắn ngọn

Một thứ cần nhớ là cách cấu trúc từ khóa tìm kiếm của bạn vì nó ảnh hưởng tới hiệu quả của việc tìm kiếm.

Ví dụ, cố gắng thay thế một ký tự tại một vị trí cụ thể trong một chuỗi là vấn đề mà phần lớn các coder mới đều gặp phải. Để giải quyết vấn đề này, bạn có thể Google với những thứ như sau:

"I want to change a thing in a string" (Tôi muốn thay đổi một thứ trong một chuỗi) và kết quả như sau:

Bạn sẽ nhận được mọi thứ từ các chuỗi con(substring) tới R hoặc "10 cách tuyệt vời để nhận được nhiều hơn từ tìm kiếm và thay thế từ"(10 cool ways to get more from Word's Find and Replace). Nó không chính xác là cái chúng ta đang tìm kiếm.

Khi Googling - đặc biệt là các vấn đề về lập trình - quy ước mà các lập trình viên thường áp dụng là:

[ngôn ngữ lập trình] [động từ] [các từ khóa]

Hãy thử áp dụng vào vấn đề của chúng ta. Nếu chúng ta nhập "javascript replace character in string" (javascript thay thế ký tự trong chuỗi), chúng ta sẽ có kết quả:

Kết quả này gần hơn với cái chúng ta đang tìm kiếm!

Tôi sẽ click một vài kết quả đầu tiên để xem chúng có hữu ích hay không. Nếu không, tôi sẽ thử thêm một vài từ khóa bổ sung.

Vì trong ví dụ này, chúng ta chỉ muốn thay thế một ký tự tại một vị trí cụ thể, chúng ta không cần các biểu thức chính quy (regular expression).

Kết quả tìm kiếm thứ 4 là "Làm thế nào tôi thay thế một ký tự tại một vị trí cụ thể trong JavaScript", tôi sẽ click vào nó, sau đó tôi biết rằng các chuỗi là bất biến và tôi không thể thay đổi chỉ một ký tự.

Nếu vẫn có thắc mắc, tôi có thể thêm "at an index" (tại một chỉ số) vào từ khóa cần tìm kiếm và thử lại.

Stack Overflow

Các kết quả trên Stack Overflow có thể là một phần trong kết quả tìm kiếm của Google. Nó là một nguồn tài nguyên tuyệt vời có các câu trả lời cho rất nhiều câu hỏi lập trình. Thông thường, người hỏi sẽ chọn câu trả lời tốt nhất đối với họ, và và sau đó câu trả lời sẽ xuất hiện phía trên cùng của các kết quả với một dấu tick màu xanh lá cây.

Cái tôi luôn làm là lướt qua tất cả các câu trả lời, bao gồm cả các bình luận. Thỉnh thoảng có một số thảo luận thú vị, và lúc khác có một số người đã nói thẳng: "điều này sai" hoặc "đây là một bad practice".

Khi tôi biết các lựa chọn của mình, ưu và nhược điểm của chúng, tôi sẽ thử thực hiện chúng.

(Đừng ngại) hỏi

Khi bạn đã tìm kiếm với tất cả các cách mà vẫn chưa giải quyết được vấn đề, đây có thể là lúc bạn cần hỏi một người thực sự.

Người bạn hỏi có thể là:

  • bạn bè của bạn (nếu họ là coder)
  • nhóm lập trình (nếu bạn có tham gia)
  • các thành viên trên các kênh Free Code Camp Gitter và diễn đàn
  • các nhóm Slack và Facebook về lập trình mà bạn là thành viên

Trước khi hỏi, bạn nên chuẩn bị câu hỏi để tiết kiệm thời gian cho chính bạn và người được hỏi.

"Ứng dụng của tôi không chạy, tôi nên làm gì?" hoặc "Tôi không thể làm cho tính năng này chạy được, tôi nên làm gì?" là những câu hỏi không hữu ích.

Hiểu vấn đề bạn gặp phải. Giải thích cái bạn mong muốn code của bạn làm, sau đó so sánh với kết quả. Giải thích cái bạn cố gắng giải quyết, và bao gồm các đoạn code nếu bạn nghĩ chúng sẽ giúp ích. (Trong hầu hết các trường hợp, chúng sẽ có ích).

Khi tôi bắt đầu học, tôi ngại đưa ra các câu hỏi trong các diễn đàn hoặc chat room vì 2 lý do:

Đầu tiên là sự tự ái của tôi: tôi cảm thấy tôi có khả năng tìm ra lý do tại sao code của tôi lại làm việc như vậy. ("Tôi là một người thông minh và có khả năng. Tôi sẽ tìm ra nó").

Thứ hai là sự không thoải mái. Tôi lo lắng rằng mọi người sẽ không trả lời hoặc không ai muốn giúp tôi, hoặc cái họ giải thích vượt quá sự hiểu biết của tôi, hoặc tôi không muốn hỏi cho rõ và làm mất thời gian của mọi người hoặc ... (bạn có thêm những lý do khác ở đây).

Tôi có thể vui mừng nói rằng tôi đã đã sai trong tất cả các trường hợp tôi có thể nghĩ đến. Cộng đồng Free Code Camp gồm những người rất thân thiện, hiểu biết và kiên nhẫn.

Khi còn là thực tập sinh ở Techmaster mình cũng luôn luôn dễ dàng tìm được sự trợ giúp của tất cả mọi người từ giảng viên, các bạn trợ giảng và chính những bạn thực tập sinh như mình.

Khi một ai đó dành một vài giờ với tôi trong khi tôi đang cố để hiểu một khái niệm và tìm ra một bug. Anh ấy luôn kiên nhẫn với tất cả.

Chưa bao giờ có một ai nói hoặc nghĩ tôi ngu ngốc và không có khả năng. Chưa bao giờ có ai đó không trả lời các câu hỏi của tôi, mặc dù chúng có thể rất đơn giản.

Nếu ai đó trả lời các câu hỏi trên diễn đàn hoặc chat room, họ đang làm một điều thật đặc biệt bởi vì họ muốn giúp người khác!

Như một phần thưởng, thỉnh thoảng đưa ra câu hỏi về vấn đề của bạn một cách rõ ràng cho phép bạn thấy cái sai. Nhiều lần khi tôi đưa ra một câu hỏi, ngay lập tức tôi nhận ra cái tôi cần làm tiếp theo. 

Tổng kết

Phương thức Đọc, Tìm kiếm, Hỏi là cách để tiết kiệm thời gian của bạn và thời gian của mọi người, những người giúp bạn. Nó khuyên bạn học và tìm kiếm các giải pháp cho vấn đề trước khi tìm kiếm sự trợ giúp từ người khác. Nếu bạn đã cố gắng và vẫn chưa giải quyết được vấn đề, đừng ngại hỏi.