درس گرفتن از اتفاقاتی که در جنبههای مختلف زندگی میافتد برای کسب موفقیت لازم و ضروری است و نیاز به توضیح نیست که حتی در برنامهنویسی هم تجربیات زیادی برای استفاده در دیگر جنبههای زندگی وجود دارد که در این پست قصد داریم به برخی از مهمترین آنها اشارهای داشته باشیم.
فلوچارتها همه چیز را آسان میکنند
برخی برنامهنویسان، به خصوص آنهایی که تحصیلات آکادمیک دارند، قبل از نوشتن حتی یک خط کد ابتدا به فلوچارت ساختن میپردازند و دلیل این مسئله هم آن است که نوشتن یک برنامهٔ کامل بدون داشتن یک دید کلی نسبت به آنچه قرار است به عنوان خروجی در معرض دید کاربران قرار گیرد سخت است بهخصوص اینکه اگر بخواهید نرمافزاری با کارآیی پیچیدهای بنویسید.
برنامهنویسان باتجربه وقتی پروژههای بزرگی را شروع میکنند، برای مدیریت بهترش آن را به چندین بخش (ماژول) تقسیم کرده سپس گام به گام هر قسمت را تکمیل میکنند (این فرآیند همچون ساخت یک خودرو است بدین شکل که ابتدا اجزای مختلف آن را میسازند سپس آنها را روی هم سوار میکنند.) و نیاز به توضیح نیست که استفاده از فلوچارتها، که الگوریتم به کار رفته در نرمافزار را به صورت بصری نشان میدهند، آسانتر از نوشتن همان قسمت به صورت جملهای روی کاغذ یا تصور کردن به صورت ذهنی است.
همین موضوع در زندگی روزمره هم صادق است؛ بدین صورت که مثلاً وقتی تصمیم میگیرید راهی برای پرداخت قرضهای خود پیدا کنید یا پول برای خرید دیوایس مورد علاقهٔ خود جمع کنید یا دیگر مشکلات پیچیدهٔ زندگی خود را حل کنید و یا حتی پروژهٔ کاری خود را به اتمام برسانید، همهٔ این قضایا که دارای ظاهری پیچیده هستند اما وقتی که شروع به کشیدن روند اجرای آنها روی کاغذ میکنید و برای هر اتفاقی که ممکن است رخ دهد راهحلی در نظر میگیرید و مشکلات پیشرو را از ابتدا پیشبینی کرده و راهحلی برای آنها در نظر میگیرید، به شکل به مراتب بهتری قادر به مدیریت آنها خواهید بود.
یک کار را دو بار تکرار نکنید
در توسعهٔ نرمافزار کدهایی که قبلاً نوشتهایم را میتوانیم در پروژههای جدید نیز استفاده کنیم. برای مثال ممکن است تابعی که برای ثبتنام کاربران در سایت نوشتهاید را بعداً نیاز داشته باشید و از همین روی منطقی به نظر میرسد که چنین فانکشنی را در قالب یک هِلپِر نوشته تا با حداقل دیپندنسی (وابستگی) به سایر بخشهای اپلیکیشن بتوان آن را در دیگر پروژهها مورد استفاده قرار داد.
در زندگی روزمره هم قضیه دقیقاً به همین صورت است به طوری که اگر میخواهید در زمان خود صرفهجویی کنید، سعی کنید که تا حد ممکن کارهای تکراری را مکانیزه کنید.
هر چیزی را مستند کنید
برای هر برنامهنویسی وسوسهانگیز است تا بدون آنکه به مستندسازی بخشهای مختلف سورسکد خود بپردازد، شروع به کدنویسی کند و نیاز به توضیح نیست که مستندسازی کدها بدین معنی است که کار هر بخش از کدها را مشخص کنید که هدف از نوشتن آنها چه بوده و هر بخشی دقیقاً چه کاری انجام میدهد. از آنجا که چنین کاری وقتگیر است، در ابتدا تاحدودی بیهوده به نظر میرسد اما زمانی که بعداً خواستید از آن کدها استفاده کنید یا شروع به تغییر آنها کنید، آن وقت اهمیت کامنتنویسی و مستندسازی را درک خواهید کرد.
مقولهٔ مستندسازی میتواند در بخشهای مختلف زندگی کاربردی باشد؛ از به یاد داشتن تاریخ تولد و سالگردها گرفته تا نگهداری گزارشهایی از کارهای روزانه و دلایل مرتبط با آنها. اعتماد به حافظهٔ خود برای نگهداری از اطلاعات روزانه کار اشتباهی است چرا که زندگی روزانه پر از اتفاقاتی است که برای هر شخصی اتفاق میافتند و ذهن باید تمامی آنها را ثبت کند؛ بنابراین ممکن است برخی اتفاقات مهم از یادتان بروند.
همیشه یک راه فرار برای خود باقی بگذارید
یکی از بزرگترین مشکلات برنامهنویسان مبتدی، حلقههای بدون پایان (Infinite Loop) است که این حالت وقتی اتفاق میافتد که حلقه به یک شرط نیاز دارد تا پایان یابد اما هرگز آن به شرط نمیرسد بنابراین نرمافزار در حلقه میماند و هرگز از آن خارج نمیشود و منابع سیستم مثل مموری و پردازنده تا حد ممکن درگیر شده و این اتفاق تا زمانی به طول خواهد انجامید که آن فرایند اصطلاحاً Kill شود. بنابراین زمانی که حلقهای در اپلیکیشن خود ایجاد میکنید که مقدار زیادی از قدرت پردازندهٔ کامپیوتر را ممکن است بگیرد، حتماً یک شرط ثانویه هم در نظر بگیرید که اگر مثلاً اپلیکیشن شما به مقدار ایکس ثانیه در آن حلقه ماند، شرط دوم عملی شده و از حلقه خارج شوید.
در زندگی هم حتی زمانی که فکر میکنید با برنامه کارها طبق روال خود پیش خواهند رفت، ممکن است مشکلی در روند زندگی شما به وجود بیاید. مثلاً برای آخر هفته برنامهٔ تفریح خارج شهر چیدهاید اما ممکن است شروع بارندگی برای عملی ساختن برنامهٔتان مشکل ایجاد کند. راه فرار در زندگی به این معنی است که برای برنامهریزیهای خود بدترین حالت ممکن را هم در نظر بگیرید و برای آن پیشاپیش راهحلی پیدا کنید.
هنگامی که کار تمام شد، منابع سیستم را آزاد کنید
درس آخری که از برنامهنویسی میتوان گرفت این است که منابع سیستمی را آزاد کنید! اپلیکیشنی خوب است که بعد از اِتمام کار، منابع مورد استفادهٔ خود را آزاد میسازد. مشکلی که اصولاً در اپلیکیشنهایی که دارای طراحی ضعیف هستند پیش میآید، ناتوانی در مدیریت حافظهٔ سیستم و مشکلات حاصل از آن است.
در زندگی شخصی، هر کدام از ما نیز دارای منابع محدودی هستیم که در اینجا منظور از منابع چیزهایی همچون زمان، انرژی، انگیزه و غیره است. به محض اینکه کاری را به اِتمام میرسانیم، میبایست همچون آزاد کردن مموری در کدنویسی، منابع خود را آزاد کنیم تا توان مقابله با دیگر جنبههای زندگی را داشته باشیم.
حال نوبت به نظرات شما میرسد. فکر میکنید چه درسهای دیگری وجود دارد که دولوپرها میتوانند از کدنویسی در زندگی روزمرهٔ خود بگیرند؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.