قوانینی که در زیر آماده کرده ایم اگرچه ممکن است جامع نباشد، اما پس سال ها تجربه در زمینه برنامه نویسی و فناوری اطلاعات، فهرستی است که در ذهن من همیشه وجود دارد. امیدوارم این موارد برای شما هم مفید باشد.
این قاعده بیان میکند که: "همیشه محل اردوگاه را تمیز تر چیزی که از اول بوده است، تحویل دهید"، این یک قانون عالی برای زندگی است. وقتی چیزی تحویل شما میشود، سعی کنید در انتها چیزی بهتر تحویل دهید، حتی اگر شما باعث بی نظمی آن نبوده باشید.
این کار یکی از قوانین پیشاهنگی است. دقیقا همین مورد در مورد برنامه نویسی نیز صادق است. وقتی کدی را تحویل میگیرد، سعی کنید آن را تمیزتر تحویل دهید. اگر در حال خواندن کدهای برنامه ای هستید که توسط شخصی دیگر نوشته شده است و درک آن سخت است و مدتی را برای فهم آن صرف کرده اید، در نهایت تلاش کنید تا کدها را خواناتر کنید.
یک نسخه مینیمالیستی از این قانون بیشتر شبیه به آواز خواندن در توالت های عمومی است. ما باید حداقل شرایط موجود را بدتر نکنیم. باید به یاد داشته باشیم که کدهایی که مینویسیم در آینده ممکن است قرار باشد توسط افراد دیگری مورد استفاده قرار بگیرید، پس بیایید زندگی آنها را سخت تر نکنیم.
توسعه دهندگان نرم افزار در پیاده سازی راه حل ها واقعاً عالی هستند. ما زبان ها، الگوها، کتابخانه ها، چارچوب ها و موارد دیگری را به خوبی میشناسیم و نحوه استفاده از آنها را می دانیم. مشکل این است که اغلب کارهایی که ما انجام می دهیم از دیدگاه کسب و کاربی معنی است.
برخی از ویژگی هایی که در حال توسعه آنها هستید، ممکن است کپی کردن از موارد موجود باشد و صاحب کسب و کار از آنها اطلاع ندارد. در برخی موارد این ویژگی ها اصلا مورد توجه قرار نمیگیرند و هیچ کاربری از آنها استفاده نمیکند. این کار اتلاف وقت، پول و انرژی است. برنامه ای که مینویسید باید نیاز کاربران یک کسب و کار را رفع کند و قرار نیست برنامه نویسان دیگر را راضی کند.
توسعه دهندگان کسانی هستند که هر روزه با برنامه کار می کنند. آنها همه ویژگی ها را می دانند حتی اگر کسی از آنها استفاده نکند. بعضی اوقات کارهایی که به نظر می رسد از منظر کسب و کار آسان باشد، ماه ها زمان برای توسعه آن نیاز است، پیاده سازی برخی از این قابلیت ها تقریبا غیر ممکن به نظر میرسد و معمولا دلیل آن عدم ارتباط بین افرادی است که یک ویژگی را اجرا می کنند و افرادی که درخواست آن را دارند. تفاوت زیادی بین دو مورد پایین وجود دارد.
مورد اول بسیار سر راست است و شاید هیچ سوالی درباره آن وجود نداشته باشد. اما مورد دوم کمی سخت تر است زیرا باعث می شود شما درباره دلایل آن فکر کنید و سپس میتوانید در مورد مسئله مطرح شده راه حل های خود را مشخص کنید. سؤالات زیادی در مورد جزئیات، الزامات عملکردی، ویژگی های کیفیت و سایر موارد وجود خواهد داشت. راه حل بدست آمده نیز بسیار کامل خواهد بود، زیرا در مورد مشکل تفکر کرده اید.
بسیار وسوسه کننده است که گاهی اوقات برخی از بخش ها را کوتاه کنید، از تست ها عبور کنید و آنها را به آینده موکول کنید. در بیشتر موارد، اگر برنامه شما به خوبی کار کند همین کارها را هم انجام میدهید. اما مشکلی که شما خواهید داشت اینست که احتمالاً چنین برنامه ای در نهایت با شکست روبه رو میشود. پس از آن رفع خطا ها نیز در آن مشکل خواهد بود.
هزینه کل مالکیت یک برنامه، جمع هزینه های مربوط به تلاش های صرف شده از ابتدای توسعه، استقرار، نگهداری و تمام مراحل بعدی خواهد بود. اگر در حین توسعه از راه های میانبر استفاده کنیم، شاید هزینه ها در ابتدا کم شود و ممکن است سریعتر پیش روید، اما تعمیر و نگهداری برنامه در آینده وحشتناک خواهد بود، کاربران ناراضی خواهند بود و در کل همه چیز گران تر از آنچه باید برای شما رقم خواهد خورد. پس همیشه بهتر است هزینه ها را در همان ابتدای کار انجام دهید.
در برنامه نویسی بسیاری از قوانین عالی در قالب کلمات کلیدی و اختصار وجود دارد: DRY ،KISS ،YAGNI ،SOLID از جمله این موارد هستند. SOLID مجموعه ای از قوانینی است که باید به پاکسازی کد های شما کمک کند و از مشکلات متداول جلوگیری کند.
این اصول می توانند چک لیستی عالی برای کد شما قبل انتشار آنها در مخرن مربوطه باشد. آیا این کلاس از اصل مسئولیت واحد پشتیبانی می کند؟ آیا می توان این کلاس را توسط یک سلسله مراتب دیگر جایگزین کرد؟ این سوالات و پاسخ دقیق به آنها میتواند تا حدی زیادی از بروز مشکلات بزرگ در آینده جلوگیری کند. درک و استفاده آگاهانه از هرکدام از این قوانین، شما را به یک برنامه نویس بهتر تبدیل کرده و باعث افزایش کیفیت کدهای شما می شود.
در بیشتر موارد، شما اولین کسی نیستید که می خواهید مشکلی را که با آن روبرو هستید حل کنید و یا شما اولین کسی نیستید که قرار است یک ویژگی خاص را پیاده سازی کند. هزاران CRM ،CMS ، سیستم های بانکی، چت ها ، فروشگاه های آنلاین و ... وجود دارد که میتوانید به آنها فکر کنید.
ممکن است سیستمی که شما در حال توسعه آن هستید در بازار بهترین باشد یا ویژگی های بسیار پیشرفته و منحصر به فردی را که هیچ کس دیگری در اختیار ندارد را ارائه دهد. وقتی قرار است یک برنامه بزرگ را پیاده سازی کنید، بهتر است از الگوهای طراحی استفاده کنید.
بسیاری از این الگوها برای کدهای شما ساختار مناسبی را فراهم می آورند که در آینده بتوانید برنامه خود را بهتر مدیریت و نگهداری کنید. الگوهای طراحی زیادی وجود دارد که اگر علاقه مند باشید میتوانید آنها را مطالعه کنید، کافی است در اینترنت الگوهای طراحی و یا دیزاین پترن ها را جستجو کنید.
توسعه نرم افزار به دلیل ماهیت وظایفی که دارد، خود یک کار پیچیده است. آن را پیچیده تر از چیزی که هست، نکنید. گاهی اجرای برخی از قوانین کسب و کار با به کار بردن چند if در توابع مربوطه وسوسه انگیز خواهد بود.
با این کار اگرچه، توسعه سریعتر خواهد شد، اما کدها دشوارتر میشوند، و اضافه کردن ویژگی های جدید باعث پیچیدگی آن می شود. در این میان اگر چیزی اشتباه پیش برود، فهمیدن دلیل آن دشوارتر خواهد بود. دقت داشته باشید که برای شما خوانایی کدها همیشه باید از عملکرد آنها اهمیت بیشتری داشته باشد
برنامه نویسی یک فعالیت اجتماعی است و می طلبد که برای کدنویسی از دیگران کمک بخواهید و نظرات آنها را بشنوید. دوران پیاده سازی برنامه ها توسط یک فرد به پایان رسیده است و به اشتراک گذاشتن تخصص و تجربیات اهمیت بیشتری پیدا کرده است.
در بدترین سناریو افرادی که با آنها صحبت می کنید هیچ کمکی به شما نخواهند کرد، اما به احتمال زیاد بازخورد ارزشمندی را دریافت خواهید کرد. ممکن است فردی که در برنامه نویسی با او همکاری میکنید مشکلاتی را در راه حل پیشنهای شما پیدا کند. در نتیجه همیشه سعی کنید در یک تیم کار توسعه را پیش ببرید.
پیدا کردن اشکالات در اوایل کار بسیار مهم است و باعث صرفه جویی در تلاش و زمان شما میشود و البته شما را از تماس مشتریان عصبانی حفظ میکند. کشف زود هنگام مشکلات باعث می شود آنها راحت تر حل شوند.
وقتی در حال توسعه برنامه هستیم، قادر به یادآوری تمام جزئیات و منطق موجود در مورد یک قطعه خاص از برنامه خواهیم بود. در این حالت هزینه رفع اشکالات خیلی کمتر از حالتی است که از نوشتن کدهای ما یکسال گذشته است. هزینه رفع اشکالات با گذشت زمان بصورت نمایی رشد می کند. بنابراین تست ها را هیچگاه فراموش نکنید.
اشتراک دانش همیشه یکی از اصول جامعه نرم افزار بوده است. بیشتر اطلاعات در حوزه برنامه نویسی به زبان انگلیسی نوشته شده و به راحتی در دسترس است. این زبان در حال حاضر محبوب ترین زبان در سراسر جهان نرم افزار است.
اگر قادر نباشید به زبان انگلیسی بنوسید یا بخوانید، زمان و فرصت های زیادی را از دست میدهید. علاوه بر این، نحو تقریباً هر زبان برنامه نویسی به طور پیش فرض به زبان انگلیسی نوشته شده است. زبان بسیاری از انجمن ها و سایت های پرسش و پاسخ بزرگ در حوزه برنامه نویسی به انگلیسی است.
مردم به راحتی نمی توانند چندین کار را به یکباره انجام دهند. توسعه نرم افزار مستلزم استفاده از مفاهیم انتزاعی و اغلب ساختن مدلهای ذهنی کاملاً پیچیده است. اگر حواس پرت شدید یا شروع به کار بر روی چیز دیگری کردید، تمرکز خود را از دست میدهید و باید از ابتدا شروع کنید. علاوه بر این، مطالعات متعددی وجود دارد که ثابت کرده است که انجام چنیدن کار همزمان تأثیر منفی بر عملکرد، بهره وری و ضریب هوشی دارد.