این سبب ساز شد که اینجانب با دو نفر حقیقتا جذاب مذاکره کنم: C. Jordan Ball(در مقام نخستین یا این که دوم از ۶۵،۰۰۰ + استفاده کننده بر روی Coderbyte ) و V. Anton Spraul تالیف کننده کتاب \" مانند یک نرم افزار نویس تصور کنید: یک پیشگفتار برای حل مساله خلاقانه \".
اینجانب از آن ها به عبارتی سوال ها را پرسیدم و در نظر گرفتن بزنید چی شد ؟ جوابهای آن ها نسبتا مشابه هم بود !
خیلی زود، شما هم آنان را خواهید دانست.
نکته فرعی: این بدین معنی وجود ندارد که آنان همگی امور را مثل هم اعمال دادند. تمامی با هم فرق داراهستند. تو با اینجانب فرق داری. البته درصورتی که با اصولی آغاز فرمایید که تمامی ما با آن موافق هستیم ، عالی میباشد، شما خیلی زودتر از این امور را اعمال خواهید اعطا کرد.
او می گوید: \" تعالیترین خطا اینجانب این میباشد که برنامه نویس ها نوعمل به مکان یادگیری روش حل خطاها، روی یادگیری فرمان گویش تمرکز می نمایند .\" V. Anton Spraul
براین اساس، هنگامی با یک ایراد تازه مواجه شدید ، چه فعالیت بایستی بکنید ؟
این روند عبارتند از :
۱. درک کردن
دقیقا بدانید چه چیزی پرسیده می گردد. اکثر زمان ها خطاها مشقت بار بدین استدلال طاقت فرسا میباشند، زیرا شما آن ها را نفهمیدید ( به همین عامل این اولین گام میباشد ).
چطور بفهمیم که یک نقص را فهم کرده ایم؟ وقتی که می توانید آن را به گویش معمولی توضیح دهید.
آیا به خاطر دارید که بر روی یک خلل گیر کردهاید، آغاز به توضیح آن می کنید، و شما بلافاصله متوجه حفره هایی در منطق میشوید که پیش از این ندیده اید ؟
اکثر برنامه نویس ها این حس را می دانند.
به همین ادله میباشد که بایستی خلل خویش را یادداشت فرمایید، یا این که یک نمودار ازش ترسیم فرمائید، یا این که به یک نفر دیگرتوضیح دهید.
\" در حالتی که نمیتوانید چیزی را در وضعیت بی آلایش توضیح دهید، آن را شعور نکرده اید \" - Richard Feynman
۲. اپریزی
سوای یک اپلیکیشن به سمت حل خلل شیرجه نروید ( و به نوعی امیدوارم که سردرگم نشوید ). برای راهکار خویش نرم افزارریزی نمایید !
در صورتی نمیتوانید پروسه ظریف را یادداشت نمایید ، هیچ چیزی نمیتواند به شما یاری دهد.
در نرم افزارنویسی، این بهاین مفهوم میباشد که مستقیما هک را آغاز نکنید. وقتی از مغز خویش را صرف تجزیه و محاسبه مساله و پردازش داده ها فرمایید.
چهت نیل به یک نرمافزار بهتر، بدین پرسش جواب دهید:
\" با دقت به ورودی X، روند ما یحتاج برای رجوع خروجی Y چیست ؟ \"
نکته کناره ای: برنامه نویس ها یک ابزار بسیار کار کشته داراهستند که به کمکشان میاید .... که کامنت ها میباشند!
3. تقسیم فرمائید
دقت کن این مهمترین قدم میباشد.عملکرد نکنید یک ایراد تعالی را حل فرمایید. شما به شیون خواهید بهزمینخورد.
در ازای، آن را به مسائل کوچکتر بشکنید. حل این مسائل کوچکتر بسیار بی آلایش خیس میباشد.
آنگاه هریک از این مسائل خرد را یک کدام از یک کدام از حل نمایید. با معمولی ترین آنها استارت فرمایید. معمولی ترین این میباشد که شما پاسخ آن را میدانید (یا این که در حدود جواب آن می باشید).
بعد از آن، معمولی ترین مساله، مساله ای میباشد که حل آن به سایر بستگی ندارد.
زمانی که هر مشکلی را حل کردید، آنان را متصل نمائید.
اتصال مجموع پایین راهحل های شما راهکار خلل اساسی را به شما میدهد. شادباش میگویم!
این تکنیک یک سنگ بنای حل مورد میباشد. به خیال و خاطر داشته باشید این را. (در شرایطی که ما یحتاج بود، این بخش را مجدد بخوانید).
\"در صورتی بتوانم به هر نرمافزار نویس تازه کار یک مهارت حل مورد را یادگرفتن دهم تکنیک های مسائل را کاهش خواهم اعطا کرد.
از جمله، فرض فرمائید شما یک اپلیکیشن نویس نو می باشید و از شما مراد شدهاست که یک اپلیکیشن را بنویسید که ده تا را می گیرد و سومی عدد تعالی را پیدا میکند. برای یک نرمافزار نویس نو، این میتواند یک تکلیف مشقت بار باشد، حتی درحالتی که فقط نیاز به نرم افزار نویسی مبنا باشد.
در حالتی که شما گیر نموده اید، بایستی اختلال را به چیزی معمولی خیس برسانید. به مکان سومین عدد والا خیس،چطوره بریم اصلی ترین رقم را نسبت به تمامی پیدا کنیم؟ هنوز هم خیلی دشوار میباشد؟ در ارتباط یافتن وسیع ترین عدد در میان سه تا چی؟ یا این که وسیع ترین عدد در میان دو تا؟
خلل را به نقطه ای که میشناسید چطور آن را حل نمائید کاهش دهید و چاره را بنویسید. آن گاه یه خرده ایراد را گشوده فرمائید و راهحل را دستکاری فرمائید تا هم خوانی داشته باشد و ادامه دهید تازمانیکه برگردید به نقطه استارت. . V. Anton Spraul
4. گیر نموده اید؟
اکنون شما احتمالا نشسته اید و فکرمیکنید \" کلیه چیزی خوبه، ولی در حالتی که اینجانب گیر کرده ام و حتی نمیتوانم یک مساله خرد را حل کنم چی؟\"
آغاز یک نفس عمیق بکشید دوم، این عادلانه میباشد.نگران نباش، دوست اینجانب. این برای تمامی رخداد می افتد!
تفاوت دراین میباشد که شایسته ترین برنامه نویس ها یا این که حل کنندگان مسائل بیشتر دربارهی باگ ها یا این که ارور ها نسبت به شما تحریک گردیده اند.
در واقعیت سه چیز میباشد که میتوانید اعمال دهید در هنگام روبرو شدن با این مسائل:
• انواع زدایی: مرحله به مرحله راهحل خویش را دنبال نمائید و در کوشش برای یافت کردن جایی که شما خطا رفتید باشید. برنامه نویس ها بدین دیباگینگ میگویند (در واقع این تمامی کاری میباشد که یک دیباگر جاری ساختن میدهد).
\"هنر اشکالزدایی درین میباشد که آنچه را که حقیقتا به اپ خویش گفته اید را میفهمید، به مکان آن چه درنگ می کردید، که گفته اید.\"Andrew Singer
• مجدد آنالیز فرمایید: یک قدم به عقب بردارید از یک مشاهده کرد دیگر به زمینه نگاه فرمایید. آیا چیزی میباشد که بتوانید به یک راه کلی خیس خلاصه فرمایید؟
\"گه گاه ما در جزئیات خطاها چیزهایی را از دست میدهیم که اصول کلی را رد میکنیم تا ایراد را در یک سطح همگانی خیس حل کنیم. [...]
نمونه کلاسیک این، ولی، انباشته کردن یک لیست زمانبر از اعداد درست پشت سر هم، 1 + 2 + 3 + ... + n میباشد که گاوس جوان به آسانی به n (n + 1) / 2 رسید ، بدین ترتیب از انباشته کردن انها اجنتاب کرد. \"- C. Jordan Ball
نکته فرعی: شیوه دیگر برای حل اختلال آغاز مجدد میباشد. تمامی چیز را تمیز فرمایید و مجدد با چشمانی نو استارت فرمایید. این حقیقتا اثرگذار میباشد.
• پژوهش: گوگل. اصلی وجود ندارد که چه مشکلی دارید، کسی احتمالا آن را حل نموده است. چاره این فرد را پیدا فرمایید در واقعیت این فعالیت را حتی در شرایطی که نقص را حل کردید ایفا دهید! (شما میتوانید از راهحل های دیگرافراد چیزهای متعددی حافظه بگیرید).
هشدار: دنبال راهحل خطاها گران قدر نباشید. تنها درپی حل خطاها کوچکتر باشید. چرا؟ از آن جا که وقتی که شما با مسائل مشغول میشوید (حتی نادر) می آموزید. در صورتیکه چیزی حافظه نگیرید، مجال خویش را هدر داده اید.
تمرین نمائید
بعد از یک هفته انتظار متعددی نداشته باشید. درصورتی که میخواهید یک حل کننده مساله خیر و خوبی باشید، مسائل متعددی را حل فرمایید!
تمرین. تمرین. تمرین. این مورد منجر میشود که شما متوجه گردید که \"این مساله به راحتی میتواند با افزودن این کد به اینجا حل خواهد شد.
چه گونه تمرین کنیم؟
شطرنچ، مسائل ریاضی، سودوکو، Go، Monopoly، بازی های ویدئویی، و...
در واقع، یک الگوی رایج بین اشخاص برنده، عادت خویش به تمرین «حل قضیه کوچک» میباشد. مثلا، پیتر تیل شطرنج بازی می نماید و الن ماسک بازی های ویدئویی را بازی می نماید.
\" Byron Reeves اعلامکرد:\" در صورتی میخواهید مشاهده کنید که فلان بیزنس چهگونه در سه عدد پنج سال آجل به لحاظ رسد، به آنچه رخداد می افتد در بازی های آنلاین نگاه نمایید. \"
Elon [Musk], Reid [Hoffman], Mark Zuckerberg و اکثری دیگر میگویند که بازی ها مبنایی برای توفیق آن ها در ساختن کمپانی هایشان بوده میباشد. \"- Mary Meeker
آیا این بهاین مفهوم میباشد که شما تنها می بایست بازی های ویدئویی را بازی فرمایید؟ به هیچ عنوان.
ولی نکته قابل توجه درباره بازی های ویدئویی چیست؟ صحت دارد، حل مورد!
براین اساس، آنچه شما می بایست اجرا دهید، کشف کردن یک خروجی برای تمرین میباشد. چیزی که اذن میدهد شما مسائل خرد متعددی را حل نمائید.
از جمله، از بحران های اپلیکیشن نویسی لذت میبرم. هر روز اینجانب عملکرد میکنم دستکم یک بحران را حل کنم (معمولا در Coderbyte).
همانگونه که گفتم، تک تک مشاغل الگوهای مشابهی را به اشتراک میگذارند.
سود
هم اکنون شما عالی میدانید که معنای \"درنگ کردن مانند یک اپلیکیشن نویس\" چیست.
شما همینطور میدانید که حل مورد یک مهارت اعتقادوباور نکردنی برای رویش میباشد (یک فرا مهارت میباشد).
در صورتی این کافی عدم وجود، دقت نمایید که چه کارهایی میتوانید اعمال دهید تا مهارت های حل زمینه را تمرین نمائید!
در غایت، اینجانب امید میکنم که با اکثری از مسائل روبرو گردید.
آری صحیح خواندید. دستکم شما میدانید که چه گونه آنها را حل فرمائید! (همینطور، شما خواهید آموخت که با هر راهحل، شما افزایش مییابید).
\"تنها هنگامی که شما فکر میکنید با توفیق یک بازدارنده را از حایل راه و روش بر می دارید وسپس یک کدام از دیگر ظواهر میگردد. البته این چیزی میباشد که معاش را دیدنی می نماید [...]
معاش مراحل شکستن این سختی ها میباشد - تیم ای از خطوط کار کشته که ما بایستی از آن عبور کنیم.
هر توشه چیزی یاد میگیرید.هر توشه، اقتدار، عقل و منظره خویش را گسترش می دهید.
هر توشه، معضل های بیشتری را ناکامی می دهید. تا وقتی که هیچ چیزی باقی نمی ماند: که آن موقع شایسته ترین نسخه از شما میباشد. \"- Ryan Holiday
اکنون برو و چندتا مساله حل کن!