Tự học lập trình - Hỏi làm sao để được trả lời?
Vấn đề này thì không hề mới rồi. Bài viết về vấn đề này thì lại càng nhiều nữa. Mình cũng không đưa ra lời khuyên hay gì hết, chỉ copy lại một đoạn liên quan tới vấn đề này trong cuốn The Pragmatic Programmer rồi bình loạn thêm tí xíu cho mọi người dễ tham khảo thôi nhá :D
Care and Cultivation of Gurus
With the global adoption of the Internet, gurus suddenly are as close as your Enter key. So, how do you find one, and how do you get one to talk with you? We find there are some simple tricks. - Know exactly what you want to ask, and be as specific as you can be.
- Frame your question carefully and politely. Remember that you're asking a favor; don't seem to be demanding an answer.
- Once you've framed your questioned, stop and look again for the answer. Pick out some keywords and search the web. Look for appropriate FAQs (lists of frequently asked questions with answers).
- Decide if you want to ask publicly or privately. Usenet news-groups are wonderful meeting places for experts on just about any topic, but some people are wary of these groups' public nature. Alternatively, you can always e-mail your guru directly. Either way, use a meaningful subject line. (" Need Help!!! " doesn't cut it.)
- Sit back and be patient. People are busy, and it may take days to get a specific answer. Finally, please be sure to thank anyone who responds you. And if you see people asking questions you can answer, play your part and participate.
Bình loạn
Đại khái thì trích đoạn trên nói là, với tính toàn cầu của Internet ngày nay, thì các guru (các chuyên gia trong lĩnh vực nào đó) trở nên rất gần với bạn. Có lẽ các bạn nào mới học lập trình gần đây không thấm lắm chuyện này, nhưng những ai học lập trình từ thời 99-2002 trở về trước thì sẽ hiểu, chuyện lên Internet đã là cực kì khó, sách báo, tạp chí về CNTT thì không nhiều như bây giờ, có những lúc thắc mắc không biết hỏi ai chỉ biết vò đầu bứt tai. Việc tiếp cận những người giỏi, nổi tiếng trong lĩnh vực này thì cực kì khó vì không có phương tiện để liên lạc, huống hồ là chỉ biết đến qua cái tên trên internet. Còn thế hệ các anh các chú làm CNTT từ trước đó nữa thì không biết họ học như thế nào, mình thực sự rất là phục những người này.
Quay lại bài viết, vì những bác guru thì thường cũng rất nhiệt tình và muốn giúp đỡ người khác, nhưng đa phần các câu hỏi mà các bạn mới học đang hỏi trên mạng hiện này không được ai quan tâm đến, thậm chí hỏi xong có người còn bay vào chửi xối xả xong bỏ đi mà chủ nhân câu hỏi còn không biết tại sao mình bị chửi nữa ? đoạn trích trên chỉ ra một số trick để hỏi làm sao cho những bác guru này đọc vào là thấy hứng thú trả lời ngay:
Know exactly what you want to ask, and be as specific as you can be.
Đầu tiên, phải biết rõ bạn muốn hỏi cái gì, và hỏi thật chi tiết, cặn kẽ.
Chẳng ai có thể trả lời một câu hỏi không đầu không cuối, không trách nhiệm kiểu như:
"Có ai làm login Facebook trong Rails rồi cho em hỏi với ạ?"
==> Bạn muốn hỏi vấn đề gì về login Facebook trong Rails?
Game Tic Tac Toe? / Hỏi về Rails? / Hỏi về Unicode / Mọi người giúp mình với / Hỏi về 1 đoạn HTML + CSS / ...
==> Bạn đang hỏi đấy à?
Xin source/bài tập lớn môn xxxx
==> ?
Ai giúp em giải bài tập môn Phân tích thiết kế giải thuật này với ạ?
==> ?
Frame your question carefully and politely. Remember that you're asking a favor; don't seem to be demanding an answer.
Bạn cần phải khoanh vùng câu hỏi một cách rõ ràng, không nên hỏi lan man, hỏi trực tiếp vào vấn đề bạn đang gặp, trình bày câu hỏi một cách rõ ràng, mạch lạc, cung cấp đầy đủ thông tin vào bên trong câu hỏi, ví dụ gặp code thì phải cho vào thẻ code cho nó có màu, copy error log thì nên đọc xem đoạn nào chính xác là error log, đừng copy toàn bộ file log lên làm gì, nếu hỏi nhiều vấn đề cùng một lúc thì nên ghi hết ra, mỗi câu hỏi trên một dòng, có đánh số đầy đủ, một bài hỏi cẩu thả không format, câu cú lủng củng thì cũng chẳng có ai thèm đọc để trả lời cả.
Và quan trọng nhất là phải hỏi một cách thật lịch sự, nhã nhặn. Bạn không biết người nào sẽ đọc câu hỏi của bạn, và người đọc câu hỏi cũng sẽ không biết bạn là ai. Nên tốt nhất là phải thật lịch sự, có phần lễ độ, nếu lười gõ nhiều chữ thì không nên đi hỏi. Vì bạn đang đi nhờ sự giúp đỡ của người khác, họ có giúp hay không thì tùy vô thái độ của bạn nữa, người ta không có bổn phận phải trả lời câu hỏi của bạn đâu, nên đừng làm họ phật ý khi đọc câu hỏi.
Once you've framed your questioned, stop and look again for the answer. Pick out some keywords and search the web. Look for appropriate FAQs (lists of frequently asked questions with answers).
Một khi bạn đã khoanh vùng được vấn đề cần hỏi, thì từ từ rồi hãy hỏi, đầu tiên hãy đọc kĩ lại các tài liệu, tra cứu google về nội dung bạn muốn hỏi. Chọn một vài từ khóa trong vấn đề bạn thắc mắc để search.
Ví dụ bạn đang làm bài tập về nhà, thầy giáo yêu cầu viết bài tập tô màu hình chữ nhật bằng C, hãy search Google bằng từ khóa: "thuật toán tô màu", "tô màu hình chữ nhật", nếu biết tiếng Anh, có thể dịch cái yêu cầu đó ra tiếng anh và search: "rectangle coloring algorithm",... bạn không cần phải biện hộ lý do "không biết từ khóa", vì như đã thấy ở ví dụ kia mình chỉ đơn giản là copy luôn cái đề bài là "tô màu hình chữ nhật" và search nó luôn, Google sẽ tự động suggest cho chúng ta biết rằng chúng ta đang tìm về thuật toán scanline, hay đang tìm hiểu về vấn đề rectangle covering, bằng cách này bạn đã tìm ra đc từ khóa chính xác cho vấn đề đang gặp.
Ví dụ trên cũng là ví dụ cho việc:
Làm bài tập trước khi hỏi, tránh hỏi ngu vì ...lười (https://github.com/ruby-vietnam/docs/blob/master/chat_room_law.md)
Decide if you want to ask publicly or privately. Usenet news-groups are wonderful meeting places for experts on just about any topic, but some people are wary of these groups' public nature. Alternatively, you can always e-mail your guru directly. Either way, use a meaningful subject line. (" Need Help!!! " doesn't cut it.)
Quyết định xem nên hỏi ở chốn công cộng (chat room, diễn đàn,...) hay hỏi riêng (PM, chat riêng, email,...) Dù là cách nào thì đầu tiên bạn cần phải chuẩn bị câu hỏi một cách kĩ càng, đặt tiêu đề email hay tiêu đề topic một cách "có nghĩa", đầy đủ, tóm tắt được câu hỏi, những tiêu đề kiểu "Giúp em với", "Cứu em với", "Hỏi về xxxx" chỉ càng giúp cho người ta bỏ qua email/topic của bạn nhanh hơn mà thôi.
Sit back and be patient. People are busy, and it may take days to get a specific answer.
Sau khi đã đặt xong câu hỏi thì ngồi yên đó, tiếp tục tra cứu Google và chờ người ta vào đọc rồi trả lời. Ở nhiều diễn đàn hay có những bạn hỏi xong chờ mãi ko thấy ai trả lời, lại bức xúc reply thêm 1 câu: "Sao cả chục người vào đọc mà không ai trả lời" ?
Ai cũng bận rộn cả, họ phải tranh thủ chút thời gian rảnh để tranh thủ lên mạng giúp bạn, thì bạn nên tôn trọng họ, không thúc ép, không hỏi dai hỏi lì, việc trình bày câu hỏi cho "đẹp" cũng là một cách để tôn trọng thời gian của người khác. Nếu được hỏi một cách nhã nhặn, lịch sự thì người ta cũng sẽ trả lời bạn một cách lịch sự lại thôi :D
Hy vọng bài viết này sẽ giúp các bạn mới học hiểu được tại sao mình hỏi mà không ai trả lời, và biết cách hỏi làm sao để người khác vui vẻ trả lời. Chúc các bạn may mắn :D