در سالهای اخیر فرایند اتوماسیون یا خودکارسازی سرعت بالایی به خود گرفته و در آینده شاهد نابودی یا دستکم تغییرات بنیادی در شغلهای زیادی خواهیم بود، اما آیا توسعهدهندگان نرم افزار نیز کار خود را از دست میدهند؟
واقعیت این است که جهان در زمینه توسعه نرم افزار با سرعت بالایی در حال پیشرفت است و ابزارهای اتوماسیون زیادی نیز توسعه پیدا کردهاند. در این میان سوالات مهمی وجود دارد: آیا برنامهنویسان با توسعه چنین ابزارهایی باعث از بین رفتن شغل خود میشوند؟ در صورتی که ماشینها بتوانند کدنویسی کنند، دیگر چه نیازی به انسانها خواهد بود؟
از طراحی منطق تا طراحی ذهن
توسعهدهندگان نرم افزار پیوندهای منطقی، الگوریتمها، برنامهها، پروژهها و موارد دیگر را ایجاد میکنند و در حقیقت آنها سازندهی منطق هستند. با این وجود با ظهور هوش مصنوعی، شاهد تغییر پارادایم هستیم. توسعهدهندگان دیگر پیوندهای منطقی طراحی نمیکنند و در عوض مشغول آموزش مدلها برای چنین پیوندهایی شدهاند.
بسیاری از توسعهدهندگان بجای ساخت منطق به سراغ ایجاد ذهن رفتهاند. به بیان دیگر، توسعهدهندگان نرم افزار بیشتری فعالیتهای دانشمندان داده را برعهده گرفتهاند.
سطحهای مختلف اتوماسیون
اگر تا به امروز از محیط یکپارچه توسعه نرمافزار (IDE) استفاده کرده باشید، از عملکرد مناسب آن اطلاع دارید و نمیخواهید بدون آن به کار خود ادامه دهید. IDE اولین زمینه اتوماسیون در توسعه نرم افزار محسوب میشود. ماشینها با اطلاع از چیزی که میخواهیم پیادهسازی کنیم، در این فرایند به ما کمک میکنند.
زمینه دوم مربوط به سیستمهای بسته میشود. یک اپ رسانه اجتماعی را درنظر بگیرید که از صفحات مختلفی تشکیل شده که با یکدیگر پیوند داده شدهاند، با این حال به علت اینکه برای ارتباط با سرویسهای دیگر طراحی نشدهاند، یک سیستم بسته محسوب میشود. در حالی که فناوری ساخت چنین اپهایی روزبهروز سادهتر میشود، هنوز نمیتوانیم از اتوماسیون واقعی در این حوزه صحبت کنیم و برنامهنویس باید برای ساخت صفحات پویا، استفاده از متغیرها و اعمال قوانین امنیتی یا ادغام دیتابیسها کدنویسی کند.
بخش سوم و آخر مربوط به سیستمهای یکپارچه میشود. به عنوان مثال رابط برنامهنویسی کاربردی (API) یک بانک برای ارتباط با سایر سیستمها ساخته شده است. در حال حاضر خودکارسازی ATM یکپارچه، ارتباطات، مدلهای جهانی، امنیت بالا و همچنین عیبیابی پیچیده کاملا غیرممکن است.
جهان از چشمان کامپیوتر
زمانی که از افراد درباره جایگزینی آنها با رباتها سوال پرسیده میشود، اغلب آنها به چنین موضوعی فکر نمیکنند و این موضوع درباره توسعهدهندگان نرم افزار نیز صدق میکند. دلیل آنها روشن است: کامپیوترها در خصوصیاتی مانند خلاقیت، همدلی، همکاری یا تفکر انتقادی عملکرد خوبی ندارند.
با وجود چنین گفتهای، اغلب مواقع این خصوصیات برای انجام کارها اهمیت بالایی ندارند. حتی اکثر پروژههای پیجیده نیز از بخشهای کوچکی تشکیل شدهاند که امکان خودکارسازی آنها وجود دارد. خصوصیات انسانی شگفتانگیز هستند، اما برای وظایف روزمره اهمیت آنها را بیش از حد ارزیابی کردهایم. برای مثال برای مدت زمان طولانی محققان اعتقاد داشتند که ماشینها قادر به تشخیص گربه در یک تصویر نیستند.
امروزه یک ماشین میتواند میلیاردها عکس را به صورت همزمان و با دقت بالاتری نسبت به انسانها دستهبندی کند. در حالی که شاید یک ماشین از دیدن یک گربه جالب یا جذاب شگفتزده نشود، در کارهای دیگر عملکرد بینظیری دارد. عکس بچه گربه از چشمان کامپیوتر به عنوان یک حالت نامشخص درنظر گرفته میشود.
حرکت به سوی منیفلدها و مقیاسهای جدید
علاوه بر کار با حالتهای نامشخص، کامپیوترها در دو زمینه دیگر عملکرد بهتری نسبت به انسانها دارند: انجام کارها در مقیاس بزرگ و کار با منیفلدهای نوین.
همه ما عملکرد کامپیوترها در مقیاس بزرگ را تجربه کردهایم. برای مثال اگر از کامپیوتری بخواهیم یک عبارتی را برای ۲۰۰ مرتبه پرینت کند، بدون هیچ شکایتی و در چندین ثانیه آن را انجام میدهد. اگر چنین چیزی را از انسانها بخواهید، باید چندین ساعت صبر کنید.
منیفلدها اساسا یک روش فانتزی یا ریاضی برای اشاره به زیرمجموعههای فضایی هستند که ویژگیهای خاصی دارند. برای مثال اگر شما یک کاغذ بردارید با یک منیفلد دو بعدی در فضای سه بعدی مواجه میشوید. اگر این کاغذ را به هواپیما تبدیل کنید، همچنین با یک منیفلد روبهرو هستید.
کامپیوترها در زمینه کار با منیفلدها عملکرد بهتری نسبت به انسانها دارند که دلیل آن گسترش منیفلد در به ۲۰ بعد و وجود گوشههای پیچیده است. از آنجایی که بسیاری از مسائل روزانه مانند زبان انسان یا کد کامپیوتر را میتوان به صورت یک منیفلد ریاضی بیان کرد، پتانسیل بالایی برای استقرار محصولات کارآمد در آینده وجود دارد.
تحولات کنونی
به نظر میرسد توسعهدهندگان هم اکنون استفاده زیادی از اتوماسیون دارند، با این حال تنها در اوج اتوماسیون نرم افزاری هستیم. امروزه خودکارسازی سیستمهای یکپارچه تقریبا غیرممکن است، اما بسیاری از بخشهای دیگر خودکار شدهاند.
برای مثال در آینده شاید بررسی کد و اشکالزدایی یا دیباگ منسوخ شود. کمپانی سوئیسی «DeepCode» در حال کار روی ابزارهایی برای تشخیص خودکار باگ است. «DeepMind» گوگل هم اکنون میتواند راهحلهایی برای کدهای موجود ارائه دهد و «Aroma» فیسبوک نیز میتوانند به تنهایی برخی برنامههای کوچک را به صورت خودکار تکمیل کند.
علاوه بر این موارد، گفته میشود که سیستم «MISIM» میتواند کدهای کامپیوتر را به همان روشی درک کند که الکسا و سیری زبان انسان را متوجه میشوند. این یک موضوع جذاب است چرا که به توسعهدهندگان نرم افزار اجاره میدهد کارهای معمول و وقتگیر را به صورت خودکار انجام دهند.
افقهای هیجانانگیز
تا به امروز تمام این اتوماسیونها در پروژههای کوچک عملکرد بینظیری از خود نشان دادهاند، اما در پروژههای پیچیده کاملا بیفایده هستند. برای مثال نرم افزار شناسایی باگ هنوز بسیاری از مواردی که مشکلی ندارند را برمیگرداند یا پروژههایی که اهداف نوینی را دنبال میکنند به صورت خودکار تکمیل نمیشوند.
از آنجایی که مدت زمان زیادی از توسعه MISIM نمیگذرد، هنوز وارد بخشهای زیادی نشده. هنوز در ابتدای این فناوری قرار داریم و انتظار میرود در آینده این ابزارها بسیار قدرتمندتر شوند.
کاربردهای اولیه اتوماسیون جدید
برخی از کاربردهای اولیه اتوماسیونهای جدید میتوانند شامل ردیابی فعالیتهای انسان شوند، با این حال نباید آن را با جاسوسی از افراد اشتباه گرفت و بجای چنین موضوعی، از آنها برای برنامهریزی ساعتهای کاری یک کارمند یا شخصیسازی دروس برای دانش آموزان استفاده میشود.
این اتوماسیونهای جدید فرصت اقتصادی بزرگی ایجاد میکنند چرا که دانش آموزان موارد مهم را سریعتر یاد میگیرند و بهرهوری کارکنان نیز افزایش پیدا میکند. در صورتی که عملکرد MISIM مطابق وعدهها باشد، میتوان از آنها برای بازنویسی «کد موروثی» استفاده کرد. برای مثال بسیاری از نرم افزارهای بانکی و دولتی با «COBOL» نوشته شدهاند که یادگیری آن سخت است. با ترجمه این برنامهها به زبان جدید، مراقبت از آنها سادهتر میشود.
سرمایهگذاری در تحویل پیوسته و آزمایش خودکار
اگر پیش از انتشار یک نرم افزار آن را مورد آزمایش قرار ندهید، احتمالا تجربه کاربری آسیب میبیند یا اینکه امنیت کاربران با خطر مواجه میشود. تجربههای گذشته نشان داده که تستهای خودکار بخشهایی را پوشش میدهند که حتی انسانها به آنها فکر هم نمیکنند.
تحویل پیوسته رویکردی بوده که بیش از گذشته مورد استفاده تیمها قرار میگیرد. اگر در نرم افزار شما ویژگیهای بسیار زیادی وجود داشته باشند و هر سه ماه یکبار برای آن بروزرسانی منتشر کنید، چند ماه زمان صرف رفع مشکلات آن خواهید کرد. این موضوع نه تنها سرعت توسعه برنامه را کاهش میدهد، بلکه روی تجربه کاربری نیز تاثیر مخرب میگذارد.
نرم افزارهای خودکار بیشماری برای آزمایش وجود دارند و فریمورکهای زیادی برای تحویل پیوسته توسعه پیدا کردهاند. در حالت کلی پرداخت هزینه برای تصاحب آنها صرفه اقتصادی بیشتری نسبت به تولید دارد و برای اینکار نیازی به استخدام توسعهدهنده نخواهید داشت.
نقش توسعهدهندگان در برنامهریزی پروژه
اغلب مواقع پروژهها در بخش بالای مدیریت یا نزدیک به تیم تحقیق و توسعه ایجاد میشوند و سپس به بخشهای پایینتر منتقل میشوند تا اینکه در اختیار تیم توسعه قرار میگیرد که باید این پروژه را به واقعیت تبدیل کند. با توجه به اینکه هر مدیر پروژهای مهندس نرم افزار نیست، شاید برخی از بخشهای پروژه تنها توسط تیم توسعه قابل اجرا باشند، در حالی که بخشهای دیگر پرهزینه یا حتی غیرممکن باشند.
در حالی که این رویکرد در گذشته وجود داشت، اما هم اکنون بسیاری از بخشهای یکنواخت به صورت خودکار توسعه پیدا میکنند و افراد فرصت بیشتری برای خلاقیت دارند. این موضوع باعث میشود که توسعهدهندگان نرم افزار به بخشهای دیگر بروند که شامل مراحل اولیه برنامهریزی یک پروژه میشود. آنها نه تنها میتوانند بخشهای قابل اجرا و غیرقابل اجرا را تشخیص دهند، بلکه با خلاقیت خود ارزش برنامه را نیز افزایش میدهند.
تبدیل نرم افزار به اولویت اصلی
تقریبا ۵ سال پیش مدیرعامل مایکروسافت، ساتیا نادلا ادعا کرد که تمام کسب و کارها تبدیل به کسب و کارهای نرم افزاری میشوند که البته این ادعا درست بود. نه تنها توسعهدهندگان باید به سمت مدیریت حرکت کنند، بلکه نرم افزار باید به یکی از اولویتهای اصلی شرکتها تبدیل شوند.
در دوران شیوع ویروس کرونا بسیاری از کارکنان دورکار شدند، بنابراین اکثر کارها به صورت آنلاین صورت میگیرد و نرم افزار اهمیت بسیار بالایی دارد.
توسعهدهندگان نرم افزار رهبران آینده هستند
در گذشته علاقهمندان به دنیای کامپیوتر افرادی غیراجتماعی به نظر میرسیدند و جامعه لقبهای مختلفی برای آنها درنظر گرفته بود. با گذشت زمان مشخص شد که این افراد به اندازهای باهوش هستند که میتوانند چیزهای جالب بسازند.
نرم افزارها روزبهروز قدرتمندتر میشوند و به سمت اتوماسیون حرکت میکنند و از این نظر از دست دادن شغل به علت اتوماسیون تقریبا بیاساس است. تا یک دهه آینده و حتی چندین ماه دیگر، پیشرفتهای زیادی در دنیای فناوری رخ میدهد، اما این به معنای بیکار شدن توسعهدهندگان نرم افزار نیست، بلکه آنها ارتقای شغلی پیدا میکنند.
توسعهدهندگان نباید ترس از بیکار شدن داشته باشند، چرا که در آینده بیکار نمیشوند بلکه تبدیل به رهبران این صنعت میشوند.