همانطور که از شواهد و قرائن پیداست هوش مصنوعی شیوه ساخت نرمافزار را تغییر داده، اما در میان حجم زیاد اطلاعات و هیاهوی پیرامون AI، سؤال مهم این است که توسعهدهندگان واقعاً باید چه مهارتهایی یاد بگیرند؟
بر اساس تحلیل بیش از ۱۰ هزار آگهی شغلی، مصاحبه با متخصصان و مدیران استخدام و بررسی دادههای مختلف، چهار مهارت بهعنوان مهمترین مهارتهای مهندسی هوش مصنوعی شناسایی شدهاند:
۱. ساخت و استقرار اپلیکیشنهای AI
به عنوان یک توسعه دهنده نرم افزار در دوران جدید با مفاهمیی مثل LLM، RAG، Context Engineering، Agentic Workflow، Machine Learning و Deep Learning آشنا باشید.
اما مهمتر از شناخت این ابزارها، توانایی ارزیابی، اندازهگیری و کنترل رفتار غیرقابلپیشبینی سیستمهای AI است. بنابراین توانایی تحلیل خطا و ایجاد چرخههای مستمر ارزیابی و بهبود در حین توسعه محصول واقعا اهمیت زیادی دارند.
۲. مبانی مهندسی نرمافزار
به یاد داشته باشید AI جایگزین اصول مهندسی نرمافزار نشده است. این نکته طلایی را فراموش نکنید! هرگز! ( به پینوشت1 مراجعه کنید)
درک معماری محصول، تدوین تست مکانیزه، شناخت اصول دیتابیس، مبانی امنیت، درک مفهوم مقیاسپذیری و قابلیت اطمینان از جمعله نکاتی است که به توسعهدهنده کمک میکند تصمیمهای درست بگیرد و مهمتر از همه بتواند در حین توسعه محصول Coding Agentها را درست هدایت کند.
بدون این دانش، ممکن است Agent کد تولید کند، اما تصمیمهای معماری و مهندسی ضعیفی پشت آن قرار داشته باشد.
۳. استفاده حرفهای از Coding Agentها
امروز کار با Agentهای کدنویس به یک مهارت اساسی تبدیل شده است، توسعهدهنده باید بداند چگونه Context را مدیریت کند، چه مقدار کار را به Agent بسپارد، چه زمانی مداخله کند، چگونه Eval و Verifier تعریف کند و چگونه چند Agent را هماهنگ کند. همچنین باید دائماً ابزارها و روشهای جدید را آزمایش کند چون Agentic Coding با سرعت زیادی در حال تغییر است و کافیه فقط مدت کوتاهی از این مقوله فاصله بگیرید تا به صورت کلی از قافله عقب بیفتید! ( پینوشت 2 رو هم ببینید.)
۴. تصمیمگیری درباره اینکه چه چیزی باید ساخته شود
دوران جالبی داره می رسه. واقعیت اینه که با بهتر شدن Coding Agentها، «ساختن محصول» آسانتر میشود. بنابراین نقش مهندس از پیادهسازی چیزی که به او داده شده به سمت تصمیمگیری درباره اینکه اصلاً چه چیزی باید ساخته شود حرکت میکند.
پس دیگه یک مهندس نرم افزار نمی تونه بگه من کاری به بازار ندارم، فقط کد محصولی که بهم گفتن رو میزنم و خلاص! مهندس آینده باید درک محصول، کسبوکار و نیاز مشتری داشته باشد و بتواند خودش مسئله و فرصت را شناسایی کند؛ همچنین بداند چه زمانی سریع MVP بسازد و چه زمانی برای ساخت دقیقتر و مطمئنتر زمان بیشتری بگذارد. ( پینوشت 3 هم بی زحمت ببینید)
در نهایت، پشت تمام این مهارتها یک مهارت اساسی وجود دارد: یادگیری مداوم
چون AI با سرعت زیادی تغییر میکند، مهندس موفق کسی نیست که فقط ابزارهای امروز را بلد باشد بلکه کسی است که بتواند دائماً مهارتها، ابزارها و روشهای کاری خود را با این تغییرات تطبیق دهد.
و به طور خلاصه برداشت کلی که از متن ارزشمند آقای Ng داشتم :
مهندس AI آینده فقط کدنویس نیست، بلکه کسی است که AI را میشناسد، مهندسی نرمافزار را میفهمد، Agentها را هدایت میکند و میتواند تشخیص دهد چه چیزی ارزش ساختن دارد.
پیشنهاد می کنم حتما متن کامل را بخونید! اگه انگلیسی تون هم خوب نیست بدید ChatGPT خلاصه کنه واستون.
با آرزوی سلامت، موفقیت و پیروزی ✌️
ارادتمند ❤️
〰️〰️〰️〰️〰️〰️〰️
پ.ن 1 : طی یکی دو سال گذشته با ارزیابی دهها تیم و محصول نرم افزاری روبرو هستم. خبر بد اینکه بخش زیادی از دوستان علیرغم اینکه محصولی را توسعه داده اند اما از اصول کلی و مبنایی «مهندسی نرم افزار» فاصله گرفته اند و بعضیا توجیهات عجیبی هم برای این موضوع می آورند.
پ.ن 2: اینکه آیا یک توسعه دهنده در توسعه محصول از ابزارهای هوش مصنوعی استفاده می کند یا نه، نه افتخار است و نه مایه سرشکستگی! چیزی که مهم است بتواند این موضوع را طبق نکاتی که نویسنده گفته مدیریت کند.
پ.ن 3: مارکتینگ و دیگر هیچ! یادم باشه بعدا یه مطلب درباره این موضوع که «ساختن» آسان شده ولی «دیده شدن» نه! مطلبی بنویسم. علی ای حال داریم به سمت شرکت های یک نفره می ریم ! شرکت هایی که دیگه اولویت اصلی شون توسعه محصول نباید باشه، ( به قول طرف اون که هِچ! ) بلکه اولویت باید مارکتینگ، حضور در بازار و توانِ عرضه محصول/خدمت باشه...
