Walang Sumasagot sa Tanong Ko—Paano Makakuha ng Sagot Kapag May Problema ka sa Programming
Sabi nga nila, there are no stupid questions.
Pero may tamang paraan ng pagtatanong at paghingi ng tulong kapag nagkaroon ka ng problema sa programming.
Naranasan mo na bang mag-post sa mga Facebook groups, o sa mga programming forums gaya ng StackOverflow, pero walang sumasagot? Dina-downvote ang tanong mo? O baka naman napuno ng Haha reacts ang post mo, at puro “uso mag-Google” at “search-search din bes” ang nasa comments? Hindi ikaw ang problema; ang tanong mo.
Kung isa kang bagúhan sa larangan ng programming, marami kang dapat tandaan kapag nagtatanong. Sa mga programming forums at discussion groups, paulit-ulit nang nakikita ng mga mas marurunong ang mga tanong na palaging itinatanong ng mga bagúhang programmer. Kaya kadalasan nang hindi ito pinapansin o tino-troll na lang din minsan. Oo, hindi magandang ginagawa nila ito, pero hindi mo rin sila masisisi dahil paulit-ulit na lumilitaw ang iyon at iyon ding mga tanong. Sa article na ito, pag-usapan natin kung paano mo mai-improve ang paraan mo ng pagtatanong para makakuha ng mas malaking tsansa na may sumagot sa tanong mo.
(Ang artikulong ito ay adaptation ng artikulong How to Ask Questions the Smart Way ni Eric Steven Raymond)
“Bakit Gano’n ang Ugali ng mga Master sa Programming?”
Una sa lahat, gusto ng mga “master” sa programming ang mga tanong, lalo na iyong napapag-isip sila, nacha-challenge sila. Para sa kanila, magagandang regalo ang mga magagandang tanong. Dahil kasi sa mga ganitong klase ng tanong nakikita nila iyong mga bagay na hindi nila napansin no’ng una o hindi nila naisip na puwede pala.
Pero gaya siguro ng makikita mo (personally, nakikita ko rin ‘to nang madalas), hindi sila mahilig sa mga simpleng tanong. May times na nagtutunog mayabang sila, walang galang sa mga newbie. Pero hindi ito totoo. Although hindi ako sang-ayon sa ginagawa nilang ito, naiintindihan ko kung bakit nila ‘to ginagawa. Hindi sila galit sa mga taong maraming tanong kundi sa mga taong parang hindi nag-iisip bago magtanong. Kapag mababaw ang tanong mo, kumukuha ka nang walang binibigay; nasagot na nila dati ang tanong mo, kaya wala na silang matututunang bago kapag sinagot ka nila ulit.
Isa pa hindi sila mga bayád na tao na sasagot sa kahit anong tanong. Mga boluntaryo silang gustong tumulong sa mga natututo pa lang. Pero dahil sa mga tanong na—pasensya sa word na ginamit—walang kuwenta, nawawalan sila ng gana dahil pinapakita nating wala tayong kakayahang maghanap muna ng sagot sa sarili lang natin (dahil iyon ang kailangan mong gawin kapag master programmer ka na rin at wala nang ibang makakasagot sa mga tanong mo kundi ang hanapin ang sagot nang ikaw lang).
Bago ka magtanong…
Bago ka magtanong sa mga forum o group discussions, gawin mo muna ito:
- Subukang humanap ng tanong na kapareho ng sa iyo sa forum. Gamitin ang search function (meron nito ang StackOverflow, at ang Programmers, Developers Facebook Group kung kasali ka ro’n.)
- Mag-search sa Google (or sa DuckDuckGo). Ito rin naman sasabihin nila sa iyo kapag nagtanong ka na, so gawin mo na agad.
- RTFM. Basahin muna ang manual, or documentation, ng language or framework na ginagamit mo. May search function na rin iyan, dahil kadalasan, nandoon ang sagot sa tanong mo.
- Sa mga group o forums, kadalasan nang mayro’n silang FAQ section. Bago mo itanong ang tanong mo, tingnan mo muna iyon dahil baka nandoon ang tanong mo.
- Siyempre, bago ka humingi ng tulong sa iba, subukan mo munang kalkalin ang problema mo. Kadalasan nang mas marami kang matututunan kapag nag-experiment ka sa program mo bago ka nagtanong. Subukang palitan ang values ng mga variables, gumamit ng ibang construct, palitan ang mga datatypes etc.
- Puwede bang ‘wag ka nang mag-post ng tanong, sa kaibigan mo na lang? Baka kaya nilang sagutin ang tanong mo.
- Basahin ang source code kung may access ka rito. Magandang practice din ‘to (although ako hindi ko ‘to ginagawa kasi kadalasan, hindi naman masyadong malala ang problema ko.)
Kapag nagtanong ka na, siguraduhing binanggit mo na ginawa mo na itong mga ‘to. Maipapakita mo na hindi ka tamad, at na ginawan mo ng paraan ang problema mo. Commended ka sa mga master programmer kapag ganiyan.
Ihanda mo rin ang tanong mo. Ayusin mo ang wording para maging mas malinaw sa unang basa pa lang kung ano ang problema mo. Pagsikapan mo ring huwag magtunog minadali ang tanong mo (kulang sa detalye, j3j3M0n n@ pr@nq n@qttxt, etc.)
Isa pa, huwag na huwag mong isiping entitled ka na sagutin nang iba, na para bang karapatan mong makakuha ng sagot at utang na loob sa iyo ng mga programmer na nagtanong ka. Hindi ka entitled. Hindi ka nagbayad para sa sagot. Lahat ng makukuha mo ay kawanggawa. Ikaw ang may utang na loob sa kanila. Repeat for three times.
Huwag ding magtanong na gaya ng Pahingi po ng source code
o kaya Paano po iyong step-by-step na gagawin?
Malaking kasalanan iyan, kahit dugo ng panganay na tupa o manok na natalo sa sabong hindi iyan kayang bayaran. Ang mga tanong na dapat tinatanong mo ay kagaya ng Ano po kayang nakalimutan ko rito?
Saan po puwedeng makakuha ng mas detailed na explanation?
Ganito ang in-expect kong result, ano ang mali sa expectation ko?
Mas maganda ‘to kasi pinapakita mong willing kang i-solve ang problem mo at hindi magpa-spoonfeed lang.
Kapag magtatanong ka na…
Piliin ang tamang forum na pagtatanungan
‘Wag kang magtatanong ng tungkol sa JavaScript sa isang group na tungkol sa Web design. ‘Wag ka ring magtatanong kung paano mag-install ng Linux sa isang forum ng mga job postings at mga company na naghahanap ng applicants. ‘Wag ka ring basta mag-chat o mag-PM sa kung sino ang makita mong nagko-comment ng sagot sa mga group. Hindi sila entitled na sagutin ka, at hindi kayo close.
Kapag sasali ka sa isang forum o group, tingnan ang FAQs, o charter para malaman kung tungkol saan ang group. Magbasa ka rin muna ng mga post para alam mo kung ano ang culture ng group o forum na iyon at masiguro mo na iyon ang tamang lugar para magtanong.
Gumamit ng maayos na headers
Sa mga forums na gaya ng StackOverflow at Reddit, kailangan mong mag-provide ng title. Sa Facebook groups wala nito, pero puwede mong i-consider na header ang unang sentence ng post mo. Sa paggawa ng title o header sa tanong, tandaan na walang pakialam ang mga taong babasa kung ilang oras o araw ka nang na-stuck sa problema mo o kung gaano ka kairita sa mga nangyayari sa buhay mo; alam na nila iyan, nararanasan nila iyan. ‘Wag lagyan ang post ng PLEASE HELP!
o kaya Puwede pong magtanong?
Sayang sa space iyan, at mas mataas ang chance na hindi babasahin iyan.
Mas maganda kung susundin mo ang convention o pattern na “object - problem”. Una, i-state kung anong bagay ang may problema (object). Puwedeng programming language ito, or framework na ginagamit mo, o IDE, API, o kahit ano na ginagamit mo na nagkaproblema ka. Pagkatapos, sabihin kung ano ang problema mo doon. Halimbawa:
HUWAG GANITO: Patulong po! Ilang araw ko na ‘tong ginagawa ayaw pa rin. Ayaw gumana ng database ko.
GANITO DAPAT: Sa Visual Basic .NET po, hindi pumapasok sa database iyong data. Visual Studio 2012 po gamit ko saka MS Access.
MAS MAGANDA: Sa Visual Basic .NET po using Visual Studio 2012 saka MS Access, hindi pumapasok sa database iyong data na na-insert ko.
Ang maganda rito sa ganitong pattern, napipilitan kang mag-isip kung saan galing ang problema. Visual Basic .NET ba ang problema o iyong IDE mo? Baka naman iyong database na gamit mo?
Padaliin mo ang proseso ng pagre-reply
‘Wag mong tapusin ang post mo (‘wag mo ring lagyan sa kahit saan) ng ganitong line: Pa-PM po sa akin ng sagot. Thanks.
Walang sasagot niyan promise.
Ayusin ang grammar at spelling, gawing malinaw ang tanong
Aminin natin iyan, hindi tayo lahat grammar nerds. Pero kahit kaunting effort sa pag-aayos ng spelling, pagre-restructure ng sentence para maging malinaw, malaking bagay na iyon para maging maayos at madaling basahin ang tanong mo. Isa pa, maiiwasan na mali ang pagkakaintindi ng iba sa tanong mo. Hindi ka nila bibigyan ng sagot sa ibang tanong. At mas malaki ang chance na may sasagot sa iyo dahil hindi ka mukhang noob kahit sa language na sinasalita mo (kung noob ka kahit sa language na sinasalita mo, gurl ayusin mo iyan, di maganda iyan).
Kung nataon namang nagkaroon ka ng lakas ng loob at tapang na magtanong sa mga foreign language forums gaya ng StackOverflow at Reddit, pero hindi ka gaanong magaling sa English, i-alert mo kaagad sila. I-mention sa post mo na hindi mo native tongue ang English at sabihin na hindi ka pamilyar sa mga slangs at idiomatic expressions na puwedeng gamitin ng mga sasagot sa iyo. Mag-sorry din kung may spelling at grammar errors (although hindi talaga katanggap-tanggap ang spelling errors; i-search mo at i-double check ang post mo).
Gawing accessible ang pagbibigay ng attachments
May mga times na kailangan nating mag-provide ng source code snippet. ‘Wag na ‘wag gagawin itong mga ‘to:
- Mag-paste ng code sa mismong Facebook post. Masakit iyan sa mata.
- Mag-include ng screenshot ng source code, pero literal na screenshot: talagang kinuhaan ng picture iyong mismong screen. Wala ring kapatawaran ‘to, hindi ‘to kayang bayaran ng income tax mo.
- Abusuhin ang mga emoji. In real life, hindi ka laging nakangisi habang nagtatanong. Ayos na iyong isa o dalawang emoji.
‘Wag gawin iyang mga iyan. Kung kailangan mong mag-send ng attachments ganito ang gawin mo:
- Kung kailangan mong magsama ng code snippet, ilagay ito sa PasteBin, Github Gists, o iba pang kapareho niyan. Pagkatapos iyong link ppapunta sa snippet mo doon ang i-link mo sa post.
- Puwede ring gumamit ng screenshot (mas accessible ‘to sa Facebook groups), pero utang na loob, gumamit ka ng snippet tool or kahit anong pang-screenshot. ‘Wag mong pictur-an ang screen. Natatakpan iyong code ng reflection mula sa ilaw n’yong fluorescent lamp.
- Kung mag-a-upload ka ng file, siguruhing maliit lang. At kuwestiyunin mo rin ang sarili mo kung kailangan mo talagang i-upload ang buong file, or files.
Maging precise at informative; magbigay ng details
- Ipaliwanag kung ano ang step-by-step na ginawa mo bago nagkaroon ng error.
- Sabihin kung ano ang environment na gamit mo: anong operating system, application, IDE, etc. Isama rin ang version ng mga ito.
- Banggitin ang mga research na ginawa mo, kung ano’ng nahanap mo sa Google at iba pang forums, anong mga experiments ang nagawa mo na bago ka nagtanong.
- Banggitin din kung anong mga recent changes sa computer mo ang nangyari. Anong mga applications na kaka-install mo lang ang posibleng naging dahilan ng error? Baka nag-update ka ng drivers? May binago ka sa settings?
- Mas maganda kung magpo-provide ka ng way para maulit ng iba ang problema mo sa mga computer nila.
Gawin mo ang lahat ng kaya mo para masagot ang mga posibleng itatanong sa iyo in advance. Saka sobrang laking tulong kapag nakapag-provide ka ng way para ma-replicate ng iba ang problema mo dahil ma-e-explore nila in detail ang problema mo.
‘Wag i-down ang sarili
Sorry po, newbie lang ako.
Kung may ganiyan ka sa post mo, tanggalin mo na iyan. Hindi iyan nakakatulong. Nakaka-distract iyan.
Sabihin kung ano’ng goal mo
Sabihin mo sa post kung ano ang gusto mong ma-achieve sa ginagawa mo. Pagkatapos saka mo sabihin kung saang part ka nagkaproblema.
Huwag mag-post ng assignment
Opo, may mga gumagawa nito. Lalo sa Facebook. Ayos lang humingi ng hints, pero ‘wag humingi ng sagot. Saka baka makita rin iyan ng professor mo.
Alisin ang mga walang kuwentang tanong
Puwede pong patulong?
May sagot po ba rito?
May nakakaalam po ba rito?
Rhetorical na ‘tong mga ‘to. Tanggalin mo na iyan.
Tanggalin ang “URGENT” sa post mo
May mga nagpopost kasi na kailangan na raw nila agad-agad ang sagot. Mas mataas ang chance na walang papansin sa iyo kapag gano’n.
Mag-notify kapag na-solve na ang problema mo
Kung na-solve na ang tanong mo, laging i-edit ang post mo at lagyan ng [FIXED]
o kaya naman ay [SOLVED]
. Malalaman ng iba na nasagot na ang tanong mo, at puwede rin itong magamit kapag nagse-search sa group.
Kapag may nagbigay ng sagot…
Ang RTFM at STFW
Kapag ni-reply-an ka ng RTFM, kabahan ka na. Ibig sabihin nito hindi mo ginawa ang kaya mo para mag-research muna. Ganito rin ang ibig sabihin ng STFW.
Kapag ni-reply-an ka ng ganito, malamang (a.) madaling hanapin ang sagot sa tanong mo, (b.) mas marami kang matututuhan sa ibang post kung saan sinagot ang tanong na kaparehas ng sa iyo kaysa kung isu-spoon feed ka lang. Hindi ka rin dapat ma-offend dito. Ibig sabihin nito, pinagpakitaan ka ng awa dahil kahit paano pinansin ka pa rin.
Kapag hindi mo maintindihan ang sagot
‘Wag agad mag-demand ng explanation at clarification. Bumalik ka ulit sa simula; i-search mo ulit iyong sinagot sa iyo. Kung pagkatapos no’n hindi mo pa rin maintindihan, saka ka magtanong ulit at humingi ng clarification.
Kapag medyo bastos ang sagot sa iyo
Kapag pakiramdam mo may pagka-roadrude ang sagot sa iyo, ‘wag agad ma-offend. Maging kalmado lang at higit sa lahat, magalang, sa lahat ng replies mo. Kung talagang bastos ang nagre-reply sa iyo, makikita iyon ng moderators o ibang members na magsasabi sa moderators. Pero kung naging bastos ka sa nag-reply sa iyo para makaganti, baka gano’n talaga ang culture ng group na iyon, o baka talagang may point siya at oversensitive ka lang, at baka ma-ban ka sa group. Ayaw natin no’n.
Kapag wala kang sagot na nakuha
‘Wag kang ma-offend kung walang nag-comment sa post mo. Minsan talagang hindi alam ng kahit sino sa group ang sagot sa tanong mo. Hindi naman dahil walang sumagot sa iyo ay ayaw ka nang pansinin.
In general, ‘wag mong i-repost ang tanong mo; nakakairita ‘to. Baka natutulog pa ang taong nakakaalam ng sagot sa tanong mo kaya walang nagre-reply. Baka rin hindi maayos ang pagkakatanong mo, check mo rin. Subukan mo ring magtanong sa ibang groups.
Conclusion
Medyo marami kang dapat alalahanin kapag nagtatanong. Nakita kong dapat magkaroon ng ganitong post dito dahil karamihan sa mga baguhang kakilala ko, hindi alam ito. At isa rin ito sa mga skills na madadala mo kahit tumagal na. Mawawala ang C at C++, kakaunti ang gumagamit ng Bootstrap at Foundation, malalaos ang object-oriented programming. Pero ang mga skills na gaya nito ay mananatili. Kaya sa susunod na magtanong ka, i-check ulit ang article na ito; i-bookmark mo para hindi mo makalimutan. Tandaan, parang kandado ang mga problema; nasa tamang tanong ang susi para makuha ang tamang sagot.