کانال تلگرام

چگونه مهارت های حل مسئله خود را توسعه دهید؟

تاریخ : ۶ مرداد ۱۳۹۹
نویسنده : حمید رضا ملکی
دسته بندی ها : برنامه نویسی

در لیست بیشتر آگهی های مربوط به استخدام مهندسی نرم افزار معمولاً از "مهارت های حل مسئله" به عنوان یک الزام و یک اصل یاد میشود. مهارت های حل مسئله یکی از ویژگی های اصلی مهندسان عالی نرم افزار است و جز مواردی است که باید در اوایل زندگی حرفه ای شما توسعه یابد تا راه را برای رسیدن به یک حرفه موفق برایتان هموار سازد.

solv1

در اوایل دهه 2000، من در یک خانه نرم افزاری در لندن روی یک سیستم تولید گزارش مبتنی بر وب کار می کردم. تیم مهندسی ما بسیار کوچک بود، در کل کمتر از 12 نفر بودیم و حتی تیم وب ما کوچکتر بود و فقط 2 نفر از بخش back-end و front-end پشتیبانی میکردند.

من و هم تیمی من در آن زمان بسیار جوان بودیم. من حداکثر چند سالی بود که در حوزه توسعه وب کار کرده بودم، در حالی که همکار من درست یک سال قبل با لیسانس ریاضیات فارغ التحصیل شده بود.

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

فرآیند حل مسئله

روند حل مسئله به طور سنتی به چهار مرحله تقسیم می شود:

  • مشکل را درک کنید.
  • طرح ریزی آن را انجام دهید.
  • راه حل را پیاده سازی کنید.
  • نتایج را بررسی کنید.

بعلاوه مرحله طرح ریزی می تواند به دو مرحله مجزا تقسیم شود:

  • تحقیق در مورد راه حل موجود
  • تطبیق کیس مورد نظر با راه حل بدست آمده 

فاز مربوط به تحقیق، راه حلهای موجود در مسائل مشابه را مورد بررسی قرار میدهد و جوانب مثبت و منفی هر یک را در نظر می گیرد. امروزه به لطف منابع موجود در اینترنت، این کار به راحتی انجام می شود و تا حدودی زمان لازم برای رسیدن راه حل را کاهش میدهد.

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

اگر بخواهم به داستان اول مقاله برگردم، مسئله زیاد مشکل نبوده است و درک آن نیز ساده بود اما اشتباهی که من مرتکب شدم این بود که هیچ تحقیقی نکردم و اولین چیزی که ذهنم رسید را پیاده سازی کردم.

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

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

خلاقیت و اعتماد به نفس

فراتر از مرحله تحقیق، متوجه شدم که اکثر مهندسین (از جمله خودم) در مرحله تطبیق گیر کرده‌اند. در اینجا دو حالت متضاد وجود دارد که به طور مرتب، به خصوص هنگامی که با یک راه‌حل کاملا ً جدید سر و کار دارند، به وجود می آیند:

  • عدم اعتماد به نفس : شما در واقع یک راه‌حل معتبر دارید، اما فکر می‌کنید به اندازه کافی خوب نیست.
  • اعتماد به نفس کاذب : شما به سرعت یک راه‌حل پیدا می‌کنید و فکر می‌کنید که این بهترین راه حل جهان است.

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

هنگام ایجاد یا تطبیق راه حل، شایستگی های آن را بطور عینی در نظر بگیرید.

پیاده سازی و اعتبارسنجی

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

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

کارهای بیشتری که میتوانید انجام دهید

سه نکته ای که ما تاکنون مورد بررسی قرار داده ایم کاملاً مربوط به روند حل مسئله است. کارهای بسیار دیگری وجود دارد که می توانید برای بهبود مهارت های حل مسئله خود انجام دهید، در اینجا چند ایده آورده شده است:

افق های خود را گسترش دهید

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

خودتان را به چالش بکشید

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

چیزی جدید بسازید

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

اطلاعات مقاله


تاریخ انتشار : ۶ مرداد ۱۳۹۹
نویسنده : حمید رضا ملکی
اشتراک گذاری در :

مقالات پیشنهادی

مشاهده همه مقالات
ثبت دیدگاه

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید