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

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

در این مقاله یاد میگیرم که :

توانایی حل مسئله چیست ؟

چه کسانی به توانایی حل مسئله نیاز دارند ؟

چه عواملی روی قوی بودن حل مسئله تاثیر گذار هستش ؟

راهکار هایی بهبود توانایی حل مسئله در برنامه نویسی چیست ؟

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

بگذریم... تا این که دوران مدرسه و دانشگاه تموم شد و تازه فهمیدم از شروع بچگی تا روز آخر زندگی بدون اینکه خودمون احیانا اطلاع داشته باشیم روزانه با کلی مسئله رو به رو میشیم که باید حلشون کنیم, حالا چه در زمینه مهارتی و کاری و چه در جنبه های دیگه ی زندگی ! تصمیم گرفتم این مقاله رو به صورت مختصر و با زبونی ساده در مورد مهارت حل مسئله بنویسم تا حداقل تجربیات خودمو باهاتون در میون بزارم

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

من به شخصه خودم وقتی وارد دنیای IT و برنامه نویسی شدم فکر میکردم هرچی دستورات و توابع بیشتری بلد باشم برنامه نویس بهتری میشم ولی روزی رسید که یه زبان برنامه نویسی رو تقریبا همه ی دستوراتش و حفظ بودم ولی در عمل نمیتونستم یه برنامه کاربردی بنویسم و میدیدم کسایی هستن که یک چهارم من دستورات و توابع رو بلدن و بقیه رو سرچ میکنن تو برنامشون کپی میکنن, ولی میتونن برنامه های کاربردی بنویسن و از اونجا بود که با مبحث توانایی حل مسئله آشنا شدم باعث شد کلا نگرشم به برنامه نویسی تغییر کنه و به جای یاد گرفتن بیشتر دستورات, تمرکز و وقتمو روی بهترین راه استفاده از اون معلوماتم بزارم و الانم خیلی هارو میشناسم که مشکل چند سال پیش منو داشتن و با راه حل هایی که در ادامه بهش اشاره میکنم امیدوارم بتونه تو راه بالا بردن مهارت حل مسئله بهشون کمک کنه, ولی تو ابتدای مقاله گفتم که به جز برنامه نویسی تو همه ی مهارت ها و همه ی مردم به حل مسئله نیاز دارن و ابتدا میخوام مثال هایی تو این زمینه بیارم :

ورزشکار : یک فوتبالیست رو در نظر بگیرید توی زمین داره همزمان حرکت توپ, حرکت بازیکن خودی و حرکت بازیکن حریف رو زیر نظر میگیره تا بهترین تصمیم رو بگیره, و این یعنی مسئله و تصمیم بازیکن یعنی توانایی اون فرد تو حل مسئله.

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

سیاست مدار : یک فرد سیاست مدار رو در حال مذاکره سر یه موضوع مهم در نظر بگیرید که افرادی زیادی اونجا هستن و هر کسی نظر خودشو داره و بحث حسابی گره خورده و اون فرد تصمیم گیرنده اصلی باید تصمیمی رو بگیره که برآیند نظر اکثریت افراد باشه و منافع کشور خودش تامین بشه بدون اینکه لطمه ای به اعتبار اون شخص یا کشور وارد بشه و اینجا توانایی حل مسئله هستش که میتونه به این سیاست مدار کمک کنه.

دزد و سارق : "بله درست خوندید" توانایی حل مسئله مختص به مسايل مثبت فقط نیست و جالبه بدونید افراد که کارهای مخرب و منفی انجام میدن بعضا توانایی حل مسئله بالاتری به نسبت بقیه دارن !! , یک گروه دزد رو در نظر بگیرید که میخوان از یک بانک سرقت کنن, بدون شک حداقل 2 پلن برای کار خودشون آماده میکنن و درصد موفقیت عملشون به این برمیگرده که توانایی حل مسئله شون تا چه حد قوی باشه تا بتونن پلن بدون نقصی بریزن.
اینجا به اختصار به 4 مورد اشاره کردم و اگر بخوایم ریز بشیم میبینیم تو هر کار و حرفه ای توانایی حل مسئله به شدت حس میشه و الان شاید بپرسید

چه عواملی روی قوی بودن حل مسئله تاثیر گذار هستش ؟!

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

ضریب هوشی : بدون شک و بدون تعارف ضریب هوشی تاثیر گذاری بالایی رو داره و به قول یوهان کرایف فقید, اسطوره فوتبال هلند که خیلی ساده گفته بود "تیمی که درصد دوندگیش تو زمین بیشتر باشه احتمال برنده شدنش بیشتر از حریف هستش" و اینجا هم ساده باید گفت ضریب هوشی هر چقدر بیشتر باشه احتمال توانایی حل مسئله تو یک شخص بالاتره !

خلاقیت : خلاقیت به معنی توانایی ایجاد نوآوری و ایده های جدید تو هر زمینه ای هستش, و متاسفانه خیلی ها فکر میکنن که خلاقیت یک چیز کاملا ذاتی هستش, در حالی که چیزی حدود 50 درصد خلاقیت اکتسابی هستش و همونطور که با ورزش میشه عضلات رو تقویت و پرورش داد راه هایی هستش برای افزایش خلاقیت.

قدرت تجزیه و تحلیل : کاملا مشخصه که هر فردی اگه بتونه اتفاقات پیرامون خودش رو بهتر تجزیه و تحلیل کنه حتما میتونه راه حل های بهتری هم برای اتفاقات داشته باشه.

شخصیت فردی : اینجا یه مقدار بحث وارد زمینه روان شناسی میشه, کلا 3 دسته انسان هستش, اول کسایی که باعث میشن اتفاقی روی بده(چه اتفاق مثبت و چه منفی), دوم کسایی که اجازه میدن اتفاقی روی بده, و سوم کسایی که کلا خنثی هستن و براشون مهم نیست اصلا اتفاقی روی بده ! قطعا دسته اول توانایی حل مسئله بالاتری دارن چون جسارت, قدرت ریسک و قدرت لیدری بالاتری دارن.

حالا چه مواردی میتونن به تقویت قدرت حل مسئله کمک کنن ؟!

اول از همه این و باید بگم توانایی حل مسئله اصلا چیزی نیست که بشه به کسی آموزش داد و به طور مثال در زمینه برنامه نویسی نهایت چیزی که میشه آموزش داد الگوریتم و فلوچارت هستش که یادگیریش خوبه ولی موقع نوشتن یه برنامه واقعی شاید نهایت تا 10 درصد بتونه کمک کننده باشه. ولی تقویت یک سری فاکتورها درون خودمون و کلا تغییر نگرش به بعضی چیزها میتونه به صورت غیر مستقیم تو بلند مدت باعث بالا بردن قدرت حل مسئله ما بشه, که به این موارد اشاره میکنم :

اصل جزء به کل : با یک مثال شروع میکنم, فرض کنید برای ساخت یک اتاق اگه اول بیایم یه اتاق ساخته شده و کامل رو تو ذهنمون تصور کنیم 100 درصد ساختش برامون سخت و غیرممکن میاد, پس باید از کوچکترین مراحل شروع کنیم, اول از همه باید آجر, سیمان, ماسه و تجهیزات مورد نیاز رو که ابزار ما هستن داشته باشیم(که اینا نقش دانش و آموخته های ما رو داره), به طور مثال 2 تا آجر رو روی هم میچینیم و وسطش سیمان و ماسه میریزیم میبینیم این 2 تا آجر به هم دارن میچسبن, همین کار رو اگه ده ها بار تکرار کنیم میبینیم یهو یه دیوار ساخته شد و بعد مشتاق میشیم 3 طرف دیگه رو هم با این روش درست کنیم و اونوقت یه چهار دیواری داریم !! با نگاه کردن به این چهار دیواری سادمون حس خوبی بهمون دست میده و مغزمون فعالیتش چند برابر میشه تا با یک راه حلی یه سقف هم به این اضافه کنیم...
و به این ترتیب با روش جزء کل میتونیم در هر زمینه ای مسئله رو به قسمت های کوچک تر بشکنیم و با حل کوچکترین و اولین قسمت مغزمون تو روال میفته و بعد میتونیم به قسمت های دیگه فکر کنیم.

دو بار فکر کنیم : تو هر زمینه ای بعد فکر کردن و رسیدن به یک حل مسئله, سریع کار رو انجام ندیم و یک بار دیگه فکر کنیم ببینیم شاید راه بهینه تر و بهتری هم باشه !!

بازی های کامپیوتری : انجام بازی های کامپیوتری که فکر مارو درگیر میکنه شدیدا میتونه کمک کننده باشه و باعث بشه یک دید باز تر به محیطمون داشته باشیم و یک جور ورزش مغز هستش.

افکار پارانوئیدی : پارانوئید یه بیماری روحی هستش که باعث شکاکیت و بی اعتمادی میشه که به بیماری روشن فکران هم معروفه و جالبه بدونید افراد مبتلا به پارانوئید فوق العاده باهوش و با خلاقیت بالا هستن که از جمله میشه به آیزاک نیوتن, وینستون چرچیل, بتهوون, فرانتس کافکا, ونسون ونگوگ, زیگموند فروید و خیلی های دیگه اشاره کرد, و دلیلش هم اینه که شک و بدبینی بیش از حد باعث میشه رو هر مسئله ای زوم بشیم و دنبال استدلال و دلیل محکم باشیم و نورون های مغزی میلیون ها برابر بیشتر از حد معمول کار بکنن...
خب قرار نیست کسی خودش و بیمار بکنه و فقط کافیه روی امور یکم دید پارانوئیدی داشته باشیم تا حداقل فعالیت مغزمون بالا بره در نتیجه باعث بالا رفتن خلاقیت درونمون بشه !

نتیجه گیری

در این مقاله اول فهمیدیم که اصلا توانایی حل مسئله یعنی چی و چه کاربردی داره و اینکه چه افرادی نیاز دارن تا توانایی حل مسئله بالاتری داشته باشن.
بعد توضیح دادم که چه عواملی روی توانایی حل مسئله رو انسان تاثیر گذار هستن و در نهایت راهکارهایی رو معرفی کردم که میتونه قدرت توانایی حل مسئله رو تو ما تقویت کنه.