SOFTSKILL April 01, 2021

Văn hoá hỏi đáp trên StackOverflow

Số chữ 6.4k Thời gian đọc 6 mins.

StackOverFlow (SO) trong bài viết đề cập đến là một cộng đồng của các developer tại stackoverflow.com, mặc dù còn khá non trẻ khi ra đời vào khoảng 2008 nếu so sánh với các cộng đồng lớn mạnh khác, nhưng nó lại mang đến hiệu quả rất lớn cho hệ thống tri thức của dev, không khác gì wikipedia hay google.


Trước khi SO phổ biến, tôi thường hay đi qua codeproject, msdn, nhưng để lại ký ức trong đầu chả có gì ngoài đặt câu hỏi và giải thích rườm rà, code block thì í ẹ. Cộng đồng SO, dần dần tự cấu thành các quy chuẩn chung trong việc hỏi-đáp, không những giúp giải quyết code lẹ hơn, mà còn giúp cải thiện mindset cách người đặt câu hỏi và người trả lời. Đặt một câu hỏi gọn, lẹ, đơn giản, nghĩa là đã giải quyết được 50% vấn đề rồi.

Mục tiêu của SO, chính là xây dựng một thư viện tri thức đồ sộ, mà nơi đó các developer có thể tìm được câu trả lời tiết kiệm thời gian nhất có thể. Do đó, đừng nên hiểu sai rằng SO là dịch vụ hỏi đáp, bởi SO chưa thu phí người dùng bao giờ. Nhiều developer còn ví von rằng, thà Google bị sập, còn hơn là StackOverflow bị sập.

Người hỏi nên tránh những gì?

Có một sự thật hiển nhiên rằng nếu bạn không hiểu vấn đề của bạn, thì không ai sẽ chịu hiểu vấn đề của bạn cả. Một câu hỏi cộc lốc, trống không, không đầu không đuôi thì cũng sẽ không nhận được quan tâm, tất nhiên càng không nhận được câu trả lời thoả đáng. Tôi gần đây để ý thấy có nhiều cộng đồng Việt dành riêng cho dev cũng xuất hiện nhiều, nhưng tôi cũng thấy câu chuyện y như SO, khi mà các newbie chưa có điểm tín dụng (reputation), thường không biết cách đặt câu hỏi, luôn bắt đầu bằng những câu ít tinh thần xây dựng

  • Anh ơi, cứu em
  • Giúp này với
  • Nó đang bị gì vậy?
  • Giải bài tập với -> Trang hỏi đáp chứ đâu phải dịch vụ giải bài tập đâu :(
  • Mình muốn làm này và này thì phải sao ạ -> Thiếu sự đầu tư vào search google và phạm vi quá rộng để trở thành một câu hỏi tập trung

Sau đó sẽ đi kèm với:

  • Chụp màn hình đầy code -> Bạn bắt người trả lời phải căng con mắt ra xem project của bạn
  • Chụp màn hình chứa lỗi -> Có lỗi xảy ra thì ngoại trừ trường hợp cần trực quan, còn lại chỉ cần message là đủ, dòng message chỉ nơi xảy ra lỗi nó rất đáng giá.
  • Chụp màn hình bằng điện thoại -> Bạn huỷ diệt sự kiên nhẫn của người trả lời
  • Post wall of code -> Bạn bắt người trả lời phải đi vào chùm logic ngớ ngẩn của bạn, tất nhiên họ không buồn tìm hiểu. Ít nhất phải có sự tối giản hoá code (minimal and reproducible example) để người trả lời có thể reproduce lại nhanh nhất có thể
  • Hỏi nhiều câu hỏi cùng một lúc
  • Hỏi lan man, không tập trung câu hỏi
  • Hỏi dịch vụ này dịch vụ kia tốt không -> Điều này sẽ tạo cơ hội cho seeder vào feed

Tôi thấy cộng đồng VN tương đối dễ tính với những trường hợp như vậy, vì đa số toàn fresher, không chịu khó đọc tiếng anh, không rõ keyword hoặc thuật ngữ nào đó. Trên SO, nếu họ không thấy mọi sự nỗ lực giải quyết vấn đề của bạn, chắc chắn bạn sẽ ăn downvote đến nỗi bị xoá đi :)

Vai trò của người trả lời?

Người trả lời, có thể xem như cứu tinh của vấn đề, thậm chí có thể lên ngôi đền huyền thoại chỉ vì một câu hỏi được trả lời từ thuở sơ khai của SO. Người trả lời không trả lời những câu vô nghĩa, hoặc chỉ mang tính bình luậnkhông chắc chắn:

  • Bạn thử này xem được không
  • Bạn có biết suy nghĩ của bạn bla bla bla không
  • Đưa link, hoặc wall of code rồi chạy đi không một lời giải thích
  • Thay vì đưa ra giải pháp tối ưu, chí ít thì cũng thể đưa ra một giải pháp đi vòng (workaround), chứ không chọn giải pháp tiêu cực: VD Windows tôi bị lỗi driver, tôi hỏi driver phù hợp -> Câu trả nhận được là tôi hãy Cài lại Windows đi !?. Đây là câu chuyện xảy ra trên vn-zoom hồi khoảng 2008 mà tôi tham gia, post nào cũng nhại lại câu này mãi, gây ức chế người hỏi lẫn người đọc khi đang search tìm.
  • Nếu quá lớn, hoặc quá chuyên sâu, bạn cũng có thể đưa ý tưởng, tuy nhiên không nên lạm dụng vì sẽ rất dễ bị confuse giữa bình luận và trả lời, tuỳ tính chất, nhưng cộng đồng SO sẽ không quá khắt khe, miễn nó có lập luận hợp lý.

Hỏi đáp văn hoá, chuyên nghiệp

Trên SO, có một thứ khá thú vị, đó là nếu bạn đạt được điểm tín dụng cao, bạn sẽ unlock được các quyền hạn đặc biệt

Bạn sẽ có nhiều quyền unlock như upvote, comment, edit bài viết, review bài vote của newbie để đánh giá có phù hợp hay không. Điểm tín dụng cao không phải chỉ ở người trả lời mà còn ở người hỏi, cách nỗ lực giải quyết vấn đề, các câu hỏi hay.

Tựu trung lại, cộng đồng SO sẽ thích template như sau:

Chào mọi người,..
Mình đang bị vấn đề này…
Mình cố gắng như này, nhưng chỉ ra cái nọ
Mình nghi vấn này…, mình cũng có thí nghiệm thêm vài case khác để củng cố giả thuyết
Thêm hình/video nếu có (Không phải hình crash, vì message đã có đủ thông tin hình crash, chỉ cần hình mô tả trực quan về UI)
Code đã được minimal và reproducible
Môi trường đi kèm (.NET Core 3.0, Windows 10 Build xxxx,…)
Cám ơn
Gắn tag phù hợp (vd C#, Python, Azure Function, SQL,…)

Ở đây ắt sẽ có câu hỏi đặt ra là nếu đã có minimal example rồi thì cần gì phải hỏi? Thực tế, việc bạn minize program rồi thì sẽ có hơn 70% khả năng bạn đã tự giải đáp vấn đề, do đó, không còn cách nào khác bạn phải tự trang bị kỹ năng debug, kỹ năng lập luận, suy luận và đặt nghi vấn, thậm chí là tạo một project khác để test nó luôn
nếu muốn tăng kiến thức.

Nếu bạn biết đặt câu hỏi đúng, sẽ có khả năng lớn chính developer của project đó đứng ra giải quyết giúp bạn, tôi có vài lần may mắn được các bác trong dự án Google Map, Microsoft Azure Function giúp giải quyết vấn đề, quá tuyệt vời luôn :)


Bài viết trước:
0%