Developer Experience معیاری که نادیده گرفته شد


قابل استفاده بودن و موفق شدن یک نرم افزار به عوامل متعددی بستگی دارد. اما یکی از مهم ترین این عوامل، تجربه کاربری (UX) و در یک نمای کلی تر، تجربه مشتری (CX) است. در واقع، تجربه ای که ما برای کاربر می سازیم کلید موفقیت نرم افزار است.

سوالی که در اینجا مطرح می شود این است که چگونه می توانیم تجربه کاربری خوبی را برای کاربران خود رقم بزنیم؟

مهم ترین عنصر در اینجا، بهبود دوره ای نرم افزار با استفاده از بازخورد کاربران است. ما باید نرم افزار را به گونه ای تغییر دهیم که نیازهای کاربران را به طور کامل برآورده کند. این امر مستلزم ایجاد تغییرات مداوم در نرم افزار است.

مشکلات ناشی از تغییرات مداوم

برای مثال، اگر نرم افزار را با استفاده از یک زبان برنامه نویسی سطح بالا مانند جاوا یا سی شارپ نوشته باشیم، اعمال تغییرات به معنای تغییر کلاس ها، توابع، ساختار فایل ها و ... خواهد بود. این تغییرات مداوم و همچنین کدهای نوشته شده توسط افراد مختلف با سبک ها و دست خط های متفاوت، پس از مدتی code-base را به وضعیتی غیرقابل توسعه تبدیل می کند.

در این وضعیت، درک ساختار کد برای برنامه نویسان دشوار شده و آنها از تغییر کد موجود اجتناب می کنند. در عوض، آنها ترجیح می دهند توابع را به جای استفاده reuse یا extend، از نو بازنویسی (rewrite) کنند. زیرا بازنویسی معمولاً ساده تر از درک کد موجود و تغییر آن است.

با گذشت زمان و افزایش عمر نرم افزار، تعداد این توابع موازی با سبک های مختلف کد نویسی افزایش می یابد. در اینجاست که به دلیل دشوار بودن درک و نگهداری کد، مفهوم "Legacy Code" متولد می شود.

در واقع، Legacy Code کدی نیست که عملکرد درستی نداشته باشد، بلکه کدی است که هزینه اعمال تغییرات در آن بالا است. این هزینه بالا به طور مستقیم با میزان درک کد توسط توسعه دهندگان رابطه دارد.

رابطه بین Developer Experience و Customer Experience

متأسفانه، این رابطه اغلب نادیده گرفته می شود. به ندرت می بینیم که در انتخاب تکنولوژی ها و معماری ها، به داشتن یک IDE خوب و Learning Curve کوتاه توجهی شود. در عوض، تمرکز همیشه بر روی رفتن به سمت لبه تکنولوژی و دنبال کردن ترندها است. غافل از اینکه تجربه توسعه دهنده (DX) به طور مستقیم تجربه مشتری (CX) را تحت تاثیر قرار می دهد. و در فضای دیگر حتی تعادل بین کار و زندگی برنامه نویسان را به هم میزند زیرا با یک موجود پیچیده به نام Legacy Code طرف هستیم که رفتار آن برای ما قابل پیش بینی نیست و تخمین ها غلط از آب در می آیند.

حال این سوال پیش می آید که چگونه می توانیم DX را بهبود ببخشیم؟

پاسخ در یک کلمه خلاصه می شود: سادگی

سادگی در همه سطوح، از کوچکترین ماژول ها تا معماری کلی نرم افزار برای Integrate کردن این ماژول ها.

سادگی کد را قابل فهم تر، قابل نگهداری تر و قابل توسعه تر می کند. همچنین، سادگی باعث می شود که توسعه دهندگان به جای بازنویسی کد، از آن مجددا استفاده کنند یا آن را گسترش دهند چون کد ساده، به سادگی هم درک می شود. در نهایت، سادگی منجر به کاهش هزینه های توسعه، افزایش سرعت توسعه نرم افزار و ماندگاری code-base می شود.