محمد
محمد
خواندن ۵ دقیقه·۳ ماه پیش

مواجهه با پروژه جدید

legacy codebase
legacy codebase

وقتی کارتون رو تو محیط جدیدی شروع میکنید و قرار روی پروژه ای ک قبل از شما چندین نفر اون رو توسعه دادن کار کنید شیوه مواجهتون با پروژه و اصطلاحا Entry point شما خیلی مهمه

چرا مهمه؟ به چند دلیل

  • بتونید با دید بازتر و با اشراف به دامین پروژه مشارکت در توسعه محصول رو شروع کنید
  • از استایل و قرارداد هایی ک پروژه بر اساسش تا اینجای کار توسعه داده شده پیروی کنید و در صورت نیاز اصلاحشون کنید


تو این مطلب میخوام یکم در مورد مواجه خودم با پروژه جدید ک قرار روش کار کنم بنویسیم امیدوارم ک کاربردی باشه

  • مهمه ک از کجا شروع کنید
  • تفکیک محیط های توسعه تست و عملیاتی و مهیا کردن محیط توسعه
  • خوندن داکیومنتیشن (در صورت وجود)
  • اجرای پروژه و آشنایی با قسمت های مختلف
  • اشراف روی فرایند های احراز هویت و کلا اشراف به life cycle درخواست ها اینک دقیقا چ بلایی سر درخواست میاد از لحظه ای ک دریافت میشه تا لحظه ای ک پاسخ داده میشه مستقل از بیزنس لاجیک مربوط به هر resource
  • اشراف روی ساختار کلی پروژه و فولدربندی ها
  • سعی کنید تو فرایند مطالعه سورس کد و اشراف به قسمت های مختلف پروژه در صورت نیاز به تغییر نام و ریفکتور های کوچیک رو انجام بدین و اگر بتونیم تو همین فرایند انبردینگ با کامنت گذاری (مثلا JSDOC) ورودی خروجی و کلا عملیاتی ک هر متود یا تابع انجام میده رو مستند کنید اینجوری فرایند انبردینگ برای خودمون و بقیه در آینده سریعتر انجام میشه
  • دیزاین دیتابیس جداول و روابطشون رو متوجه بشید
  • خودتون رو اول کار درگیر جزئیات نکنید
  • اگر کدبیس خیلی با استایل شما فرق داشت سعی کنید استرس نگیرید قضاوت نکنید غر نزنید و ناله نکنید و روحیه مثبت و سازندتون رو حفظ کنید همیشه قرار نیست همه چی بر وفق مرادتون باشه شما استخدام میشید برای کمک کردن ب پیشبرد پروژه حالا اینک پروژه تو چ فازی هست یا اینکه تا چ حد بر اساس اصول و استانداردها پیش رفته یکم ب انتخابتون تو مسیر پیدا کردن شغل و خیلی زیاد به شانستون بستگی داره ممکنه تو ی شرکت متوسط ب ی پروژه واقعا خوب جوین بشید و یا تو ی شرکت خیلی بزرگ ب ی پروژه ن چندان خوب
  • لزوما هر چیزی ک میبینی تو پروژه درست نیست و همیشه بدهی فنی وجود داره
  • لزوما هرچیزی ک تو فکر میکنی درسته درست نیست شاید با پیاده‌سازی ی بخشی مشکل داری ولی دلیلی بر اشتباه بودنش هم نداری و صرفا چون با دست خط تو متفاوت حس خوبی بهش نداری
  • وقتی میخوای ی ماژولی تابع یا کلا هر قسمتی رو بفهمی کارش چیه ببین کجاها استفاده شده (اگر جایی استفاده نشده احتمالا باید پاک میشده)
  • با ناله کردن و ایراد گرفتن از پروژه شما برنامه نویس بهتری ب نظر نمیای اگر حرفی میزنی یا مشکلی رو مطرح میکنی براش دلیل و حتما راهکار داشته باش، وگرنه نیاز نیست حرف بزنی
  • حتما وقتی داری سورس رو مطالعه میکنی و نکته ای ب ذهنت میرسه ک بنظر میشه بهبود داد نوت بردار تا تو زمان مناسب بهش مراجعه کنی و شروع ب ریفکتور پروژه کنی و دوباره وقت بابت پیدا کردن تشخیص و شناسایی اون موارد نکنی(هر چند ک شاید هیچوقت زمان مناسب نرسه😶)


البته ک قبل از همه این موارد تسلط روی پلتفرم اون پروژه و آشنایی با ابزار هایی ک استفاده شده از نیازمندی های این موضوع هست


سخنی با کسی ک درحال توسعه ی محصول هست

  • سعی کنید استاندار های کار خودتون رو بدونید و جوری کار کنید ک نفر بعدی ک میخواد با کدبیس کار کنه کمتر متعجب بشه
  • همیشه جوری کد بزنید ک خوانا باشه پیچیدگی بیش از حد هنر نیست هنر ساده انجام دادنشه
  • حتی اگر تنها روی یک پروژه کار میکنید جوری کد بزنید ک ب راحتی بشه نیروی جدید رو روی پروژه انبرد کرد
  • نام گذاری و Formatting رو جدی بگیرید پروژه حتما کانفیگ Formatter داشته باشه تا تو سیستم تمام توسعه دهنده ها فرمت کد درست باشه و تغییرات بیخود فقط بخاطر تفاوت کانفیگ Formatter رو سیستم توسعه دهنده ها نداشته باشیم
  • در مورد dependency های پروژه تا حد ممکن سعی کنید ب روز نگه دارید و از تغییراتی ک ممکنه بخاطر ی break change بدید نترسید گاهی ممکنه اون آسیب پذیری یا مشکلی ک با اون break change حل شده بیشتر ب شما آسیب بزنه
  • حداقل ورژن مورد نیاز برای dependency های پروژه رو حتما تو کانفیگ فایل اضافه کنید مثلا ورژن نود مورد نیاز برای ی پروژه node.js
  • اگر تست نمینویسی فایلشو الکی نساز دوست من😶
  • آدرس ها و username password ها و کلا هر چیزی ک ممکنه تو محیط های مختلف dev و test و production متفاوت باشند و یا اطلاعات حساسی هستن رو حتما بذار تو فایل env و هارد کد نکن
  • چیزی ک استفاده نمیکنی رو نگه ندار تو پروژه بخاطر این ک شاید ی روزی استفادت بشه (همونطور ک اصل YAGNI میگه)
  • ی جوری conditional کد بزن ک else و else if نزنی تو کد. مثلا شرطی رو چک کن ک به محض برقرار نبودنش اجرای اون تابع متوقف بشه (Guard pattern)
  • این ک خیلی هم کدت رو specific زبون خودت بنویسی زیاد جالب نیست ب نظرم جایی که امکانش هست و از نظر کارآیی تفاوتی نداره از استایلی برای کدت استفاده کن ک اگر کسی از زبون و پلتفرم دیگه کدت رو بخونه متوجه بشه این عدم متکی بودن ب یک زبون برای خود آدم هم بنظرم بهتره حتی اگر ب نظر تمیز تر نیاد


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

پروژهبرنامه نویستوسعه محصولبک اندتجربه کاری
شاید از این پست‌ها خوشتان بیاید