تفکر برنامه نویسی – توانایی حل مشکلات
اگر شما هم به برنامه نویسی علاقمند هستید، به احتمال زیاد قبلا با این نقل قول روبرو شدهاید:
همه افراد باید با برنامه نویسی آشنا شوند چرا که این موضوع به آنان نحوه فکر کردن را خواهد آموخت – استیو جابز
شاید با خود فکر کردهاید که این نقل قول چه معنی میدهد؟ تفکر مانند یک برنامه نویس؟ و چطور باید این کار را انجام داد؟
به طور کلی، این موضوع در مورد حل مسائل به شیوه بهتر و موثرتر است.
با ما تا انتهای این مقاله همراه شوید تا متوجه شوید که چگونه میتوان مشکلات را بهتر حل کرد.
چرا این موضوع اهمیت دارد؟
حل مسئله یک توانایی ضروری است.
همه ما در زندگی مشکلاتی داریم. کوچک و بزرگ. نحوه حل کردن آنان در اکثر اوقات، به شیوههایی کاملا اتفاقی است.
مگر این که از قبل برای خود سیستمی تعریف کرده باشید، احتمالا به این شکل مسائل را حل میکنید (که البته اکثر کسانی که تازه وارد برنامه نویسی شدهاند نیز همین کار را میکنند):
- راه حلی را امتحان میکنید.
- در صورت کار نکردن راه حل دیگری را امتحان میکنید.
- اگر بازهم به جواب نرسید، مرحله دوم را دوباره انجام میدهید تا در نهایت به جواب مورد نظر خود برسید.
گاهی اوقات شما شانس میآورید و سریعا به جواب میرسید. اما این شیوه بدترین راه حل مشکلات است! و در مقیاس بسیار بزرگی وقت شما را هدر خواهد داد.
بهترین راه حل مسئله شامل ۱) استفاده از یک چهارچوب و ۲) تمرین زیاد است.
قدرت حل مسئله آن قدر اهمیت دارد که تقریبا در همه مصاحبههای کاری (معمولا در شرکتهای خصوصی!) به آن اولویت میبخشند.
میتوان گفت که این توانایی مهمترین خصوصیتی است که افراد به دنبال آن هستند، بسیار بیشتر از ارجحیت یک زبان برنامه نویسی، دیباگ کردن و یا طراحی و معماری سیستم.
داشتن یک چهار چوب:
نکته: هر شخصی با شخص دیگر متفاوت است با این حال اگر با قواعد مشخصی که همه تاکید به خوب بودن آنان دارند شروع کنید، بسیار سریعتر به جواب خواهید رسید و در نهایت میتوانید چهارچوب شخصی خودتان را داشته باشید.
بزرگترین اشتباهی که برنامه نویسهای تازه کار انجام میدهند، تمرکز روی سینتاکس برنامه نویسی است، در حالی که باید روی توانایی حل مسئله خود کار کنند.
بنابر این هنگامی که با یک مشکل جدید روبرو میشویم، چه رویهای را پیش بگیریم؟
این موارد، قدمهای مورد نیاز هستند:
۱. درک مشکل
دقیقا متوجه شوید که چه چیزی از شما خواسته شده است. اکثر مسائل سخت، تنها به این دلیل سخت هستند که شما متوجه درخواست مسئله نمیشوید.
چه هنگام شما مشکل را متوجه شدهاید؟ هنگامی که بتوانید آن را به فارسی روان برای کسی توضیح دهید.
آیا به یاد دارید که با مشکلی برخورد کرده و شروع به توضیح دادن آن کردهاید و ناگهان نکتههایی را در منطق آن میبینید که تا کنون متوجه نشده بودید؟
اکثر برنامه نویسان این احساس را درک میکنند.
به همین دلیل است که شما باید مشکل خود را بنویسید، دیاگرام آن را ترسیم کنید یا با شخصی در مورد آن صحبت کنید (بعضی افراد از حیوان خانگی خود یا حتی اردک پلاستیکی روی میز برای این منظور استفاده میکنند).
اگر نتوانید مشکل را به نحو سادهای توضیح دهید، شما آن را متوجه نشدهاید – ریچارد فینمن
۲. برنامه ریزی و نقشه
سعی کنید به طور آنی و بدون نقشه و استراتژی وارد حل کردن مسئله نشوید (و امیدوار باشید که در بین راه نقشه در ذهن شما شکل بگیرد). برای حل مشکل برنامه ریزی کنید!
اگر نتوانید مراحل مختلف را روی کاغذ بیاورید به مشکل برخورد خواهید کرد.
در برنامه نویسی این مرحله به این معنی است که سریعا شروع به تایپ کدهای مربوطه نکنید. به ذهن خود زمان بدهید تا مشکل را درک کرده و اطلاعات را پردازش کند.
برای مثال، برای ایجاد یک نقشه خوب، به این سوال پاسخ دهید:
“اگر ورودی ما داده X باشد برای این که Y را خروجی بگیریم، باید چه مراحلی را طی کنیم؟
۳. تقسیم بندی
با دقت توجه کنید. این مرحله مهمترین قدم است.
سعی نکنید که مشکل پیچیدهای را به طور کامل و آنی حل کنید. اگر این کار را انجام دهید آن روز، روز سیاهی در تقویم شما خواهد بود.
در عوض، مشکل را به مشکلات کوچکتر تقسیم کنید. این مشکلات کوچکتر بسیار سادهتر حل خواهند شد.
با سادهترین آنان شروع کنید. آسانترین به این معنی است که شما جواب آن را میدانید (یا نسبت به دیگر قسمتها به جواب نزدیکتر هستید).
همچنین یکی دیگر از راههای تشخیص سادهتر بودن مشکل، عدم وابستگی حل آن به دیگر مسائل است.
هنگامی که همه مسائل کوچک را حل کردید، آنان را به یکدیگر ارتباط دهید.
اگر به خوبی همه مسائل کوچک را به یکدیگر وصل کنید، مشکل پیچیدهای که در ابتدا غیر قابل حل به نظر میرسیده است را حل کردهاید.
این تکنیک، زیر بنای توانایی حل مسئله است. همیشه آن را به یاد داشته باشید.
۴. گیر کردهاید؟ نمیتوانید جلوتر بروید؟
شاید اکنون با خود فکر میکنید که، این شیوهها خیلی موثر به نظر میآید، با این حال اگر در مشکلی گیر کنیم و نتوانیم جلوتر برویم چه؟
اول از همه نفس عمیق بکشید! و ابدا نگران نشوید. این موضوع بدون استثنا برای همه پیش میاید.
اگر نمیتوانید جلوتر بروید میتوانید مراحل زیر را امتحان کنید:
دیباگ: مرحله به مرحله در جواب خود جلو بروید تا متوجه شوید که کدام قسمت را اشتباه کردهاید. برنامه نویسان به این کار دیباگ کردن میگویند.
عقب نشینی و ارزیابی دوباره: یک مرحله به عقب بروید. مشکل را به شکل دیگری نگاه کنید.
گاهی اوقات ما آن قدر در جزئیات یک مسئله عمیق میشویم که قواعد کلی که میتوانند ما را جلو ببرند را به کلی فراموش میکنیم.
نکته: یکی از تکنیکهای ارزیابی دوباره، شروع دوباره است. همه چیز را پاک کنید و با چشمانی تازه شروع کنید.
تحقیق: و اینجاست که دوست خوب ما، گوگل به وسط میآید. بله درست است. مهم نیست که شما با چه مشکلی روبرو شدهاید، با احتمال بسیار بالا قبل از شما کسی آن را حل کرده است. حتی اگر مشکل خود را توانستهاید حل کنید. نگاه کردن به راه حلهای دیگران بسیار به شما کمک خواهد کرد.
هشدار: اگر مشکل شما بزرگ است و هنوز آن را به قسمتهای کوچکتر تقسیم نکردهاید راه حل آن را جستجو نکنید. چرا که تنها هنگامی که با مشکل درگیر شوید، توانایی حل مسئله را یاد خواهید گرفت. اگر طی این پروسه چیزی یاد نگرفته باشید، وقت خود را تلف کردهاید.
تمرین
انتظار نداشته باشید که تنها پس از یک هفته، پیشرفت قابل توجهی داشته باشید. اگر میخواهید که حل کننده مسئله خوبی باشید، مسائل زیادی را حل کنید.
تمرین. تمرین و تمرین. اگر از این کار غافل نشوید خواهید دید که پس از مدتی چگونه میتوانید مسائلی که دیگران ساعتها روی آن وقت میگذارند را تنها در چند دقیقه حل کنید.
چطور تمرین کنید؟ این مورد دیگر به خود شما بستگی دارد.
شطرنج، مسائل ریاضی، سودوکو، مونوپولی ، بازیهای ویدیویی و…
در حقیقت یکی از وجوه مشکترک بین افراد موفق، عادت تمرین “حل کردن مشکلات کوچک” است. برای مثال پیتر تیل شطرنج بازی میکند و ایلان ماسک بازیهای ویدیویی.
به یاد داشته باشید، همه مشکلات الگوهای مشترکی با یکدیگر دارند.
نتیجه گیری
اکنون شما میدانید که جمله “فکر کردن مانند یک برنامه نویس” چه معنی میدهد.
و متوجه شدهاید که توانایی حل مسئله از اهمیت بسیار زیادی برخوردار است.
بنابراین سعی کنید تا جای ممکن با مسائل و مشکلات زیادی روبرو شوید چرا که این تنها راه پیشرفت و موفقیت است.
زندگی مجموعهای از مشکلات است که به یکدیگر اتصال پیدا کردهاند. با این حال هر زمان که شما یکی از آنان را حل میکنید، چیز جدیدی را یاد گرفتهاید. قدرت ذهن و نگاه خود را تقویت کردهاید و پس از هر مشکل شما کمی به هدف خود نزدیکتر شدهاید – ریان هالیدی
دیدگاهتان را بنویسید