قهوه سرد آقای برنامه‌نویس

شاید بسیاری از شما که این پست رو میخونید، با این موضوع آشنایید که برنامه‌نویسان موجوداتی هستند که قهوه را به کد تبدیل می‌کنند و خب شاید یکی از دلایل این جمله خنده‌دار، علاقمندی زیاد برنامه‌نویسان به قهوه به جهت حفظ سرحالی و بیداری خودشان باشد.

اما خب، گاهی هم پیش میاد که قهوه آقای برنامه‌نویس، حسابی سرد می‌شه و شاید حتی تمایلی به نوشیدن قهوه نداشته باشد. پیش‌تر در این بلاگ، داستان برنامه‌نویس شدن خود را نوشته بودم (+، +) و در حال حاضر، خوندن این داستان‌ها برای دوستان Vibe Coder شاید اتفاق بدی نباشه.

اما خب این مطلب را هم می‌نویسم که به نوعی به شما بگم که «آواز دهل از دور شنیدن خوش است» و کمی هم شما رو با حقایقی در مورد بازار کار برنامه‌نویسی – یا توسعه نرم‌افزار به هر شکلی – آشنا کنم.

کوه یخ برنامه‌نویسی در بازار تکنولوژی ایران

همانطوری که می‌دونید، کوه‌های یخی معمولا سازه‌های طبیعی بزرگ از جنس یخ هستند که مقدار کمی ازشون رو بیرون از آب می‌بینیم و مقدار بسیار زیادیشون زیر آب قرار گرفته (یکی از دلایل علمی که براش خوندم – که می‌تونه اشتباه هم باشه – حبس شدن گازهای سنگین‌تر از آب مثل کربن دی‌اکسید در میان یخ‌هاست). و خب کوه یخ وقتی از بیرون دیده بشه، شبیه یک جزیره برفی زیباست.

بسیاری از کوه‌های یخی، به دلیل سرعت حرکت پایینی که دارند میزبان اکوسیستم‌های جذابی هم شدند و بسیاری از کاشفان و علاقمندان ممکنه اون‌ها رو بررسی کنند. اما اون پایین رو چطور؟ هرقدر که پایین‌تر بریم ممکنه با چیزهای ترسناک‌تری مواجه بشیم، بخصوص جایی که دیگه نور خورشید نمی‌رسه و حتی در همین سال ۲۰۲۵ هم نمی‌دونیم که چند درصد از گونه‌های حاضر در اونجا رو کشف کردیم.

بازار برنامه‌نویسی در ایران هم همین شکلیه، یک کوه یخه که در اینجا سعی می‌کنم لایه لایه به شما توضیح بدم در هر کدوم از اون لایه‌ها چی رخ می‌ده و چطور میشه ازشون جان سالم به در برد!

لایه اول: آسمان و نوک کوه یخ

در این لایه، اصولا همه چیز شفافه. جاییه که «خوب‌های بازار» قرار دارند. الزاما ممکنه شرکت‌های بزرگ نباشند، اما شرکت‌هایی هستد که پروسه استخدام، قرارداد، همکاری‌های ساعتی و …شون کاملا واضحه. اگر تضمینی از شما بابت حسن انجام کار خواسته میشه، منطقی و متناسب با حجم وظایف محوله به دوش شما خواهد بود.

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

لایه دوم: استارتاپ‌ها

استارتاپ جاییه که هوا سرده ولی میشه ازش در رفت 😁 ضمن این که صرف استارتاپ بودن یک کسب و کار، اصلا چیز بدی نیست. استارتاپ‌ها هم تلاششون اینه که تا حد امکان بتونند صاف و شفاف باشند و پروسه‌ها رو درست پیش ببرند.

منتها نکته‌ای که در مورد استارتاپ‌ها باید حواستون باشه، اینه که چون عموما ابتدا به ساکن پولی در نمیارن، ممکنه به شما حقوق ندن و ازتون بخوان که بخشی از سهامشون رو بپذیرید. این سیستم خیلی رایجه و خب البته باید عرض کنم خدمتتون که شما می‌تونید به سادگی، این موضوع رو نپذیرید و در استارتاپ مشغول کار نشید.

یا راه‌حل دیگر اینه که بپذیرید تا وقتی استارتاپ به درآمد نرسیده، سهام داشته باشید و وقتی درآمد مکفی داشت، سهامتون توسط سهامداران یا بنیان‌گذاران خریداری شه و در ازاش هزینه دریافت کنید.

بعنوان مورد آخر بگم که چون معمولا استارتاپ به سیستم «هیئتی» اداره میشه، شفافیت روی وظایف محوله کمتره و این می‌تونه برای شما خسته‌کننده‌تر بشه، بخصوص اگر بعنوان شخصی که بنیان‌گذار نیست، بهش ورود کنید.

لایه سوم: آب‌های سرد

شنیدید می‌گن «فلانی فقط دست بگیر داره؟» حکایت این‌هاست. مهم نیست که نیروی تمام‌وقتید، پاره‌وقتید، پروژه انجام می‌دید یا چی. تنها چیزی که برای این دست افراد مهمه اینه که شما یه چیزی فراهم کنید و تمام تلاششون اینه که به بهونه‌های مختلف، حق شما رو پرداخت نکنند.

در واقع ممکنه شما کاری کنید، این‌ها خیلی ساده بگن «تو برنامه نداشتیم هروقت آمد پولش رو می‌دیم» یا «در کمپین این ماه نبود» یا هرچی از این قبیل. این شرکت‌ها، معمولا استارتاپ‌ها یا شرکت‌های تازه‌تاسیسی هستند که به دلیل تزریق حجم زیادی سرمایه، تونستن یک تیم بسیار بزرگ بسازند و حالا در پرداخت هزینه تیم‌هاشون موندند. علاوه بر این در جردن هم یک دفتر گرفتند و … .

بگذارید راحتتر بگم، طوری هزینه‌های الکی تراشیدند که برای شما، به شکل واقعی قرار نیست هزینه‌ای رخ بده و همه چیز در سه کلمه که با «چ» شروع میشه خلاصه میشه!

لایه چهارم: ما اینجا یک خونواده‌ایم!

این مورد اونقدر تاریک بود که بشه اولین جایی که نور خورشید بهش نمی‌رسه 😁 دوستان دقت کنید، هربار در شرکتی از این لفظ استفاده شد یک پاسخ خیلی خوب وجود داره که می‌تونید بهشون بگید:

خونواده من بدون هیچ انتظاری از من بهم پول توجیبی میده، بدون این که بخواد زمان رفت و آمدم رو کنترل کنه میذاره از خونه برم بیرون، بدون این که لقمه‌هام رو بشماره بهم غذای رایگان می‌ده. ضمن این که تو خونه می‌تونم پیژامه بپوشم. شما کدام مورد رو برای من فراهم می‌کنید؟

و در نهایت یادتون نره حتی اگر با نزدیک‌ترین دوستان و نزدیک‌ترین افراد خونواده یک کسب و کار راه انداختید، اون کسب و کار حسابش از روابط شما جداست. یکی از دلایل شکست بسیاری از کسب و کارهای بزرگ در دنیا، اختلافات خونوادگی بوده که خب طبیعتا انقدر مثال ازش هست که نخوام اینجا چیزی رو مطرح کنم.

لایه پنجم: برات رزومه میشه!

خب از اونجایی که این مطلب به طور خاص در مورد برنامه‌نویسان و شغل برنامه‌نویسیه (گرچه می‌تونه به سایر شغل‌ها هم map بشه) پاسخ این یکی هم به خوبی میشه داد.

شما می‌تونید به سادگی به صفحات گیت خودتون شخص رو هدایت کنید (مثلا گیتهاب من و یا گیتلب من) و بگید که رزومه دارید، اگر رزومه‌ای نداشتید، احتمالا الان اینجا در حال مصاحبه شدن نبودید.

گرچه کار در هر شرکتی، پروژه‌ای یا هرچیزی از این قبیل داره به رزومه شما کمک می‌کنه اما این رو یادتون باشه که به هیچ عنوان قرار نیست کل رزومه‌تون رو در همون یک شرکت یا پروژه خلاصه کنید!

لایه آخر، در اعماق

در این لایه، هر شرکتی که بخواد چفت و بست‌های بیخود پوششی، جنسیتی، ابزارهای کنترلی مثل دوربین و میکروفن، کنترل روی محتوای بیرون شرکت شما (مثل شبکه‌های اجتماعی) داشته باشه قرار می‌گیره. از این شرکت‌ها، بهتره هرچه سریع‌تر فرار کنید!

سخن نهایی

مدتهایی بود که دوستان زیادی، به سبب دخیل بودنم در شکل گیری استارتاپ آرمو، بنیانگذاری مانی و چندین و چند پروژه دیگر، از من خواسته بودند که چنین مطلبی بنویسم، اما صبر کردم تا طی چند سالی که در این اکوسیستم به صورت فعال حضور داشتم، همه موارد را بتوانم جمع و جور کنم.

نوشته شدن چنین مطلبی، قطع به یقین برای بهبود فضای کاری در اکوسیستم استارتاپی ایران، از لزومات بود و خب بالاخره بابت این که چنین مطلبی رو تونستم انقدر منسجم بنویسم، خوشحالم.

اگر به مطالب مشابه علاقمندید، می‌تونید کانال تلگرام شخصی من رو دنبال کنید و اونجا هم مطالب مشابه رو مطالعه بفرمایید.

Share

چطور MCPها مشکل زبان‌نفهمی مدل‌ها را حل می‌کنند؟

از زمانی که مدل‌های هوش مصنوعی متنی یا همان مدل‌های بزرگ زبانی (Large Language Model) مثل ChatGPT ارائه شدند، همیشه یک مشکل بزرگ داشتند، این که زبان‌نفهم بودند! در واقع این زبان نفهمی در مدل‌های کوچک‌تر مثل مارال شاید بیش‌تر دیده می‌شد اما منظور و مقصود این مطلب، هذیان‌گویی یا درک نکردن مطالب ورودی نیست، بلکه عدم درک درست از ابزارهاییه که به خورد مدل‌ها داده میشه. این مساله، در ابتداء با عوامل هوش مصنوعی یا همان ایجنت‌ها حل شد. ساخت یک ایجنت کار بسیار ساده‌ایه و خب این موضوع اینجا پوشش داده شده و می‌تونید اون رو بخونید.

اما در سال گذشته شرکت Anthropic که سازنده مدل Claudeئه ابزاری ارائه کرد به اسم MCP که باید ببینیم چیه و چطور کار می‌کنه. در این پست، تمام تلاشم اینه که به ساده‌ترین زبان ممکن، MCP Serverها و این که چطور مشکل زبان‌نفهمی رو حل کردند رو برای شما توضیح بدم چون تا جایی که گشتم مطالب فارسی خوبی در موردش نبود یا اگر هم بود، در صفحات اینستاگرامی و تلگرامی بود که در وب قابل دسترسی نیستند.

اصلا MCP چیه و چطور کار می‌کنه؟

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

تست اتاق چینی به این شکله که اگر شما در یک اتاق گیر بیفتید و یک سری ابزار و وسایل باشه، همراه اونا هم یه سری راهنما به زبان چینی، احتمالا صرفا با دنبال کردن نمادهایی که در راهنماها وجود داره می‌تونید در اون اتاق زنده بمونید و یا ازش بیایید بیرون. این موضوع در زبان‌آموزی و مثال ملموس‌تر ما، کاربردیه. چطور؟

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

حالا MCP دقیقا همینه، یک راهنماست که مدل هوش مصنوعی بتونه از اتاق چینی بیاد بیرون. چطوری؟ با کمک Context. در واقع اسمش روشه Model Context Protocol یا «شیوه‌نامه متن مدل». و حتی چیز خیلی جدیدی هم نیست، فقط یک روش متفاوت از روش‌های پیشینه که برای اجرای ایجنت‌ها داشتیم.

ساز و کار  MCP زیر ذره‌بین

به جای این که این قسمت رو با دیاگرام‌های غیرقابل فهم پر کنم، خیلی ساده در مورد یک مساله فرضی توضیح می‌دم و MCP رو بیشتر می‌شکافم.

اول از همه، اگر دقت کنید اکثر MCP ها عنوان Server رو یدک می‌کشن، یعنی یک خدمتی ارائه میدن. پس کلاینت ما اینجا، خود مدل هوش مصنوعیمونه. مثلا Claude, ChatGPT یا حتی مدلی که توسط Ollama داریم روی کامپیوتر شخصیمون ران می‌کنیم.

یک سناریوی فرضی داریم. مثلا شما می‌خواهید از جایی مثل «اسنپ‌فود» سفارش ثبت کنید. وارد رابط هوش مصنوعی می‌شید و بهش می‌گید «برای من از رستوران X یک کارامل ماکیاتو ۱۰۰٪ عربیکا سفارش بده».

حالا چه اتفاقاتی در پشت صحنه رخ می‌ده؟

  • اول، MCP Server لیست ابزارهای خودش رو برمی‌گردونه. اینجا می‌تونه list_cafes باشه، می‌تونه get_order باشه و … . هرکدوم از این ابزارها، همراه یک توضیح ریزی بر می‌گردند. شبیه به چیزی که در Open API یا همون Swagger داریم.
  • اینجا مطابق ابزارها و توضیحاتشون، مدل ما باید درخواست رو بشکنه. پس چه کار می‌کنه؟
    • طبق پرامپت اولیه ما، اسم رستوران رو تشخیص میده و منوش رو از ابزار مورد استفاده، دریافت می‌کنه.
    • با ابزار جست و جو در منو، درک می‌کنه آیا کارامل ماکیاتو به صورت ۱۰۰ عربیکا موجود دارند یا نه. ممکنه اینجا از ابزار «بررسی موجودی» هم استفاده کنه.
    • در صورت موجود بودن، ممکنه به ما بگه موجوده و قیمتش ۱۰۰ هزار تومان به ازای هر فنجانه. ۲۰ هزار تومان هم هزینه ارسالش به آدرس شماست.
    • اینجا شما می‌گید «بسیار عالی سفارش رو ثبت کن».
    • بعد اینجا، ابزار ثبت سفارش رو صدا می‌زنه. بعد از اون، به شما یک سفارش تایید نشده میده، همراه لینک پرداخت. بعد از پرداخت شما، احتمالا یک ریکوئست دیگه میره سمت سرور که چک کنه پرداخت شده یا نه. حتی اینجا ممکنه شماره پرداخت و … هم از شما دریافت بشه که با ابزار متناسب، چک کنند آیا این پرداختی انجام شده که سفارش انجام شه یا خیر.
    • بعد از اون شما صرفا با «چت کردن» می‌تونید از وضعیت سفارشتون آگاه شید.
  • پس از این، هربار بخواهید سفارشی ثبت کنید، یک MCP بین شما و اسنپ‌فود هست که سفارشتون رو مثل سابق (زنگ زدن به رستوران و درخواست یک سفارش خاص) ثبت و پردازش کنه.

عملکرد MCP به این شکله و خب همونطوری که می‌بینید، در واقع به جای این که چند ابزار رو به زور بخواهیم به خورد مدل زبانی بدیم، همه رو می‌بریم زیر پرچم یک ابزار و اون رو تبدیل می‌کنیم به یک MCP سرور.

مزایا و معایب MCP ها

طبیعتا وقتی یک ابزار جدید معرفی میشه، مزایا و معایب اون هم باید زیر نظر داشته باشبم. به همین خاطر، اینجا مزایا و معایبی که خودم بهش رسیدم رو هم براتون لیست می‌کنم که خب شاید در استفاده از MCPها مد نظر داشته باشیدش.

مزایای MCPها

  • استانداردسازی ارتباط با ابزارها: از اونجایی که MCP یک پروتکل یا شیوه‌نامه به حساب میاد، میشه گفت که همه چیز رو به شکل استانداردی درمیاره. پس این موضوع، موضوع مهم و حائز اهمیتی خواهد بود. در واقع می‌دونیم که یک استاندارد جامع داریم که مدل‌های زبانیمون بتونن بفهمنشون.
  • کنترل بهتر روی جریان داده: از اونجایی که وظیفه اصلی مدل زبانی ما میشه تبدیل محتوای «قابل خواندن برای انسان» یا Human Readable به محتوای «قابل خواندن برای کامپیوتر» یا Machine Readable (محتوایی مثل XML, JSON, YAML و …) کنترل بهتری روی جریان داده‌ها هم خواهیم داشت. در واقع می‌تونیم اینجا داده‌های ورودی کاربر رو هم ذخیره کنیم و مورد بررسی قرار بدیم (طبیعتا با اطلاع کاربر).
  • مقیاس‌پذیری: یکی از بزرگترین گلوگاه‌های بیزنس‌های هوش مصنوعی، همیشه مقیاس‌پذیری نسبتا پایینیه که دارند. تقریبا هرجایی که مانی رو پرزنت می‌کردم، بعد از این سوال کلیشه‌ای مسخره که با میدجرنی چه فرقی داره می‌پرسیدند شما چطوری اسکیل می‌کنید؟ خب MCPها این مساله رو هم حل می‌کنند. در واقع می‌تونن برای چند مدل، چندین و چند کاربر و … همزمان کار کنند و مشکلات مرتبط رو به راحتی کاهش بدن.

معایب MCPها

  • پیچیدگی در پیاده‌سازی اولیه: از اونجایی که میشه MCPها رو نوعی از IaC یا Infrastructure as Code دونست، میشه گفت این مشکل جهان‌شمول پیاده‌سازی اولیه طولانی رو همه ابزارهای این‌چنینی دارند. حداقل روی خوب ماجرا اینه که این کار «فقط یک بار» انجام داده میشه و بعدش نیاز به تکرار مکررات نیست.
  • وابستگی به کیفیت مدل: طبیعتا مدلی مثل Gemma 27B با مدلی مثل OpenAI GPT 5 در کیفیت یکسان نیست و باید این رو هم خودتون و هم مشتری‌های احتمالیتون در نظر بگیره. حالا باز با استفاده از مدل‌های بزرگتر، این مشکل تا حد زیادی پوشش داده میشه. یعنی رفتن سمت مدلی مثل GLM یا Kimi K2 یا DeepSeek V3.1 و …، این مسائل رو می‌تونیم تا حد بسیار خوبی حل کنیم.
  • استفاده زیاد از توکن: در نهایت، از اونجایی که هربار مدل رو در نقش «کلاینت» قرار می‌دیم، تعداد زیادی توکن مصرف میشه که البته این موضوع هم تا حد خیلی خوبی، توسط شرکت‌هایی مثل Cloudflare یا حتی خود آنتروپیک، در حال حل شدنه که در آینده نه چندان دور در موردش خواهم نوشت.

همانطور که می‌بینید، MCP هم روش خالی از عیب و ایرادی نیست ولی روش مطمئن و خوبی برای اجرای ابزارهامون از طریق مدل‌های زبانیه. شما می‌تونید از این روش استفاده کنید و مثلا گوگل کلندر یا اینستاگرامتون رو مدیریت کنید یا چند مدل رو به هم متصل کنید و یک ابرابزار بسازید. در نهایت، همه چیز برمی‌گرده به این که خودتون قصد انجام چه کاری داشته باشید.

سخن پایانی

در پایان باید این موضوع رو متذکر بشم که هوش مصنوعی، مثل همه ابزارهایی که تا الان ازش استفاده کردیم، یک ابزاره. یک ابزار برای پیش‌برد کارهامون و به قول سرمایه‌گذاران سیلیکون‌ولی، برای انجام کارهای بیشتر در زمان کوتاهتر و خب دلیل محبوبیت و جذابیت زیادش هم برای عموم مردم، تا الان همین بوده. هرچیزی که هم که حول هوش مصنوعی ساخته شده مثل همین MCP ها، دقیقا برای اینه که زندگی ما راحتتر بشه و کارهای تکرار پذیرمون کمتر.

اگر علاقمند به محتوای هوش مصنوعی در این سبک هستید، علاوه بر این بلاگ می‌تونید کانال تلگرام من رو هم دنبال کنید و اونجا هم مطالب کوتاه و اخباری که در این مورد می‌نویسم رو مطالعه کنید.

Share