همه ما برنامه نویس ها در تمام مراحل کاریمان نیاز به پرسیدن سوالات متفاوت از افراد متفاوت داریم. این که سوال ما چگونه طراحی شده باشد بسیار در کیفیت و زمان دسترسیمان به پاسخ تاثیر خواهد داشت.
مهارت در پرسیدن سوالات حرفه ای همچنین می تواند تاثیر فوق العاده ای در رشد یک برنامه نویس داشته باشد. احتمالا برای شما پیش آمده که سوالی پرسیده باشید و در اولین پاسخ به شما گفته شده باشد: آفرین چه سوال خوبی! همین آفرین ها می تواند راه شما را باز کند.
هچنین با گسترش استفاده از وبسایت های پرسش و پاسخ آنلاین مهارت در پرسیدن سوالات خوب و به جا، بیشتر و بیشتر در رسیدن به هدف کمک خواهد کرد و حتی سوالات خوب می توانند در وجه شغلی یک برنامه نویس تاثیر بسیار مثبتی نیز داشته باشند. به این صورت که مثلا در سایت stackoverflow.com سوالات نیز امتیاز دهی می شوند و در امتیازات یک کاربر تاثیر زیادی دارند.
با این مقدمه، برای پرسیدن یک سوال فوق العاده در محل کار چه مواردی نیاز است؟
سعی کنید سوال نپرسید!
اولین مرحله در پرسیدن یک سوال خیلی خوب این است که سعی کنید سوال پرسیده نشود! قبل از طرح سوال بهترین کار این است که مدت مناسبی صرف تحقیق و بررسی در مورد موضوع سوال انجام شود. فرض کنید سوال را می خواهید از یک همکار یا دوستی بپرسید که به شدت مشغول کار دیگری است. آیا پرسیدن سوال بدون تحقیق و بررسی یک جور بی احترامی به دوستتان نیست؟!
نتیجه تحقیقاتی که در این مرحله انجام شده نیز می تواند در کنار موضوع سوال مطرح شود. به طور مثال می توان گفت در stackoverflow گشتم و این جواب را پیدا کردم که به این دلیل خاص به درد من نمی خورد. این موضوع به پاسخ دهنده سوال خیلی کمک خواهد کرد تا تفاوت سوال شما با دیگر سوالات را متوجه شود. و این موضوع حس بسیار خوبی در مخاطب ایجاد می کند.
عنوان سوال را دقیق انتخاب کنید
عنوان سوال نقش بسیار زیادی در نتیجه خواهد داشت. عنوان سوال باید علاوه بر مختصر بودن، سعی کند تمام اطلاعات لازم برای ایجاد آمادگی ذهنی پاسخ دهنده را، در اختیار او قرار دهد. عنوان سوال در سوالات شفاهی در واقع همان اعلام کمک یا درخواست کمک از همکار خواهد بود. اطلاعاتی که در عنوان سوال خیلی مهم هستند به صورت زیر است:
- زبان برنامه نویسی یا زیرساخت مورد نظر (زمانی که در یک تیم یکنواخت کار می کنید می توانید فرض کنید طرف مقابل اطلاع از زیرساخت و زبان شما دارد)
- متن exception یا خطای منطقی ای که به آن برخوردید به طور خلاصه. مثلا: خطای cannot enumerate all types of … را می گیرم.
- موضوعات مربوط به شرایط خاصی که دارید، مثلا اگر پایگاه داده شما متفاوت با بقیه تیم است و حدس میزنید که خطا از این مورد است حتما ذکر کنید که پایگاه داده من متفاوت است
محدوده سوال تا حد امکان کوچک باشد
وقتی سوالی مطرح می شود باید سعی کنید محدوده طرح سوال تا حد امکان کوچک باشد. به این صورت که مکان دقیق ایجاد مشکل مشخص شده باشد و روش ایجاد دوباره مشکل مشخص شده باشد. همچنین اگر وابستگی خاصی در صورت مسئله به فناوری یا زیرساخت خاصی وجود دارد حتما مشخص شده باشد. به طور مثال بگویید حدس می زنم مشکل از binding ورژن asp.net ما باشد. دست آخر کاری که دقیقا در حال انجامش بودید نیز قابل ارائه باشد، مثلا:میخواستم فاکتور خالی جدیدی ثبت کنم.
برای مطالعه بیشتر در این موضوع می توانید به پست دیگری از من مراجعه کنید.
پروژه تستی ایجاد کنید
در صورتی که امکان این کار وجود داشت بهتر است یک پروژه تستی قابل اجرا که موضوع سوال در آن ایجاد شده باشد درست کنید. این به روند رسیدن شما به پاسخ بسیار کمک خواهد شد. به این صورت که بجای مراجعه پاسخ گو(ها) به میز شما. شما پروژه را برای مخاطبین ارسال می کنید. در ایجاد این پروژه به موضوعات زیر دقت کنید:
- تا حد امکان داده های مورد نیاز به صورت static داخل برنامه وجود داشته باشد
- رابط کاربری پیچیده ای نداشته باشد
- تمام نیازمندی های نرم افزاری تا حد امکان در کنار پروژه وجود داشته باشد
- کد ساده داشته باشد و سریع سر اصل مشکل رفته باشد
همچنین می توان گفت پروژه تستی را می توانید به عنوان یک unit test بزرگ ببینید.
پرسیدن سوالات مناسب و بجا به طور حتم نیازمند تلاش و دقت فراوان است. این موضوع باید به اندازه باقی نیازمندی ها و تخصص های مورد نیاز در مهندسی نرم افزار جدی گرفته شود. البته مانند اکثر مهارت ها آموختن و استفاده کردن مناسب از این مهارت نیز نیازمند تمرین و تکرار خواهد بود.
این مطلب در مورد پرسیدن سوالات شفاهی نوشته شده است. برخی از قوانین و اصول وبسایت هایی مانند stackoverflow با مواردی که مطرح شده متفاوت است.