codingcogs' logo
developer experience blog post cover

تجربه‌ی دولوپری (DevEx): راز بهتر شدن!

مقدمه

تجربه‌ی توسعه‌دهندگی (DevEx) یا تجربه‌ی دولوپری یکی از مهم‌ترین عوامل افزایش بهره‌وری و رضایت شغلی در تیم‌های نرم‌افزاری است. هرچقدر این تجربه بهبود یابد، زمان و انرژی بیشتری صرف خلق ویژگی‌های باکیفیت خواهیم کرد. در این مقاله با تعریف DevEx، اهمیت آن و اجزای کلیدی‌اش آشنا می‌شویم و با مثال‌های ملموس نشان می‌دهیم چگونه ابزارها و فرآیندها می‌توانند تجربه‌ی دولوپری را ارتقاء دهند.

تجربه‌ی دولوپری یا developer experience چیست؟

تجربه‌ی دولوپری یا DevEx به سیستم‌ها (مانیتور اضافه یا سیستم عامل مانند: ویندوز، لینوکس، داکر، مَک و...)،تکنولوژی‌ها (زبان برنامه‌نویسی، فریم‌ورک‌ها، گیت و ... )، فرآیندها(ورژن کنترل، مدیریت رویداد‌ها و CI/CD و ...)و فرهنگی اشاره دارد که کارایی ما در توسعه‌ی نرم‌افزار را بیشتر می‌کنند؛ چیزهایی که برای راحتی کار و افزایش کارایی به اکوسیستم برنامه‌نویسی ما وارد می‌شوند.

تجربه‌ی دولوپری بهتر به معنی افزایش کارایی، رضایت شغلی و تاثیر گذاری بیشتر است! ما میخواهیم چیزی که می‌سازیم با یک بی دقتی یا حواس پرتی نابود نشود، دردسر زیادی را برای نگهداری، بهبود و رفع خطاهای آن به جان نخریم و از نظر شغلی احساس رضایت داشته باشیم.

برای داشتن تجربه‌ دولوپری بهتر باید تمام ابعاد توسعه‌ی نرم‌افزار خود را زیر سوال ببریم!

  • آیا این ابزار کار من را ساده‌تر می‌کند؟ یا سخت‌تر؟
  • آیا این محیط توسعه به تمرکز من کمک می‌کند؟
  • آیا این فرآیند جلوی اشتباه کردن من را می‌گیرد؟
  • آیا من این سیستم و روش کار را دوست دارم؟
  • آیا من با این کار برنامه نویس بهتری می‌شوم؟

در کنار این مسئله، پاسخ به این سوالات بسیار شخصی است و توسعه‌دهنده‌های مختلف پاسخ‌های متفاوتی به این سوالات برای DX خود می‌دهند. البته بعضی از روش‌های بهبود DX ممکن است برای تمامی اعضای تیم خوشایند نباشد اما در نهایت اثر آن‌ها به صورت کلی مورد نظر ماست!

البته هر تیم، فرهنگ یا سازمان نیز معنای DevEx اختصاصی خود را دارد. مثلا تصویر زیر را برای فرمول GitHub’s DevEx ببینید:

GitHub’s DevEx

در فرمول شرکت GitHub می‌بینید که این موارد از معیارهای سنجش DX هستند:

  • بهره‌وری یا Productivity :
    چقدر سریع یا ساده برنامه‌نویسان می‌توانند تغییرات خود را به کدبیس منتقل کنند.
  • اثرگذاری یا Impact :
    چقدر بی دردسر میتوان یک ایده را اجرایی کرد.
  • رضایت یا Satisfaction :
    محیط یا workflowها یا ابزار چه تاثیر مثبتی روی خوشحالی برنامه‌نویس خواهد داشت.

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

تاریخچه‌ی تجربه‌ی توسعه‌دهندگی

از نظر منطقی بهبود DevEx بسیار ضروری و عاقلانه به نظر می‌رسد. ما می‌خواهیم توسعه‌ی نرم‌افزار را بهبود ببخشیم اما انگار صنعت نرم‌افزار به کندی این تغییرات را قبول می‌کند.

در دهه‌های اخیر توسعه‌دهندگان تغییرات زیادی را در دنیای تکنولوژی دیده‌اند: کتابخانه‌ها و ابزار متن باز، package manager ها، زبان‌های برنامه‌نویسی، سرویس‌ها، ابزار، APIها و ... . در نتیجه‌ی تمام این‌ها، هر برنامه‌نویس میتواند به راحتی اکوسیستمی را بسازد که هر چیزی که بخواهد و یا لازم دارد به راحتی قابل دستیابی باشد.

البته اگرچه توسعه‌دهندگان به تکنولوژی‌های زیاد و مختلفی دسترسی دارند و این تکنولوژی‌ها درهای جدیدی از خلاقیت و رقابت را باز می‌کند، اینکه چگونه از این ابزار و تکنولوژی‌ها استفاده شود به عهده‌ی خود برنامه‌نویسان است. این مسئله منجر وجود عدم یکپارچگی در درک مفهموم DevEx می‌شود. همچنین گسترش سریع دنیای تکنولوژی باعث می‌شود که فشار زیادی به دولوپرها برای یادگیری مباحث جدید وارد شود که در نهایت می‌تواند آن‌ها را از بهبود DevEx غافل کند.

ما به یک دید مشخص نسبت به workflow مناسب برای برنامه‌نویسی نیاز داریم و وقتی بتوانیم این نگرش را پیدا کنیم، باید مطمئن شویم که این workflow به صورت کلی برای ما موثر است و کار ما را بهتر پیش می‌برد!

و هیچ دید مشخصی در تمام طول تاریخ توسعه‌ی نرم‌افزار که مورد قبول همه باشد وجود ندارد!

از DevOps گرفته تا Clean Code
از زبان برنامه نویسی C تا Python
از vanila javascript تا Astro
از VM تا Podman
از Django تا FastAPI
از روش A تا روش B

واقعیت این است که ما آدم‌ها هیچوقت کاملا به توافق نمی‌رسیم و با افزایش تعدادمان هم به توافق رسیدن سخت تر می‌شود!

واقعیت این است که وجود یک دیکتاتوری عاقلانه و خیرخواهانه برای تصمیم‌گیری تیمی ضرورت دارد!

اجزای DevEx

تحقیقات مختلف نشان داده که یک تجربه‌ی دولوپری مثبت و موثر شامل 3 بخش می‌شود:

  1. بازخوردها ( Feedback loops ) که شامل بهبود مداوم کدبیس و تیم توسط یادگیری تیم و تنظیم ابزار می‌شوند.
  2. مدیریت بار پردازشی و نظم دهی به کدها و کدبیس و داکیومنتیشن توسط ابزار
  3. توانایی مشخص کردن وضعیت و flow state برای توسعه‌دهندگان که به آنها کمک می‌کند به راحتی تسک‌ها و وظایف خود را انجام دهند و کار آن‌ها دارای خروجی با کیفیت باشد.

ابزار و سیستم‌ها و پروسس‌های زیادی برای رسیدن به اهداف بالا وجود دارد.

چرا تجربه‌ی دولوپری مهم است؟

تجربه‌ی دولوپری خوب به این علت مهم است که به ما توسعه‌دهندگان اجازه می‌دهد تا با اعتماد بیشتر، و اثر گذاری بیشتر و آرامش خاطر برنامه بسازیم. شاید در دهه‌های گذشته رشد DevEx بسیار پایین بوده ولی در حال حاضر(در واقع از 2019 به بعد) زمان و سرمایه گذاری زیادی توسط شرکت‌های مختلف به DevEx اختصاص داده می‌شود.

مسئله‌ی اصلی در توسعه‌ی نرم‌افزار ظرفیت توسعه است! زمانی که ظرفیت توسعه پُر می‌شود اولین چیزی که از بین می‌رود خلاقیت است! بنابراین بهبود فرآیند توسعه‌ی نرم‌افزار که منجر به افزایش ظرفیت تیم و توسعه شود بسیار ارزشمند است. اما این فقط یک شعار نیست؛ DevEx با زندگی واقعی ما عجیب‌تر از چیزی که فکر می‌کنیم درهم‌تنیده است!

جارو کشیدن و تجربه‌ی دولوپری

مثلاً نظافت خانه برای من همیشه کاری طاقت‌فرسا بوده!

جای جاروبرقی در اتاقی است که وسط خانه‌ی من قرار دارد و هروقت بخواهم از آن استفاده کنم مجبورم آن را به جایی که میخواهم تمیز کنم انتقال بدم. معمولا پذیرایی و آشپزخانه کثیف می‌شوند و هرچند روز یک بار نیاز به نظافت آنها وجود دارد. وقت‌هایی که مهمان ندارم جاروبرقی را دقیقا وسط پذیرایی رها می‌کنم. هنوز تمیز کردن را دوست ندارم اما الآن جارو کشیدن برایم خیلی راحت تر شده!

همین مسئله برای برنامه‌نویسی هم صدق می‌کند! هرکاری که بتواند تجربه‌ی کاری و تجربه‌ی دولوپری من را ساده‌تر و کمی لذت‌بخش‌تر کند به نفع من است!

تجربه‌ی دولوپری دقیقا همین تمیزکاری‌های پشت سیستم است! ابزار مختلفی نیز برای تمیز کردن و راحت‌تر کردن کار خودم دارم! چند جاروی اتوماتیک که به صورت دوره‌ای کارهای ضروری را انجام می‌دهند، چند جاروی دستی که گاهی از آن‌ها استفاده می‌کنم و چند جاروی برقی که هربار کد را push میکنم کارهای نظافت و بهینه سازی را برایم انجام می‌دهند.

منظورم از جاروهای شغلی فرآیندهایی است که طراحی کردم و ابزاری که استفاده می‌کنم. تاثیر همه‌ی این ابزار تجربه‌ی دولوپری هم البته مثبت نبوده؛ بعضی‌ها را دوست دارم و مرتب استفاده می‌کنم و بعضی‌ها گوشه‌ی کدهای من خاک می‌خورند. به صورت کلی ابزارهایی که از آنها استفاده می‌کنم من را به توسعه‌دهنده‌ی بهتر، دقیق‌تر و خوشحال‌تری تبدیل می‌کنند.

امروزه برنامه‌نویسان از ابزار زیادی به صورت آگاهانه و ناآگاهانه استفاده می‌کنند؛ ابزار، تکنولوژی‌ها و سرویس‌هایی که هرکدام پروایدرهای مختلفی دارند و توسعه دهندگان با محیط‌های پیچیده و همزمان ساده‌تری دست و پنجه نرم می‌کنند.

به صورت کلی یک DX خوب، پیوستگی بیشتری بین توسعه‌دهنده‌ها، محیط‌های توسعه، پردازش‌ها، ورک‌فلوها و اتوماسیون ایجاد می‌کند و پردازش دستی ( manual ) و اعصاب خرد کن به حداقل می‌رسد.

چه چیزی تجربه‌ی دولوپری خوب را مشخص می‌کند؟

تجربه‌ی دولوپری خوب فاصله‌ی بین ایده تا واقعیت را کاهش می‌دهد؛ یعنی دولوپر اطلاعات لازم را دارد و می‌تواند بین تمرکز و انجام کار به راحتی سوییچ کند و تسک‌ها را با حداقل تاخیر تکمیل کند، با دردسر کم یا اصلا بدون دردسر!

مزایای یک developer experience خوب

یک تجربه‌ی توسعه‌دهندگی خوب بیشتر از توسعه‌دهندگان برای سازمان‌ها و شرکت‌ها مفید است! حداقلی ترین خروجی تجربه‌ی دولوپری خوب جذاب شدن شرکت و علاقه‌ی نیروهای فعلی به ماندن است و از امنیت بیشتر و افزایش کارایی اعضای مختلف تیم نیز نباید غافل شد! DevEx برای تمام افراد سازمان فایده دارد! نه فقط توسعه دهندگان!

فرقی ندارد که در کدام صنعت یا کجای دنیا هستید! اگر بخشی از تیم شما زمان و انرژی خود را به توسعه‌ی نرم‌افزار اختصاص می‌دهد، با DevEx بهتر شما نتایج بیزینسی بهتر می‌گیرید!

طبق گزارش Forrester Snapshot که 2 سال پیش منتشر شده، با DX مناسب تیم‌ها می‌توانند زمان رسیدن به بازار ( time to market ) فیچرها و محصولات را کاهش دهند، درآمد را افزایش دهند و فرآیند نوشتن برنامه‌ها را سریع تر و ساده‌تر کنند. در نتیجه‌ی داشتن DX بهتر از نظر شرکت کنندگان در نظر سنجی گزارش:

  • 74% توسعه‌ دهندگان افزایش بهره‌وری را تجربه کرده بودند.
  • 77% زمان کمتر time to market را تجربه کرده بودند.
  • 85% افزایش درآمد ( revenue growth ) را تجربه کرده بودند.
  • 75% افزایش نرخ جذب و نگهداری مشتری را تجربه کرده بودند.
  • 82% افزایش رضایت مشتری را تجربه کرده بودند.

توسعه‌دهندگان معمولا دردسرهای زیادی را در end-to-end workflow خود تجربه می‌کنند، بخصوص با افزایش ابزار این دردسرها اضافه می‌شوند. جلسات، درخواست‌ها، صحبت همکاران وسط کار و ... نیز به افزایش عدم تمرکز و دردسرها دامن می‌زنند و در نهایت دولوپر باید اجزای تفکیک شده و نامنظم را در ذهن خود منظم کند و تا بتواند کد خوب بنویسد.

اجزای developer experience خوب:

  • همکاری ( Collaboration )
  • سرعت ( Speed )
  • حلقه‌های بازخورد کوتاه ( Short feedback loops )
  • سطح بالای اتوماسیون ( High degrees of automation and integration )
  • اصطکاک و دردسر پایین ( Low levels of friction or toil )
  • شفافیت و فرآیندهای داکیومنت شده( Transparent, well-documented processes )

به شخصه بیشترین آسیب و دردسر شغلی را در شرایطی که شفافیت پایین بود تجربه کردم!


بدون داشتن تمام موارد بالا امکان دستیابی به یک DevEx خوب وجود ندارد!

سخن آخر

تمام این مقاله را برای این نوشتم که به خودم و شما بگویم که از تجربه‌ی توسعه‌دهندگی یا تجربه‌ی دولوپری یا DevEx یا DX غافل نشوید! همه‌ی ما(برنامه‌نویس، مدیر، منابع انسانی و ...) نتایج بهتر می‌خواهیم و DX برای رسیدن به این هدف بسیار مهم است!

در مقاله‌ی بعدی به راه‌ها و ملزومات بهبود تجربه‌ی دولوپری می‌پردازیم.