وقتی یک مدل هوش مصنوعی میتواند در چند ثانیه چیزی را بسازد که زمانی برای نوشتنش ساعتها وقت میگذاشتیم، سؤال دیگر فقط این نیست که «آیا باید برنامهنویسی یاد بگیریم؟» سؤال مهمتر این است که در دنیایی که کد ارزانتر و سریعتر تولید میشود، ارزش واقعی یک توسعهدهنده کجاست؟
مدتی است هر بار که درباره آینده برنامهنویسی صحبت میکنیم، یک تصویر تکراری جلوی چشممان قرار میگیرد: یک نفر توضیحی به AI میدهد، چند ثانیه صبر میکند و بعد چند صد خط کد تحویل میگیرد.
طبیعی است که در چنین شرایطی از خودمان بپرسیم اگر ماشین میتواند کد بنویسد، چرا باید سالها وقت بگذاریم و سینتکس، ساختارها، فریمورکها و جزئیات زبانهای برنامهنویسی را یاد بگیریم؟
من فکر میکنم این سؤال از یک برداشت اشتباه شروع میشود؛ اینکه ارزش برنامهنویسی را با «تایپ کردن کد» یکی بدانیم.
مسئله هیچوقت فقط نوشتن کد نبوده است
وقتی برای اولین بار برنامهنویسی را یاد میگیریم، معمولاً بخش زیادی از زمانمان صرف چیزهایی میشود که قابل مشاهدهاند: نوشتن تابع، ساختن کلاس، کار با API، مدیریت خطا، اتصال دیتابیس یا پیدا کردن یک علامت اشتباه در میان چند خط کد.
اما چیزی که به مرور متوجه میشویم این است که بخش دشوارتر، خود کد نیست. دشواری اصلی این است که بفهمیم اصلاً چه چیزی باید ساخته شود.
«AI میتواند برای چیزی که از آن میخواهید کد تولید کند؛ اما قبل از آن باید بدانید چه چیزی ارزش ساختن دارد.»
یک توسعهدهنده فقط کسی نیست که میداند چگونه یک دکمه را به یک API متصل کند. او باید بتواند مسئله را بشکند، فرضیات را زیر سؤال ببرد، معماری مناسبی انتخاب کند و بفهمد تصمیمی که امروز میگیرد، چند ماه بعد چه اثری روی محصول خواهد داشت.
من سالار ایزدی، برنامهنویسی را چطور میبینم؟
برای من، کدنویسی همیشه بیشتر از اینکه یک مهارت برای نوشتن دستورهای کامپیوتری باشد، راهی برای تبدیل یک ایده مبهم به یک سیستم واقعی بوده است. چیزی که در ذهن است، تا زمانی که ساخته نشود، فقط یک امکان است.
وقتی یک محصول میسازم، معمولاً با خود کد شروع نمیکنم. ابتدا سعی میکنم بفهمم قرار است چه تجربهای شکل بگیرد، کاربر با چه چیزی مواجه شود و سیستم قرار است چه مسئلهای را حل کند. بعد کد وارد ماجرا میشود.
به همین دلیل، ورود AI به فرآیند توسعه نرمافزار برای من به معنی حذف برنامهنویسی نیست. بیشتر شبیه این است که یک ابزار قدرتمندتر به کارگاه سازنده اضافه شده باشد.
بخش بزرگی از زمان صرف تبدیل ایده به کد میشد.
زمان بیشتری برای فکر کردن به مسئله، معماری و تجربه محصول باقی میماند.
پس چرا هنوز باید کدنویسی را از پایه یاد بگیریم؟
پاسخ من این نیست که همه باید چند سال مثل گذشته برنامهنویسی سنتی یاد بگیرند. اتفاقاً فکر میکنم روش یادگیری باید تغییر کند.
اما یادگیری پایهها هنوز اهمیت دارد، چون نمیتوان چیزی را که نمیفهمیم واقعاً هدایت کنیم. اگر AI برایمان کدی تولید کند و ما ندانیم آن کد چه کاری انجام میدهد، در عمل فقط یک مصرفکننده کد شدهایم.
یادگیری برنامهنویسی در عصر AI شاید کمتر درباره حفظ کردن سینتکس باشد و بیشتر درباره ساختن مدل ذهنی درست از کامپیوتر و نرمافزار باشد.
وقتی مفاهیم پایه را میدانیم، AI برایمان تبدیل به یک جعبه سیاه نمیشود. میتوانیم خروجی آن را بررسی کنیم، درباره تصمیمهایش سؤال بپرسیم، خطاهایش را پیدا کنیم و حتی مسیر متفاوتی پیشنهاد دهیم.
تفاوت بین «تولید کد» و «ساختن نرمافزار»
یکی از جذابترین اتفاقات این دوره این است که فاصله بین یک ایده و اولین نمونه قابل اجرا بسیار کوتاهتر شده است. امروز میتوانیم ایدهای را توضیح دهیم و خیلی سریع یک prototype داشته باشیم.
اما prototype با محصول فرق دارد. نرمافزار واقعی فقط مجموعهای از فایلهای کد نیست؛ مجموعهای از تصمیمهاست.
معماری
سیستم چطور باید رشد کند و اجزای آن چطور با یکدیگر ارتباط داشته باشند؟
تجربه کاربر
کاربر قرار است چه چیزی را ببیند، بفهمد و تجربه کند؟
پایداری
سیستم در شرایط واقعی، خطا، رشد و تغییر چه رفتاری خواهد داشت؟
تصمیمگیری
کدام راهحل واقعاً لازم است و کدام پیچیدگی فقط ظاهر پروژه را بزرگتر میکند؟
AI میتواند در تمام این بخشها کمک کند، اما مسئولیت تصمیمگیری را نمیتوان صرفاً با تولید چند قطعه کد جایگزین کرد.
برنامهنویس آینده احتمالاً بیشتر سؤال میپرسد تا کد تایپ کند
شاید یکی از تغییرات مهمی که AI ایجاد کرده، تغییر نقش توسعهدهنده باشد. قبلاً ممکن بود ساعتها پشت سیستم بنشینیم و بخش بزرگی از انرژی ذهنی خود را صرف پیادهسازی کنیم. حالا بخشی از این کار میتواند توسط ابزارهای هوشمند انجام شود.
در نتیجه، ارزش سؤالهای ما بیشتر میشود. اینکه چه میخواهیم بسازیم، چرا چنین معماریای را انتخاب کردهایم، چه چیزی را عمداً نمیسازیم و اگر این تصمیم اشتباه باشد، چه چیزی را از دست خواهیم داد.
«هرچه تولید کد آسانتر شود، کیفیت تصمیمهایی که پشت آن کد قرار دارند مهمتر میشود.»
چیزی که AI هنوز به جای ما تجربه نکرده است
یک تفاوت مهم بین من و یک مدل هوش مصنوعی این است که وقتی یک محصول را میسازم، با مسیر آن محصول زندگی میکنم. میبینم کجا شکست میخورد، کجا کاربر چیزی را اشتباه متوجه میشود و کدام تصمیمی که روی کاغذ منطقی بود، در عمل جواب نمیدهد.
تجربه ساختن، فقط دانش فنی نیست. مجموعهای از برخوردهای واقعی با محدودیتهاست؛ محدودیت زمان، منابع، کاربر، زیرساخت و حتی محدودیتهای خود ایده.
یک نکته مهم برای من
- کدی که نمیفهمیم، حتی اگر اجرا شود، هنوز واقعاً تحت کنترل ما نیست.
- سرعت ساختن، بدون توانایی تشخیص مسیر درست، فقط سرعت رفتن در مسیر اشتباه است.
- AI باید بخشی از توانایی ما را بیشتر کند، نه اینکه فهم ما از محصول را حذف کند.
شاید روش یادگیری باید عوض شود، نه اینکه یادگیری متوقف شود
اگر امروز کسی بخواهد وارد دنیای توسعه نرمافزار شود، به نظرم لازم نیست مسیرش دقیقاً شبیه مسیری باشد که چند سال پیش طی میکردیم. یادگیری میتواند همزمان با ساختن اتفاق بیفتد.
میتوان از AI برای توضیح یک مفهوم، ساخت نمونه اولیه، بررسی یک خطا یا مقایسه چند راهحل استفاده کرد. اما در کنار آن باید همچنان ذهن خودمان را درگیر نگه داریم.
برای من، یادگیری واقعی زمانی اتفاق میافتد که بتوانم چیزی را بسازم و بعد از خودم بپرسم: چرا این سیستم اینطور کار میکند؟ اگر این قسمت حذف شود چه اتفاقی میافتد؟ اگر تعداد کاربران ده برابر شود چه چیزی میشکند؟
فهم مسئله
ساختن راهحل
یادگیری از نتیجه
AI قرار نیست سازنده را حذف کند؛ ابزار سازنده را تغییر میدهد
من آینده توسعه نرمافزار را در تضاد بین «انسان» و «AI» نمیبینم. برای من سؤال جالبتر این است که یک سازنده با دسترسی به چنین ابزاری چه چیزهایی میتواند بسازد که قبلاً ساختنشان برایش بسیار سخت یا زمانبر بود.
وقتی ابزار بهتر میشود، سقف انتظار ما از خودمان هم باید بالاتر برود. اگر AI میتواند بخش زیادی از پیادهسازی را سریعتر انجام دهد، شاید وقت آن رسیده باشد که بیشتر روی ایده، تجربه، معماری و کیفیت چیزی که میسازیم تمرکز کنیم.
آینده متعلق به کسی نیست که سریعتر کد تایپ میکند؛ متعلق به کسی است که میداند چه چیزی باید ساخته شود و میتواند آن را به یک تجربه واقعی تبدیل کند.
هنوز نظری ثبت نشده. اولین نفر باشید!