چگونه مانند یک برنامهنویس حرفهای فکر کنیم.
تفکر کدنویسی به این موضوع اشاره دارد که چگونه بتوانیم بدون ازبینرفتن تمرکز، به حل مشکلات و باگهای ایجادشده چه در برنامه و چه در زندگی روزمره بپردازیم. مسلماً این گفته از خدای کدنویسی یعنی استیو جابز را شنیدهاید که میگوید: هرکسی باید کدنویسی را یاد بگیرد، چراکه کدنویسی به اشخاص میآموزد که چگونه فکر کنند.
اینکه چگونه مانند یک کدنویس حرفهای فکر کنیم راهگشای حل بسیاری از مشکلات خواهد بود. ازآنجاییکه کدنویسان موظف به حل باگهای سیستمی هستند تا مورد را رفع نکنند، نمیتوانند به ادامه کار پرداخته و سیستم را جلو ببرند. تفکر یک برنامهنویس حرفهای، به افراد میآموزد که در حل مشکلات نباید کمحوصله بود. مسلماً راهی بهینه میتوان یافت و با دقت و آرامش، سرعت حل مسائل را بالا برده و آنها را پیشبینی کرد.
تفکر برنامهنویس حرفهای
رفع مشکلات روزمره زندگی نیز مانند برطرفکردن باگهای سیستمی، نیازمند ممارست و مهارت است. به همین دلیل این نکته مهم است که چگونه مانند یک برنامهنویس حرفهای فکر کنیم! چنین تجربهای به افراد کمک میکند تا در مقابل سختیهای غیرقابلپیشبینی پیشآمده، کنترل بالاتری بر ذهن خود داشته باشند. بدین ترتیب توانایی روحی، روانی و جسمی آنها تحلیل نرفته و تمرکز خود را بر روی این موضوع نگه خواهند داشت که کدام راهحل مناسبتر است!
اشتباهات مهلک برنامه نویسان تازه کار
ازآنجاییکه برای حل کاستیهای کدنویسی، نمیتوان بهیکباره به دل کدها زده و آنها را زیرورو کرد، مشکلات زندگی را هم نمیتوان بهیکباره حلوفصل کرد. یک کد زن حرفهای زمانی که دچار خطای سیستمی میشود، در اولین قدم به بررسی موبهموی کدها میپردازد. خط به خط آنها را مرور میکند و پس از کشف سرمنشأ خطا، اقدام به اصلاحکرده یا کد را پاک میکند. هیچ خطایی بدون بررسی امکان حل ریشهای نخواهد داشت.
تنوع در راهحل
یکی از موارد بسیار جالب در بروز باگ سیستمهای نرمافزاری و کامپیوتری، آن است که یک مشکل واحد، لزوماً نمیتواند یک راهحل ثابت داشته باشد. همین موارد بر جذابیت کار افزوده و ذهن تحلیلگر و حلال کدنویس را به چالش میکشد. شاید راهی را که هفته پیش برای همین مشکل انجامشده، دیگر به مشکلی مشابه نخورده و نیاز به کشف و شهودی جدید باشد.
همین تفکر چگونه مانند یک برنامهنویس حرفهای فکر کنیم، به دیگر افراد نیز میتواند کمک کرده و آنان را به هنگام مواجه با مشکلات مشابه، دچار استرس و خطا نکند. ذهن باز و هوشمند یک تحلیلگر داده، میتواند به بررسی جوانب امر هر موضوع پرداخته و بدین ترتیب پرسرعتترین، کوتاهترین، سرراستترین، بهینهترین و باکیفیتترین راهحل را بیابد.
ذهن میتواند با طی مراحل یافتن آزمایش، پیداکردن و انجام یک راهحل، راهحل جایگزین در صورت کار نکردن راه اول و ممارست در کار تا رسیدن به نتیجه ادامه دهد. این فرایند رسماً همان راهی است که یک کد زن موفق انجام میشود. حتی بررسی راههای حل گوناگون به شخص این کمک را میکند تا از اتلاف زمان، هزینه، توانایی جسمی و روحی خود دست کشیده و به بهترین نتیجه ممکن برسد.
ممارست و ادامه دادن
برترین کدنویسان هم در حل مشکلات سیستمهای نرمافزاری و اپلیکیشنهای قوی خود، نیاز به تمرین، مطالعه و بررسیهای ممتد دارند. این تفکر که چون من بلدم دیگر نیاز به تمرین نخواهم داشت، دامی بزرگ برای کدنویسان حرفهای است. به همین دلیل ممارست و تمرین شبانهروزی در رفع باگها و خطاهای پیشبینینشده سیستمی، به برنامهنویس کمک میکند تا مهارت حل مسئله خود را بالا برده و به راهحلهای متنوعی دست یابد.
اینکه چگونه مانند یک برنامهنویس حرفهای فکر کنیم، به افراد کمک میکند تا در مهمترین موضوع پیشآمده در خطاهای سیستم زندگی، به بالاترین مهارت ممکن برسد. حتی بعد از آن مرحله میتواند اولویت آنها کسب توانایی حل مسائل گوناگون در عین مشابهت باشد.
بهترین اقتصاددانان، دکترها، مهندسان، هنرمندان و ... تمامی افرادی که به نحوی در جامعه انسانی زندگی و کار میکنند، نیازمند یادگیری چنین مهارتی خواهند بود. شوکه نشدن از بروز مشکلات بزرگ، شکستن آن به قسمتهای کوچکتر در جهت یافتن راهحلهای بهتر، مهارت حل با دقت بالاتر و ... همگی از یک طرز فکر سیستمی کدنویسی شده برخواهد آمد.
مرزبندی چه جایگاهی در این مسیر دارد؟
در تفکر کدنویسی، این نکته حائز اهمیت است که خطاهای ایجادشده را نمیتوان با یک راهحل برطرف کرد. ممکن است درآنواحد، سیستم دچار چندین مشکل شده و بهقولمعروف از درودیوار ارور و باگ ببارد! تقسیمبندی خطاها از سادهترین و ممکنترینها تا سختترین و زمانبرترین آنها برای برنامهنویس بسیار مهم است. از همین طریق قدمبهقدم به رفع خطاها پرداخته و پلهپله جلو میرود.
از همین نمونه میتوان استفاده کرده و در مقوله چگونه مانند یک کدنویس حرفهای فکر کنیم، میتوانیم به حل مشکلات و ارورهای پیشآمده استفاده کنیم. تفکر مرزبندی کدنویسان، برای تمامی افراد مفید خواهد بود. بدین صورت که خطاها را بهیکباره ندیده و بین آنها مرزکشی انجام شود. بدین شکل، رفع خطاها نیز آسانتر بوده و کدها با یکدیگر قاتی نمیشوند. همین مورد تصدیقکننده این موضوع است که هر مشکل به یک روش حل نشده و بسته به شرایط موجود، میتوان از انواع راهحلها استفاده کرد.
نکته مهم: توجه داشته باشید که این موضوع به آن معنا نیست که هرکسی باید همه چیز را به روشی یکسان انجام دهد، هرکسی با شخص دیگر متفاوت است. اگر شما اصول را رعایت کنید خیلی سریعتر میتوانید به موفقیتهای بسیار بزرگتر دست پیدا کنید.
گامبهگام با تفکر برنامهنویسی
در آزمونهایی مانند کنکور سراسری، زیاد کتابهای آموزشی گامبهگام را دیده و چهبسا از آنها استفاده کرده باشیم. این کتب یک فایده بزرگ داشتند، قدمبهقدم دانشآموز را مبحث آشنا کرده و او را به قلب درس و چالش میانداختند.
چگونه برنامه نویسی تمرین کنیم ؟
بهگونهای که نوجوان نهتنها دچار ترس از حجم بالای مطالب جدید و یادگیری آنها نمیشد، بلکه آن را، به چشم چالشی لذتبخش دیده و برای حلوفصل تمرینها علاقهمند میگردید. در اینجا پیرامون مبحث چگونه مانند یک برنامهنویس حرفهای فکر کنیم، اقدام به توضیح تفکر کدنویسی برای غیرمتخصصان این حوزه پرداخته و اندکی با تفکر به شیوه مهندسان کامپیوتر آشنا میشویم.
نکات مهم درمورد آموزش
آموزش مهمترین قدم در حل خطاست! فردی که آموزش درستی ندیده باشد، باگهای پیشآمده چه در حوزه کدنویسی و چه در سایر حوزههای زندگی را نمیتواند حل کند. یادگیری طرق مختلفی دارد و آموزش در هیچ سنی شرم ندارد. بزرگترین خطاها به این دلیل ناممکن میرسند که ما برای حل آنها آموزش ندیدهایم و نمیدانیم چگونه و از کجا شروع کنیم. چگونه مانند یک برنامهنویس حرفهای فکر کنیم، اولین قدم را در بحث آموزش و یادگیری فنون بر میدارد.
سادهسازی چه اهمیتی دارد؟
هر مشکلی با تقسیمبندی به مقادیر کوچکتر و اولویتبندی مهمترینها تا کماهمیتترینها، سادهتر میگردد. این راهحل بهشدت جواب داده و تمرکز و آرامش بیشتری به برنامهنویس یا تحلیلگر میدهد. پس چرا چنین تفکری را در زندگی روزمره و سایر شغلها به کار نبریم؟ سادهسازی مشکلات، استرس را کم کرده و بهتبع آن راهحلهای فیالبداهه و خلاقیت بیشتری در ذهن افراد ایجاد میشود.
آنتون اسپرول از بزرگان برنامهسازی به این نکته معتقد است که: بهترین راهحل برای حل مسائل گوناگون، تقسیمبندی و سادهسازی آن به قسمتهای کوچکتر است. بدین ترتیب سازندگان برنامه چه حرفهای، چه مبتدی، قادر به حل ریز مسائل بیشتری خواهند خود. در این روند و با حل مشکلات سادهتر، گویی حل خطای بزرگ ناپدیدشده و ناگهان تمامی کاستیها برطرف میگردند.
ثبت اطلاعات
یکی از بهترین راهحلهای موجود در زمینه تحلیل دادهها، بررسی مشکلات و یافتن راهحلها در تفکر برنامهنویس، کشیدن دیاگرامها و بررسی آنها در سیستم است. این کار را در دنیای مجازی انجام داده و مشابه آن را میتوان در دنیای حقیقی، بهصورت نوشتن انجام داد.
ثبت اطلاعات کمک بسیار زیاد در یافتن خطاها کرده و مروری بر اطلاعات واصله میشود. بدین ترتیب راهحلهای بسیاری به ذهن خطور کرده و در رفع خطاها کارساز عمل میکند. ریچارد فاینمن گفتهای دارد بر این مضمون که: اگر مشکل را نتوانی بر روی کاغذ آورده و به توضیح آن بپردازی، یعنی آن را بهخوبی درک نکرده و توانایی مواجه با آن را نخواهی داشت.
مزایای برنامهریزی
برنامهریزی برای حل مشکلات قدمی مهم در رفع خطاهای موجود است. بدین شکل، پس از ثبت مشکلات، میتوان آنها را تقسیمبندی و جهت رفع باگها برنامهریزی تخصصیتری کرد. وقتی فرد با حجمی از مشکلات روبهرو باشد ولی برای آن هیچ زمانبندی و برنامهریزی دقیقی نداشته باشد، بهسرعت دچار گسستگی افکار شده و نمیتواند بر روی راهحل تمرکز کند. بدین ترتیب ایراد پیشآمده حل نشده، منجر به دردسرهای آتی میشود.
برنامهریزی چه به برنامهنویس و چه به سایر افراد کمک میکند تا طبق فهرستبندی مدون و درستی پیش رفته و این نکته را یاد بگیریم که چگونه مانند یک کدنویس حرفهای فکر کنیم. اگر بدون برنامهریزی و بهسرعت، به داخل مشکلات رفته و به حل آنها بپردازیم، مطمئناً در قسمتی از کار ناامید شده و شیرازه عملیات از دستمان خارج خواهد شد.
اقدام کردن برای کار با کدها
پس از انجام کلیه مقدمات، برنامهنویس دیگر به ترس و نامطمئنی خود نسبت به موضوع فکر نمیکند، بلکه قدم در راه گذاشته و شروع به کار میکند. هیچ کدزنی از شروع و احیاناً کدهای اشتباه نمیترسد، چراکه میداند میتواند از پس مشکلات برآمده و در صورت بروز هر نوع مشکلی، اقدام به رفع آن کند. همین اعتمادبهنفس در کدنویسان حرفهای است که آنان را قوی کرده و میتواند به دل خطاها و باگهای سیستمی شیرجه بزند.
دیباگ کردن
برای اینکه بدانیم چگونه مانند یک کدنویس حرفهای فکر کنیم لازم است مانند آنان قدمبهقدم جلو رفته و کلیه مراحل کار را بررسی و مرور کنیم. نوشتهها، دیاگرامها، فایلهای صوتی، تصویری و هیستوریها. تمام این موارد سرنخهایی را به برنامهنویس میدهد تا سرچشمه مشکل را یافته و به حل ریشهای آن بپردازد. این کار را در دنیای کدنویسی به دیباگ کردن یا اشکالزدایی می شنایند.
اندرو سینگر در مورد این بخش از کدنویسی معتقد است که: هنر دیباگ کردن در این است که با انجام این کار کد زن متوجه میشود که آنچه میخواسته بگوید و سیستم انجام دهد؛ چقدر با آنچه نوشته و سیستم در عمل متوجه شده و دارد انجام میدهد، متفاوت است!
اهمیت و تأثیر جستجو
هیچ فردی نمیتواند دعا کند کلیه راهحلها را بلد است! چه در دنیای کدنویسی و چه در سایر علوم، بشر هرگز به علم قطعی نرسیده است و برای انجام خطاها و مشکلات پیشآمده، علاوه بر آموختههای قبلی، نیازمند یادگیری مطالب جدید، بهروز و تازه است. اطلاعات بیشماری که در سایتهای ارائه اطلاعات همچون یوتیوب، گوگل و کلیه سایتهای اپنسورس موجود است، دروازهای بهسوی راهحلهای جدید بوده و فرد را در دستیابی به آن یاری میکند.
چگونه مانند یک کدنویس حرفهای فکر کنیم، این نکته را به ما یادآوری میکند که مانند یک برنامهنویس حرفهای نباید هرگز به خود غره باشیم. در هر جایگاه و مقامی که داریم از پرسش، جستجو و کسب اطلاعات جدید نباید حذر کرد. حتی تجاربی که افراد دیگر در مشکلات و خطاهای مشابه داشتهاند، میتواند زمینهساز کشف راهحلهای جدید گردد که فرد را چندین قدم جلوتر ببرد.
بازبینی اطلاعات
کاری که بهترین کدنویسان حرفهای انجام میدهند، بازگشت به عقب و بررسی و مرور کدهایی است که تا آن لحظه زدهاند. این افراد از اصلاح خطاهای گذشته ابایی نداشته و شجاعانه بهمرور عملکرد خود میپردازند. این دیدگاه در بررسیها و مشکلات روزمره سایر افراد نیز میتواند بسیار مثمر ثمر بوده و نتیجهای شگفتانگیز پدید آورد. بازبینی کارکرد گذشته، خطاهای احتمالی و راهحلهای مؤثر آن را نشان داده و تجربهای بینظیر در جهت رفع مشکلات گوناگون ایفا میکند.
یکی از بهترین آموزههایی که بازیابی اطلاعات به افراد میدهد، بررسی جزئیاتی است که از قلم افتادهاند. چگونه مانند یک برنامهنویس حرفهای فکر کنیم میتواند سرآغازی باشد بر این نکته که با دقت به مسائل جزئی، میتوان از بروز مشکلات بزرگتر اجتناب د. حتی میتوان در صورت عدم موفقیت، کلیه اطلاعات را زدوده و مجدد شروع به کارکرد. از شروع دوباره هرگز نباید هراسید!
آپدیت بودن
کدنویسی موفق است که از آموزش، بهروزرسانی اطلاعات و بازآموزی سر باز نزند. حل مشکلات با یادگیری، تمرین و تلاش هر روز راحتتر شده و ذهن را باز میکند. بسیاری از سالمندان، برای فرار از پیری ذهن و مغز، به بازیهایی رو میآورند که تفکر آنها را به چالش بکشد؛ مانند بازیهای فکری، چیستانهای ریاضی و گیمهای کامپیوتری.
آنان گویی به این گفته اعتقاد دارند که چگونه مانند یک کدنویس حرفهای فکر کنیم تا دچار زوال حافظه و عقل نشویم! بازی مغز، ورزشی بسیار موفق است که افراد را از خمودگی و تکراری بودن خارج میکند. بسیار از غولهای کدنویسی دنیا حتی در بهترین حال علاقهمند به یادگیری زبانهای جدیدند. آنان نه برای کسب درآمد که به گفته استیو جابز صرفاً چون کدنویسی جذاب است! اقدام به یاد یادگیری جدیدترینها میکنند.
نتیجهگیری
اینکه چگونه مانند یک برنامهنویس حرفهای فکر کنیم، میتواند ما را با طرز فکر و راهحلهای موجود در ذهن یک فرد خلاق آشنا کند. همچنین همزادپنداری با او به ما یاد میدهد و در رفع مشکلات موجود در سایر زمینهها نیز این طرز فکر استفاده کنیم. روشهایی که کدنویسان برای حل خطاهای سیستمی به کار میبرند، هرگز ناامیدکننده نبوده و در نهایت به حلوفصل آن پرداخته میشود.