فریم ورکی برای حل کردن مسائل و مشکلات برنامه نویسی

قبلا یه پست در مورد اینکه چجوری باید پروژه رو دیباگ کرد و اینکه چجوری باید با ارور ها برخورد کرد نوشته بودم که خیلی بی ربط به این موضوع نیست. ولی در کل برای حل هر مسئله ای که براتون رخ میده میتونید طبق این مراحلی که اینجا نوشتم جلو برید و مطمئن باشید که بهتون خیلی کمک میکنه و من خودمم از همین روش برای حل مشکلات برنامه نویسی خودم استفاده می کنم.

این فریم ورک شامل ۷ یا ۸ تا مرحله هست:




مرحله مشخص کردن سطح مسئله

این مرحله برای زمانی بیشتر کاربرد داره که دارید به صورت تیمی کار می کنید و میخواید متناسب با هر شخص تقسیم مسئله رو انجام بدیم. حتی میتونی بهش این جوری نگاه بکنی که اگه مسئله خیلی پیچیده هست بدی برات انجام بدن و بعد روی جواب سعی کنی چیزای جدید یاد بگیری.

اگه مسئله تو سطح ۴ یا ۵ باشه و تعداد دفعات زیادی این فریم ورک رو تا تهش رفتی و به نتیجه نرسیدی از یکی (مدیر فنی پروژه یا یه برنامه نویس دیگه که برات وقت بزاره) باید کمک بگیری.

و اگه تو سطح ۱ تا ۳ بود باید این فریم ورک رو اونقدر تکرار بکنی تا اینکه مسئله حل بشه یا به سطح ۴ یا ۵ برسی.


مرحله سوال

اگه دارید تیمی کار می کنید باید به این موضوع هم فکر کنی: «آیا این مسئله به من مربوطه؟» شاید با همین یه سوال مسئله به کس دیگه ای محول بشه. البته یاد باشه که (مثل تصویر زیر) یه وقتی از اون ور بوم نیوفتی.

سوالای درست پرسیدن به این معنی هست که تو مشکل رو به خوبی درک کردی که داری این سوال ها رو می پرسی. پس اگه نتونستی سوال درست بپرسی بدون که اصلا صورت مسئله رو درست نخوندی.

یه مثال خیلی خیلی ساده میتونه این باشه که فرض کن بهت میگن یه کلاس بنویس که یه 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 استفاده بکن.


در انتها باید این فیلم رو هم بزارم که بخشی از این فریم ورک رو مدیونش هستم:

https://www.aparat.com/v/CZyMl

اگه کلیه قسمت های این ویدئو رو بعلاوه یه سری آموزش های دیگه که از نظر من برای یادگیری برنامه نویسی لازمه رو میخوای میتونید از طریق تلگرام با من در ارتباط باشید. آی دی تلگرام: mjbKhorasani