وقتی رد تمام جهان دیجیتال را می‌زنیم!

وقتی رد تمام جهان دیجیتال را می‌زنیم!

امروز ایده برنامه­‌نویسی در خلوت خود و به دور از همکاری با دیگر برنامه­‌نویسان، فاصله زیادی با واقعیت دارد. شاید در آغاز عصر نرم­‌افزار، یک برنامه‌نویس‌ نرم‌افزار به‌تنهایی در اتاقش و به دور از شبکه‌­ای از همکاران کار می‌کرد و درصدد بود چیز ارزشمندی تولید کند؛ اما امروز سیستم‌های نرم‌افزاری را صدها هزار برنامه‌نویس تولید می‌‌کنند که هر یک در زمینه‌ای تخصص دارند. آیا این بدان معنا است که افزون بر کدنویسی به مهارتی دیگر نیز برای توسعه یک نرم­‌افزار نیاز است؟

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

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

ایده حسن برای این همکاری همه­‌جانبه برنامه‌­نویسان در سراسر جهان در دستاوردش، «کاوش مخازن نرم‌افزاری (MSR)» جلوه­‌گر می‌­شود. او در این باره می‌­گوید: حدود ٢٠ سال پیش، ایده‌ای در ذهن من شکل گرفت که مسیر جدیدی را برای توسعه نرم‌افزارها نشان داد. آن زمان متوجه شدم که هر قدمی که توسعه‌دهندگان نرم‌افزار در پروژه‌هایشان برمی‌دارند، اثری دیجیتالی از خود به جا می‌گذارد. از تغییرات کدها گرفته تا داده‌هایی که از استفاده کاربران از نرم­‌افزارها به دست می‌آید. در گذشته، این داده‌ها تنها ذخیره می‌شدند و هرگز به شکلی مؤثر برای بهبود کیفیت یا بهره‌وری پروژه‌های نرم‌افزاری مورد استفاده قرار نمی‌گرفتند. ایده اصلی این بود که این داده‌ها را چگونه می‌توان پاک‌سازی و سامان‌دهی کرد تا بتوانند در خدمت توسعه‌دهندگان قرار گیرند؟ به این معنا که بتوانیم به کمک این داده‌ها بهره‌وری توسعه‌دهندگان را افزایش دهیم یا کیفیت سیستم‌های نرم‌افزاری را بهبود ببخشیم.

امروز همه این تجربه را در فروشگاه­‌های برخط دارند که پس از یک خرید، گزینه‌­های دیگری نیز بر اساس انتخاب­‌های کاربران دیگر به آن‌ها معرفی می­‌شود. این پژوهشگر مهندسی نرم‌افزار می‌­گوید: زمانی که در فروشگاه کتاب برخطی وارد می‌شوید و کتابی می‌خرید، معمولاً به شما پیشنهاد می‌کند که: مشتریانی که این کتاب را خریدند، کتاب‌های دیگری مثل این را هم خریدند. حالا تصور کنید چنین سیستمی را برای برنامه‌نویسان طراحی کنیم و به آن‌ها بگوییم: اگر این بخش از کد را تغییر دادید، ۹۹ درصد مواقع توسعه‌دهندگان دیگر بخش دیگری از کد را هم تغییر داده‌اند. این فرایند می‌تواند از بروز بسیاری از مشکلات در آینده جلوگیری کرده و تأثیرات منفی آن‌ها بر مشتریان را به حداقل برساند. یکی از نمونه‌‌هایی که بر اساس همین ایده‌­ها شکل گرفت، ابزار شناخته‌شده‌ای به نام GitHub Copilot است. این ابزار زمانی که توسعه‌دهنده در حال نوشتن کد است، می‌تواند ادامه‌ خطوط یا حتی بخش‌های بزرگ‌تری از کد را پیش‌بینی و پیشنهاد دهد. این فناوری با استفاده از تحلیل حجم عظیمی از کدهای موجود در جهان و ایجاد الگوهای آماری، بر پایه‌ هوش مصنوعی ساخته شده است. در واقع، می‌توان گفت این ابزار مانند یک پیشگو عمل می‌کند که احتمال واژه پیشنهادی یا عبارت بعدی را حدس می‌زند. این ارتباط عمیق بین هوش مصنوعی، توسعه نرم‌افزار و چالش‌هایی است که برنامه‌نویسان با آن‌ها دست و پنجه نرم می‌کنند.

دستاورد احمد حسن به معنای نقش بی­‌سابقه تعاملات در توسعه نرم­‌افزارها است. بر همین اساس، او برای پرسش آغازین این گزارش، پاسخی روشن و البته غافلگیرکننده دارد: «امروز، کدنویسی پانزده‌ یا حداکثر بیست‌ درصد از وقت طراح را به خود اختصاص می­‌دهد. هشتاد درصد بقیه، صرف همکاری و تعامل با دیگران و برنامه‌ریزی می‌شود.»

 آن‌چه خواندید پیش‌تر در شماره دوم نشریه بین‌المللی رصدخانه منتشر شده بود.