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



