برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
فریم ورکی برای حل کردن مسائل و مشکلات برنامه نویسی
قبلا یه پست در مورد اینکه چجوری باید پروژه رو دیباگ کرد و اینکه چجوری باید با ارور ها برخورد کرد نوشته بودم که خیلی بی ربط به این موضوع نیست. ولی در کل برای حل هر مسئله ای که براتون رخ میده میتونید طبق این مراحلی که اینجا نوشتم جلو برید و مطمئن باشید که بهتون خیلی کمک میکنه و من خودمم از همین روش برای حل مشکلات برنامه نویسی خودم استفاده می کنم.
این فریم ورک شامل ۷ یا ۸ تا مرحله هست:
مرحله مشخص کردن سطح مسئله
این مرحله برای زمانی بیشتر کاربرد داره که دارید به صورت تیمی کار می کنید و میخواید متناسب با هر شخص تقسیم مسئله رو انجام بدیم. حتی میتونی بهش این جوری نگاه بکنی که اگه مسئله خیلی پیچیده هست بدی برات انجام بدن و بعد روی جواب سعی کنی چیزای جدید یاد بگیری.
اگه مسئله تو سطح ۴ یا ۵ باشه و تعداد دفعات زیادی این فریم ورک رو تا تهش رفتی و به نتیجه نرسیدی از یکی (مدیر فنی پروژه یا یه برنامه نویس دیگه که برات وقت بزاره) باید کمک بگیری.
و اگه تو سطح ۱ تا ۳ بود باید این فریم ورک رو اونقدر تکرار بکنی تا اینکه مسئله حل بشه یا به سطح ۴ یا ۵ برسی.
مرحله سوال
اگه دارید تیمی کار می کنید باید به این موضوع هم فکر کنی: «آیا این مسئله به من مربوطه؟» شاید با همین یه سوال مسئله به کس دیگه ای محول بشه. البته یاد باشه که (مثل تصویر زیر) یه وقتی از اون ور بوم نیوفتی.
سوالای درست پرسیدن به این معنی هست که تو مشکل رو به خوبی درک کردی که داری این سوال ها رو می پرسی. پس اگه نتونستی سوال درست بپرسی بدون که اصلا صورت مسئله رو درست نخوندی.
یه مثال خیلی خیلی ساده میتونه این باشه که فرض کن بهت میگن یه کلاس بنویس که یه URL بگیره و بهش HTTP Request بزنه.
سوالایی که من می پرسم ایناس:
- این کلاس قراره new بشه یا static باشه.
- در مورد http status ها قراره به چه شکل عمل بشه؟ API قراره فقط status code های ۲۰۰ و ۵۰۰ بده یا با http status code ها کار میشه.
- احراز هویتی هم قرار این کلاس انجام بده یا نه
- اگه پاسخ به سوال قبلی بله است، این کلاس با چند نوع احراز هویت قراره روبرو بشه.
- این کلاس قراره توکن های JWT رو مدیریت بکنه یا نه.
- اگه جاب سوال قبلی بله هست، آیا refreshToken و accessToken داریم. انقضای توکن های JWT چجوری هست.
- چک توکن رو قراره همین کلاس انجام بده یا نه
- ...
اگه مثل من مرضی به اسم کمال گرایی داری حتما حواست بهش باشه و گرنه اصلا مسئله رو حل نمیتونی و سوالایی هم که می پرسی زاییده ی کمال گراییت هست و (شاید) به حل مسئله کمک نکنه و فقط مسئله رو برات هیولا بسازه
اگه پیش درآمد دارید در مورد اون مسئله، حتما قبل از وارد شدن به مسئله اونا رو از ذهنتون خالی بکنید و با یه ذهن باز به سراغ مسئله برید.
برای حل مسئله Deadline تعیین کن تا خودت رو مقید به انجامش بکنی.
استراتژی divide & conquer
مسئله رو بشکن و هر زیر مسئله رو در ساده ترین شکل ببین. استراتژی کالباسی برای حل مسائل پیچیده خیلی خوبه.
تحقیق بکن
توی گوگل، stackoverflow و هر جایی که میتونی سرچ بزن.
فیلم های آموزشی youtube رو ببین
نمونه کد ها رو توی github و gitlab ببین
مقاله های medium و سایت های دیگه رو بخون
انگلیسی و فارسی سرچ کن.
شبه کد / الگوریتم / فلو چارت
اگه بازم مسئله سخته سعی کن براش الگوریتم/شبه کد بنویسی. فلوچارت بکش.
مرحله استراحت
اگه مشکلت حل نشد یه ۱۵ تا ۲۰ دقیقه به ذهنت آرامش بده. برو دراز بکش، کتاب بخون و بزار ذهنت آزاد بشه. بعد دوباره از مرحله اول شروع بکن. اگه بازم بعد از ۳ یا ۴ بار مشکلت حل نشده باقی موند بزار از روش ۲۴ ساعت بگذره و بعد دوباره همین فریم ورک رو از مرحله یک شروع بکن.
یادداشت کردن
اگه میخوای یادت نره کجا بودی از یه نرم افزار مثل CherryTree استفاده بکن.
در انتها باید این فیلم رو هم بزارم که بخشی از این فریم ورک رو مدیونش هستم:
اگه کلیه قسمت های این ویدئو رو بعلاوه یه سری آموزش های دیگه که از نظر من برای یادگیری برنامه نویسی لازمه رو میخوای میتونید از طریق تلگرام با من در ارتباط باشید. آی دی تلگرام: mjbKhorasani
مطلبی دیگر از این انتشارات
داستان های Design Patterns
مطلبی دیگر از این انتشارات
VMware vMotion چیست؟
مطلبی دیگر از این انتشارات
مشکلات package*.json