مخاطب من توی این مطلب برنامه نویس ها هستند و به خصوصی برنامه نویس های کم تجربه تر. پس محتوای این مطلب خیلی روی این موضوع متمرکزه.
تمرکز این مطلب روی این هست که روش هایی رو بگم که برای سرچ کردن و رسیدن به جواب به کار میاد. روش های ساده ولی واقعا کاربردی.
یادتون باشه که سرچ کردن یه مهارته و اصلا نشونه ضعف نیست.
متاسفانه و متاسفانه در محتوای فارسی بسیار مشکل داریم! خیییلی کم پیش اومده من جواب مشکلم رو با سرچ فارسی پیدا کنم.
یا این یکی که اصلا نتیجه نداد:
فارسی سرچ کردن معمولا زمانی به درد من خورده که میخواستم یه نرم افزار کرک شده دانلود کنم یا کارای شبیه به این.
پس اولین قدم اینه که زبانتون رو تقویت کنید تا جایی که میتونید. هیچ بهانه ای قابل قبول نیست. اگر زبانتون خوب نیست یه فکری براش بکنید وگرنه خیلی اذیت میشید.
اولش یه how to بنویسید و بعدکاری که میخواید انجام بدید. تقریبا هرکاری که شما قصد شروع کردنش رو داشته باشید رو قبلا یکی انجام داده یا براش سوال شده و این عالیه!
مثلا اگه میخواید یه اپلیکیشن چت بنویسید:
یه مثال دیگه:
من اول همین دو تا عبارت رو به صورت فارسی بالا تر نوشتم و دیدید که نتایج خیلی متفاوت بود.
این روش زمانی به کار میاد که به نظرتون یه چیزی درست کار نمیکنه. مثلا توی اپلیکیشنی که نوشتید نیاز به لوکیشن دقیق کاربر هست. همه کد ها سرجاشون هستند و هیچ اروری هم وجود نداره. انتظار دارید که درست کار کنه ولی به دلیلی این اتفاق نمیوفته! مشکل اینجاست که خطایی هم در کار نیست و بنابراین سر نخی هم وجود نداره. پس اتفاقی که انتظار دارید بیوفته رو گوگل کنید (تا جای ممکن دقیق بنویسید) و در انتهاش یه not working هم اضافه کنید.
این مثال ها رو ببینید:
یا
معمولا این روش زمانی بیشتر کاربرد داره که همه چیز به نظرتون سر جای خودشه و پیام خطایی هم نداریم ولی چیز ها اونطور که باید کار نمیکنند.
این روش خیلی کاربردی و مهمه. نکته اصلی اینه که هر خطایی که بهش برخوردید مطمین باشید که قبلا یک نفر دیگه هم دقیقا به همون خطا برخورده و براش سوال شده. قطعا اگر شما پیام خطا رو کپی و پیست کنید میتونید به جواب برسید.
این مثال رو ببینید:
خطا:
zsh: no matches found: postcss@^7
خیلی راحت همینو کپی میکنم و نتایج:
از این مثال ها خیلی زیاد میشه زد. خیلی راحت هر جا به ارور های این شکلی برخوردید همونو دقیقا کپی کنید و توی گوگل سرچ کنید.
یکی دیگه:
بعد از کپی و پیست کردن ارور:
مجدد جوابم رو توی اولین نتیجه پیدا کردم.
این مورد خیلی به گوگل کردن ربطی نداره، بعضی وقت ها شما ممکنه بعد از جستجو هم نتیجه مورد نظرتون رو پیدا نکنید. از اینکه سوال بپرسید نترسید. میتونید سوالتون رو توی Stackoverflow مطرح کنید که کار جذابی هم هست و نشون میده شما به هر شکل ممکن دنبال جواب هستید.
من یادمه سال ۲۰۱۶ خیلی توی این زمینه فعال بودم! هم سعی میکردم سوال جواب بدم و هم سوال خوب بپرسم. یکی از سوالاتی که پرسیدم و بازدید خیلی زیادی هم داشت این بود:
پس از پرسیدن هم نترسید. خیلی کمک میکنه به تقویت بقیه مهارت های شما.
خب مشخصه که جواب درست جوابیه که کار کنه وگرنه درست نیست! خب این جمله خیلی احمقانه است ولی نکته اصلی اینجاست که "فقط" کار کردن مهم نیست. خوانایی و مختصر بودن و سادگی راه حل هم خیلی مهمه. خب این ها رو از کجا میشه متوجه شد؟ معمولا سایت هایی که برای اینکار ها در نظر گرفته شدن یه سیستم برای امتیازدهی به سوال و جواب ها دارند که الان با هم یه نگاهی میندازیم بهشون.
سایت Stackoverflow
اگر جواب راه حلتون رو روی سایت stackoverflow پیدا کرده باشید میتونید ببینید که هر جواب چندتا رای مثبت گرفته و چندتا رای منفی. برای اینکه کسی بتونه به پستی یا سوالی رای مثبت و منفی بده باید یه مراحلی رو گذرونده باشه و اینطوری نیست که هر کسی دوست داشت بیاد یه رای بده و بره که این یعنی حتی رای ها هم با حساب و کتاب داده میشن و الکی نیستن، واقعا به این میگن یه Gamification درست و حسابی.
این رو ببینید:
همینطور که میبینید برای هر کدوم از سوالات تعداد خیلی زیادی جواب داده شده. و البته رنگ سبز باکس answers هم نشون میده که یکی از جواب ها رو کسی که سوال رو پرسیده، به عنوان بهترین جواب انتخاب کرده.
سوال اول خیلی جالبه! ۹۹۶۳ نفر رای دادن و ۱۱۲ نفر جواب دادن! البته همه این رای ها برای جواب نیست. دقت کردید دیگه؟ یعنی اینطوری هم نبوده که یه نفر بیاد جواب رو بده و بقیه دیگه بیخیالش بشن. اینطوریه که راه حل های متنوعی میتونیم برای مشکلات پیدا کنیم و اونی که بالاترین رای رو داشته احتمالا بهترین جواب هم بوده.
رای های سوال هم ۹۹۶۳ تا هست که نشون میده سوال خیلی خوبی بوده.
اینجا چندتا نکته هست که باید بهش توجه کنید:
مهمه که ببینید چه زمانی سوال پرسیده شده، ممکنه سوال خیلی خیلی قدیمی باشه و الان در زمان حال چنین سوالی دیگه اهمیت نداشته باشه یا باگی بوده که به مرور زمان توسط توسعه دهنده های زبان یا کتابخونه حل شده باشه.
آخرین فعالیت یعنی آخرین باری که کسی اومده و سوال رو ادیت کرده یا جوابی اضافه کرده (اگر این مورد رو دقیق تر میدونید توی کامنت ها بنویسید). نکته مهمش اینجاست که اگر آخرین فعالیت این سوال، نزدیک بود به زمانی که سوال پرسیده شده و همچنین سوال هم در زمان های خیلی دور پرسیده شده ممکنه اصلا جای درستی برای پیدا کردن پاسخ درست نیومده باشید.
همونقدر که جواب سوال مهمه، صورت سوال هم مهمه. امکانش وجود داره که عنوان سوال طوری پرسیده شده باشه مشکلی رو بخواد حل کنه که مشکل شما نیست. حتما صورت سوال رو با دقت بخونید و مطمئن بشید که با مشکل شما همخوانی داره.
بعد از خود سوال میرسیم به جواب هاش:
اون تیک سبز رنگ نشون میده که این جواب تایید شده و راه حلی که ارائه داده کاملا قابل اعتماده. عدد ۱۴۴۳۰ هم که نشون دهنده تعداد رای های مثبتی هست که گرفته که اعتبار جواب رو چند برابر میکنه.
پس نکته مهم در مورد پیدا کردن جواب از stackoverflow اینه که سوال و جواب خیلی قدیمی نباشن، جواب حتما تایید شده باشه و صورت سوال با سوال شما همخوانی داشته باشه.
سایت Github
ممکنه جواب سوالتون رو توی گیتهاب پیدا کنید. البته قسمت Issues. معمولا زمانی جواب هایی رو اینجا پیدا میکنید که به یک خطا برخورده باشید و از اونجا که ممکنه به خاطر یک باگی در خود کتابخونه یا تکنولوژی باشه، یا نکته ای بوده که توی مستندات پروژه بهش اشاره نشده باشه، توی ریپازیتوری خودش به صورت یک issue مطرح شده.
توی این مثال نگاه میندازیم به کتابخونه moment که در واقع کتابخونه ای هست برای کار کردن با تایم.
مجدد همونطور که گفتم خوب توجه کنید که سوالی که پرسیده شده سوال شماست. مثال هایی که من اینجا آوردم برای نشون دادن نکته های سوال و جواب هستند و شاید خیلی واقعی نباشند(از این نظر میگم که من فقط اسکرینشات گرفتم و درگیر مساله مشابهی در زمان نوشتن مطلب نبودم) بنابراین روی این موضوع خیلی دقت کنید.
تعداد فیدبک هایی که سوال ها و جواب هاشون میگیرن اهمیت داره. خوبی گیت هاب اینه که این انجمن ها معمولا توسط خود سازنده های کتابخونه یا اون تکنولوژی مدیریت میشن. بعضی وقت ها هم خودشون مستقیما جواب سوالات رو میدن که این خودش خیلی نکته مثبتیه.
راه حلی که ارائه داده رو میبینیم که هم کامله و هم بازخورد های خوبی گرفته. بازخورد ها میتونن هم منفی باشن هم مثبت. بعضی وقت ها توی گیتهاب ممکنه این علامت رو هم ببینید:
سعی میکنم اگر نکته دیگه ای به ذهنم رسید بنویسم حتما، شما هم میتونسد کمکم کنید و توی کامنت ها اکر راه حل دیگه ای میشناسید معرفی کنید.