Lompat ke konten
Kembali ke modul

Merilis, dan Bekerja Sebagai Developer · 6/8

Bertanya dengan cara yang dijawab

Apa yang sudah dicoba, apa yang diharapkan, apa yang terjadi. Format yang menghargai waktu semua orang.

Baca 18 menit

Setelah pelajaran ini kamu bisa

  • Menentukan kapan harus bertanya alih-alih terus sendiri
  • Menulis pertanyaan yang terjawab di balasan pertama
  • Menunjukkan usahamu tanpa menulis esai
  • Bertanya dengan cara yang juga membantu orang berikutnya

Dua kegagalan yang sama-sama umum di pekerjaan pertama: bertanya sebelum mencoba apa pun, dan bertahan mentok sehari karena takut terlihat tidak mampu. Yang kedua jauh lebih mahal, dan itulah yang biasanya dipilih developer junior.

Coba sendiri

Hitungan dari bertahan mentok. Bertanyalah di titik saat waktumu sendiri berhenti jadi pilihan yang lebih murah.

Hasil

Tekan Jalankan untuk melihat hasilnya.

Ini jalan di browser kamu, di dalam sandbox. Apa pun yang kamu tulis di sini tidak bisa merusak situs.

Bentuk pertanyaan yang baik

text
❌ "hey, the login isn't working, any idea?"

❌ "Can I ask you something?"          <- ask the question; do not ask to ask

✅ Sign-in fails on my branch with "UNIQUE constraint failed: users.name_key",
   but only for names that already exist in a different case ("Ana" vs "ana").

   What I expected: createUser returns undefined and the form shows "nameTaken".
   What happens:    the constraint error escapes and the action returns a 500.

   What I have tried:
     - confirmed name_key is lowercased before the insert (features/auth/users.ts:38)
     - the pre-check with findUserByName does return undefined, so it falls through
     - reproduced with: bun run test flow -t "taken name"

   My guess: the try/catch around the INSERT catches the error but the
   pre-check ran against a stale connection. Not sure that is possible.

   Am I missing something about how the constraint and the pre-check interact?
Enam baris konteks mengubah "ada ide?" jadi pertanyaan yang bisa dijawab seseorang dalam satu balasan, tanpa bolak-balik untuk memastikan hal-hal dasarnya.
  • Apa yang sedang kamu coba lakukan. Tujuannya, bukan cuma error-nya.
  • Apa yang kamu harapkan, dan apa yang terjadi. Pesan tepatnya, disalin, jangan diparafrase.
  • Apa yang sudah kamu coba. Bagian inilah yang mendatangkan rasa hormat, dan mencegah saran yang sudah kamu singkirkan.
  • Dugaan terbaikmu. Bahkan yang salah pun menunjukkan cara kamu berpikir, dan jauh lebih mudah mengoreksi sebuah dugaan daripada mulai dari nol.
  • Cara mereproduksinya. Sebuah perintah, URL, atau nama branch.
  • Satu pertanyaan spesifik di akhir. Bukan "ada ide?".

Setelah kamu mendapat jawabannya

  • Sebutkan apa jawabannya, di utas yang sama. Orang berikutnya yang mencari akan menemukan penyelesaiannya, bukan cuma pertanyaannya.
  • Tuliskan kalau tidak jelas — sebuah komentar di kode, atau satu baris di README.
  • Tambahkan test kalau itu sebuah bug. Dengan begitu jawabannya ditegakkan, bukan cuma diingat.
  • Jangan minta maaf karena bertanya. Kamu bertanya dengan baik; itu artinya pekerjaannya berjalan sebagaimana mestinya.

Tugas praktik

Tulis lengkap sebuah pertanyaan tentang hal di proyek ini yang belum sepenuhnya kamu pahami — memakai bentuk enam bagian di atas. Jangan kirim. Lalu baca ulang dan lihat apakah kamu bisa menjawabnya sendiri sekarang. Kalau bisa, kamu baru saja melihat kenapa formatnya berhasil.

Hasil yang diharapkan

Sering kali, sebuah jawaban yang kamu temukan saat menulis pertanyaannya.