Anonymous Poll
27%
بیشتر باهاش چت میکنم و از پاسخهاش استفاده میکنم، توی برنامهنویسهام نقش جدی نداره فعلا.
43%
بهطور جدی برای استفاده در محصولات در دست توسعه برنامهریزی کردم.
35%
دوست دارم توسعه دادن (مثل semantic kernel یا langchain) رو یاد بگیرم و اگر نیاز بود استفاده کنم
5%
اینا همهاش مسخرهبازیه، تا وقتی if و else هست، AI چرا؟؟
22%
مثالها و مطالب رو پیگیرم و منتظر بعدیهاش هستم.
6%
مطالب مرتبط با AI در حد کلیات و مفاهیم خوبه، جزئی نشو.
22%
لطفا پکیج موفقیت معرفی کن و از رازهای زیبایی برامون بگو
tech-afternoon
😂 دم همگی گرم...
دیشب وقتی دیدم مطالب و مثالهایی که برای AI نوشتم از پکیج موفقیت و رازهایی زیبایی هم کمطرفدارتر بودن، اولین چیزی که یادم افتاد این نظرسنجی تاریخی سیامک انصاری بود 😅
تصمیم دادهمحور همیشه خوبه 😊 لذا باید در فرم و محتوای مطالب و انتخاب موضوعات تجدید نظر کرد 😉
دیشب وقتی دیدم مطالب و مثالهایی که برای AI نوشتم از پکیج موفقیت و رازهایی زیبایی هم کمطرفدارتر بودن، اولین چیزی که یادم افتاد این نظرسنجی تاریخی سیامک انصاری بود 😅
تصمیم دادهمحور همیشه خوبه 😊 لذا باید در فرم و محتوای مطالب و انتخاب موضوعات تجدید نظر کرد 😉
👍4❤1
سال ۲۰۲۳، Andrej Karpathy مدیر سابق هوشمصنوعی تسلا و جزو تیم بنیانگذار OpenAI و فارغالتحصیل دکتری علوم کامپیوتر استنفورد یه توییت زد که:
داغ ترین زبان برنامه نویسی جدید «انگلیسی» است!
خُب معنی این توییت مشخص بود، اینکه ملت پرامپت مینویسن به جای کُد! چند هفته پیش توییت دیگهای زد که توضیح داد نوع جدیدی از کد نویسی به وجود اومده که اسمش رو «vibe coding» گذاشته، یعنی نوعی از برنامهنویسی که فرد کلاً کد و درک روال برنامه رو بیخیال شده و فقط خواستهاش رو با LLM طرح میکنه، حتی کد تولید شده رو هم نمیخونه و مستقیم اجراش میکنه، اگر نتیجه دلخواه نبود یا خطا داد، فقط متن خطا یا رفتار دلخواهش رو دوباره به LLM میده تا نهایتا به نتیجه دلخواهش برسه (مثل این جواگرهای که افتادن روی Cursor)
بعضاً حتی تایپ هم نمیکنن و با SuperWhisper صحبت می کنن! این کدها شاید برای افراد غیربرنامهنویس، محصولات تفننی و آخرهفتهای خوب باشه، ولی با «محصول» فاصله داره.
حتی از تیکه کدهایی که قبلا بعضی برنامهنویسها از stackoverflow کپی/پیست میکردن و درکی ازش نداشتن و صرفاً کار میکرد هم بارها بدتره...
اینا ته تهش به درد اساتید و نوابغ اینستاگرام میخوره که پکیج برنامهنویس شدن در ۱ ساعت و درآمد میلیان دلاری در روز بفروشن!
این vibe coding میتونه نیمه تاریک هوش مصنوعی برای برنامهنویسها باشه! دقت کنید: برای مثلا کسی که کدنویسی برای تحلیل داده بلد نیست و با استفاده از این سرویسها توانمندتر میشه تا کارهای خودش رو «آگاهانه نسبت به نتایج» ولی «ناآگاه نسبت به فرایند» به نتیجه برسونه (مثل یک حسابدار) اتفاقا میتونه خوب باشه. ولی برای برنامهنویس، نه!
برای یادگیری یک زبان برنامهنویسی جدید، یا تکنیکهی جدید، مشروط به فرض کردن LLM به عنوان یک معلم صبور که از سوالاتمون خسته نمیشه، خیلی خوبه؛ ولی به عنوان مرجعی برای کپی کردن و بعدتر پیست کردن، نه!
این vibe coding میتونه مثل یک مخدر توهمزا، فرد رو دچار توهم توانمندی کنه، و ناخواسته توی مسیری بیوفته که بعدتر بیآبرویی براش بسازه.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27👏2❤1
هر ورودی ای که ما به مدل زبانی یا هوش مصنوعی مولد بدیم، از دل یک embedded model عبور میکنه، با یک semantic search پردازش میشه. پرداختن به محاسبات ریاضیاش از حوصله این مطلب فراتره و توی لایهی کاربری هم کاربردی نداره ولی مباحث جالبی هستن که اگر کسی دوست داشت بگه تا مقاله یا کتابهای خوبی که میتونه کمک کنه معرفی کنم. برای همین توی این پست، به جای رفتن سراغ «مار» بیایم بریم سراغ
موافقین؟
فرض کنین به یه مدل زبانی، یک عبارت خیلی ساده رو بدیم؛ چی میشه؟ اول باید تبدیل به یه سری عدد اعشاری بشه بعد دیگه هر چی هست تا قبل از مرحله خروجی، عمدتا جبر خطیه! علت اینکه میگیم این مدلها واقعا هوشمند نیستن، اینه که فقط یَکعالمه مشابهت رو بررسی میکنن و شبیهها رو کنار هم میچینن. اعجازشون اینه که این یَکعالمه یعنی مثلا توی چتجیپیتی ۷۰۰ میلیارد! یعنی نمیفهمه سیب احتمال اینکه سرخ یا زرد با سبز باشه کمتر از اینه که بنفش باشه، و اینکه بنفش باشه کمتر از اینه که پشمالو باشه!
یه کد کوچولو نوشتم برای توضیح این داستان:
۲ تا کلمه + یه کاما + علامت تعجب میشه ۱۰۲۴ تا عدد:
Embedding for 'Hello, world!':
Embedding Length: '1024'!
0.017290225, 0.04488248, 0.00056118704, -0.009004725, -0.045384012, 0.008568012, 0.07241785, 0.04243991, 0.047746666, 0.0021948903, 0.007101463,...
از خوبیهای semantic kernel به جز اینکه نسخههای سیشارپ، پایتون و جاوا داره اینه که خیلی کنترل خوبی روی فرایند داخلی بهمون میده و فقط یه rest client برای صدا زدن سرویسها نیست. به سادگی میشه امبدینگمدل رو دید... این یه مقدمه ساده بود از اینکه درک کنیم چرا باید از وکتور دیتابیس استفاده کرد. توی وکتور دیتابیس ما کلی عدد داریم، این اعداد از کجا میان؟ بله، از همین امبدینگمدل. پس دلیل اینکه ما برای RAG نیاز به وکتوردیتابیس به جای دیتابیس کلاسیک (مثل RDBMS) داریم.
این کد خیلی کوچیک که نوشتم رو نگاه کنید یا اگر دوست داشتید اجرا کنید. از ollama + یک مدل کوچیک با ۳۳۵ میلیون پارامتر + semantic kernel استفاده کردم، برای دیدن اینکه با یه مدل کوچیک، عبارت Hello World تبدیل به چی میشه!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 مثال RAG با استفاده از Qdrant
وکتور دیتابیس Qdrant یک پایگاه داده برداری (Vector Database) و موتور جستجوی برداری کدبازه که برای ذخیره و جستجوی بردارهای High-dimensional Embeddings طراحی شده. یک ابزار با قابلیت مدیریت حجم بالای دادههای برداری و با ارائه API ساده ولی در عین حال قدرتمند (مثل gRPC و REST)، ما رو توی پیادهسازی سرویسهای هوشمند و مبتنی بر جستجوی برداری کمک میکنن. کارهایی مثل RAG که توی پستهای قبلی توضیح دادم... البته یه محیط گرافیکی تحت وب خوب هم همراه خودش داره.
حالا برگردیم به مثالی که چند پست قبل توضیح دادم و نمونه سادهاش رو توی مموری موقت دیدیم. یعنی RAG قیمت ارز (بهترین مثال برای ما ایرانیها چون بهروزترین مدلهای هوش مصنوعی هم دادههاشون از نرخ ارز ما خاطرات دوردسته و پیشبینیاش هم محال؛ پس یقینا فقط RAG باید داشته باشیم براش 😁 )
همون مثال رو با Qdrant نوشتم. البته با PostgreSQL و pgvector هم نوشتم که هنوز فایل راهنماش کامل نشده... (به زودی ایشالا)
📱 📔 کد روی گیتهاب
خروجی اینطوریه که اول با دادههای خام llama 3.2 (نسخه ۳ میلیارد پارامتر) مزخرف مینویسه، بعد میریم از bonbast.org نرخ ارز رو آنلاین میگیریم، توی وکتور دیتابیس ذخیره میکنیم و بعد دوباره همون سوال رو میپرسیم، ولی دیگه مزخرف نمینویسه...)
به راحتی Qdrant رو با داکر میتونید روی ماشین خودتون اجرا کنید، ollama و مدل llama 3.2 (3b) هم همینطور.
💬 سوال؟ نظر؟ بحث؟
وکتور دیتابیس Qdrant یک پایگاه داده برداری (Vector Database) و موتور جستجوی برداری کدبازه که برای ذخیره و جستجوی بردارهای High-dimensional Embeddings طراحی شده. یک ابزار با قابلیت مدیریت حجم بالای دادههای برداری و با ارائه API ساده ولی در عین حال قدرتمند (مثل gRPC و REST)، ما رو توی پیادهسازی سرویسهای هوشمند و مبتنی بر جستجوی برداری کمک میکنن. کارهایی مثل RAG که توی پستهای قبلی توضیح دادم... البته یه محیط گرافیکی تحت وب خوب هم همراه خودش داره.
حالا برگردیم به مثالی که چند پست قبل توضیح دادم و نمونه سادهاش رو توی مموری موقت دیدیم. یعنی RAG قیمت ارز (بهترین مثال برای ما ایرانیها چون بهروزترین مدلهای هوش مصنوعی هم دادههاشون از نرخ ارز ما خاطرات دوردسته و پیشبینیاش هم محال؛ پس یقینا فقط RAG باید داشته باشیم براش 😁 )
همون مثال رو با Qdrant نوشتم. البته با PostgreSQL و pgvector هم نوشتم که هنوز فایل راهنماش کامل نشده... (به زودی ایشالا)
📱 📔 کد روی گیتهاب
خروجی اینطوریه که اول با دادههای خام llama 3.2 (نسخه ۳ میلیارد پارامتر) مزخرف مینویسه، بعد میریم از bonbast.org نرخ ارز رو آنلاین میگیریم، توی وکتور دیتابیس ذخیره میکنیم و بعد دوباره همون سوال رو میپرسیم، ولی دیگه مزخرف نمینویسه...)
به راحتی Qdrant رو با داکر میتونید روی ماشین خودتون اجرا کنید، ollama و مدل llama 3.2 (3b) هم همینطور.
Please open Telegram to view this post
VIEW IN TELEGRAM
این روزها که خبر تغییر لایسنس AutoMapper و MediatR و MassTransit به جمع قبلیها یعنی ImageSharp, IdentityServer, Fluent Assertions پیوست که تازه اینا اکوسیستم داتنت بودن، و اگر فارغ از اکوسیستم نگاه کنیم Redis و Elastic و... هم اضافه میشن؛ خوبه تا فرایند انتخاب تکنولوژی، مدیریت فنی محصول، بودجهبندی و... رو مرور کنیم.
چقدر تیمها بابت جوگیری و چپوندن انبوه کتابخونهها به پروژه با هدف عقب نیوفتادن از موج وبلاگها و ویدیوهای بلاگرهای تکنولوژی، خودشون و اعصابشون و محصول و زمان رو دچار چالش کردن...
لذا خوبه تا مسیر اصولی رو یاد بگیریم، کاری که توی تیمهای بزرگ عموما توسط technology manager هدایت میشه. با یه مثال انترپرایز بزنم تا بعدن نسبت به سایز کوچکتر بریم جلو:
شما میخواهید از کتابخونه A استفاده کنید، اول چک میکنید ببینید آیا توی green book سازمان لیست شده یا نه. اگر نشده باشه، جک میکنید ببینید کاری که اون کتابخونه قراره انجام بده، در دنیای محصولات تجاری، چقدر هزینه داره؟! و اگر کدباز است، نوع لایسنسش چیه؟ چند نفر توسعهدهنده فعال داره؟ کامیونیتیاش چقدر بزرگه؟ بنیه مالی این پروژه چجوریه؟ آیا جایگزین کدباز یا تجاری با امکانات مشابه یا حداقل نیاز ما وجود داره؟ و سوالات دیگهای که بهمون کمک کنه تا چیزی رو انتخاب کنیم که آینده محصول تحت تاثیر عمیق قرار نگیره. بعد، موضوع پیادهسازی پیش میاد که کد ما چقدر قابلیت تعویض قطعات پازلش رو داره؟ (وابستگیها با چقدر تغییر قابل تغییر هستن؟)
خلاصه اینکه توسعه محصول فقط استفاده از کتابخونهها نیست، انتخاب ابزار هم بخشی از مسیر و نیازمندیهای دانش و تجربه است. توسعه خیلی از محصولات «غلط اضافی» شرکتها هستند!! (با توجه به استعداد مالی و بنیه فنی و...) کما اینکه تاسیس شرکت و استقلال هم «غلط اضافی» برخی علاقهمندانِ پوزیشن مدیرعاملیه....
چقدر تیمها بابت جوگیری و چپوندن انبوه کتابخونهها به پروژه با هدف عقب نیوفتادن از موج وبلاگها و ویدیوهای بلاگرهای تکنولوژی، خودشون و اعصابشون و محصول و زمان رو دچار چالش کردن...
لذا خوبه تا مسیر اصولی رو یاد بگیریم، کاری که توی تیمهای بزرگ عموما توسط technology manager هدایت میشه. با یه مثال انترپرایز بزنم تا بعدن نسبت به سایز کوچکتر بریم جلو:
شما میخواهید از کتابخونه A استفاده کنید، اول چک میکنید ببینید آیا توی green book سازمان لیست شده یا نه. اگر نشده باشه، جک میکنید ببینید کاری که اون کتابخونه قراره انجام بده، در دنیای محصولات تجاری، چقدر هزینه داره؟! و اگر کدباز است، نوع لایسنسش چیه؟ چند نفر توسعهدهنده فعال داره؟ کامیونیتیاش چقدر بزرگه؟ بنیه مالی این پروژه چجوریه؟ آیا جایگزین کدباز یا تجاری با امکانات مشابه یا حداقل نیاز ما وجود داره؟ و سوالات دیگهای که بهمون کمک کنه تا چیزی رو انتخاب کنیم که آینده محصول تحت تاثیر عمیق قرار نگیره. بعد، موضوع پیادهسازی پیش میاد که کد ما چقدر قابلیت تعویض قطعات پازلش رو داره؟ (وابستگیها با چقدر تغییر قابل تغییر هستن؟)
خلاصه اینکه توسعه محصول فقط استفاده از کتابخونهها نیست، انتخاب ابزار هم بخشی از مسیر و نیازمندیهای دانش و تجربه است. توسعه خیلی از محصولات «غلط اضافی» شرکتها هستند!! (با توجه به استعداد مالی و بنیه فنی و...) کما اینکه تاسیس شرکت و استقلال هم «غلط اضافی» برخی علاقهمندانِ پوزیشن مدیرعاملیه....
👍15⚡4 2
اگر حضرت سعدی در زمانهی ما زیست میکرد، احتمالا علاوه بر «دم فرو بستن به وقت گفتن، و گفتن به وقت خاموشی» دو چیز دیگه رو هم طَیرهٔ عقل اعلام میفرمود:
۱: ست کردن جلسه بدون ذکر رئوس مطالب توی ایمیل دعوت
۲: ساختن تیکتی که توضیح و acceptance criteria دقیق نداره
* طَیرهٔ عقل: سبک مغزی
** این لیست مستعد کامل شدن تا دهها مورد طَیرهٔ عقل است، توی کامنت بنویسید، حضرت سعدی حتمن مطالعه خواهند کرد و در نسخ جدید گلستان اعمال خواهند کرد 🤓
۱: ست کردن جلسه بدون ذکر رئوس مطالب توی ایمیل دعوت
۲: ساختن تیکتی که توضیح و acceptance criteria دقیق نداره
* طَیرهٔ عقل: سبک مغزی
** این لیست مستعد کامل شدن تا دهها مورد طَیرهٔ عقل است، توی کامنت بنویسید، حضرت سعدی حتمن مطالعه خواهند کرد و در نسخ جدید گلستان اعمال خواهند کرد 🤓
😁14👍3👏2
یه پروژه جذاب و کاربردی برای اتصال AI Assistentها...
همزمان با دسترسی عمومی Agent mode و پشتیبانی از MCP روی VSCode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6 3🔥2
پروژه شخصی (بخوانید دلی) لینوس توروالدز که تبدیل به ابزار روزمره ما شد...
اگر دوست دارید بدونید نبوغ و پشتکار این مرد چقدره، همین بس که اولین نسخهی کار بکن git طی ۵ روز نوشته شد!
پیشنهاد میکنم خوب یاد بگیرید، در مورد معماری و فایلسیستم git و VFSForGit بخونید که بسی جذابه!
توی یکی از جلسات تکافترنون سالها پیش در موردش مفصل گفتم، اگر و اگر فایل صوتی جلسه رو پیدا کنم میگذارم توی کانال.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12 7
🔄 معرفی Agent2Agent Protocol (A2A) از گوگل!
امروز گوگل توی کنفرانس Cloud Next پروتکل جدید Agent2Agent (A2A) رو معرفی کرد. این پروتکل باعث میشه تا AIها بدون توجه به اینکه با چه فریمورکی ساخته شدن، بتونن با هم ارتباط برقرار کنن. یعنی دیگه مثل این نیست که هر مدل باید به مدل خودش حرف بزنه؛ حالا همه میتونن با هم گپ بزنن! A2A تکمیلکننده مسیر Model Context Protocol (MCP) از آنتروپیک است (شرکت خالق Claude.ai)
تو این سیستم، یه تقسیمبندی ساده داریم: یه جوری AIها به دو دسته تقسیم میشن؛ یه دسته که "کلاینت" هستن و درخواستها رو میدن و دستهی دیگه که "ریموت"، یعنی درخواستها رو انجام میدن. این یه جور «قرارداد ارتباطی» به وسیله استانداردهای HTTP, SSE, و JSON-RPC فراهم میکنه و حتی از احراز هویت و سطح دسترسی هم پشتیبانی میکنه. پروتکل از قابلیتهای مورد نیاز برای کارهای طولانی مدت هم پشتیبانی میکنه، یعنی میتونه بازخوردها، اعلانها و وضعیت روز رو به صورت لحظهای به شما گزارش بده.
همچنین لازم بدونید که گوگل تاکید میکنه این پروتکل، Agent2Agent، قرار نیست جایگزین Model Context Protocol (MCP) بشه؛ بلکه یک مکمل برای اون محسوب میشه. در واقع MCP برای دسترسی به دادهها به صورت استاندارد استفاده میشه و Agent2Agent هم برای ارتباط مستقیم بین مدلها به کار میره. در کنار همکاری بیش از ۵۰ شریک فناوری معروف مثل Atlassian, Box, MongoDB, Salesforce و ...، این نوآوری گام مهمی توی تقویت همکاری هوش مصنوعیها بین خودشونه.
امروز گوگل توی کنفرانس Cloud Next پروتکل جدید Agent2Agent (A2A) رو معرفی کرد. این پروتکل باعث میشه تا AIها بدون توجه به اینکه با چه فریمورکی ساخته شدن، بتونن با هم ارتباط برقرار کنن. یعنی دیگه مثل این نیست که هر مدل باید به مدل خودش حرف بزنه؛ حالا همه میتونن با هم گپ بزنن! A2A تکمیلکننده مسیر Model Context Protocol (MCP) از آنتروپیک است (شرکت خالق Claude.ai)
تو این سیستم، یه تقسیمبندی ساده داریم: یه جوری AIها به دو دسته تقسیم میشن؛ یه دسته که "کلاینت" هستن و درخواستها رو میدن و دستهی دیگه که "ریموت"، یعنی درخواستها رو انجام میدن. این یه جور «قرارداد ارتباطی» به وسیله استانداردهای HTTP, SSE, و JSON-RPC فراهم میکنه و حتی از احراز هویت و سطح دسترسی هم پشتیبانی میکنه. پروتکل از قابلیتهای مورد نیاز برای کارهای طولانی مدت هم پشتیبانی میکنه، یعنی میتونه بازخوردها، اعلانها و وضعیت روز رو به صورت لحظهای به شما گزارش بده.
همچنین لازم بدونید که گوگل تاکید میکنه این پروتکل، Agent2Agent، قرار نیست جایگزین Model Context Protocol (MCP) بشه؛ بلکه یک مکمل برای اون محسوب میشه. در واقع MCP برای دسترسی به دادهها به صورت استاندارد استفاده میشه و Agent2Agent هم برای ارتباط مستقیم بین مدلها به کار میره. در کنار همکاری بیش از ۵۰ شریک فناوری معروف مثل Atlassian, Box, MongoDB, Salesforce و ...، این نوآوری گام مهمی توی تقویت همکاری هوش مصنوعیها بین خودشونه.
Googleblog
Google for Developers Blog - News about Web, Mobile, AI and Cloud
Explore A2A, Google's new open protocol empowering developers to build interoperable AI solutions.
👍10🔥2❤1 1
مسعود دانشپور عزیز، برای تیمش توی دیجیکالا دنبال چند مهندس نرمافزار خبره می گرده که از پس تراکنش های بسیار بالا مثل بلک فرایدی بر بیان، طبیعتا افرادی که خودشون رو واجد شرایط بدونن اپلای میکنن و براشون آرزوی موفقیت دارم.
به نظرم اومد شاید دوستانی باشن که دوست داشته باشن بدونن نقشهراه و توصیف دقیقتر چالشهای این تیپی چیه، و برای اینکه در آینده بتونن برای موقعیتهای مشابه اپلای کنن، چه چیزهایی رو باید دقیقتر یاد بگیرن و تمرین کنن، و مسیر پیشنهادی چی میتونه باشه.
اگر جلسه آنلاین با محوریت بررسی این شرح شغلی و موارد مشابه براتون جالبه لطفا با ایموجی بگید تا اگر حدنصابی مناسبی داشت، برای روز یکشنبه یه دورهمی آنلاین داشته باشیم 😊
اگر حتمن شرکت میکنید:⚙️
اگر شاید شرکت میکنید: 🤓
به نظرم اومد شاید دوستانی باشن که دوست داشته باشن بدونن نقشهراه و توصیف دقیقتر چالشهای این تیپی چیه، و برای اینکه در آینده بتونن برای موقعیتهای مشابه اپلای کنن، چه چیزهایی رو باید دقیقتر یاد بگیرن و تمرین کنن، و مسیر پیشنهادی چی میتونه باشه.
اگر جلسه آنلاین با محوریت بررسی این شرح شغلی و موارد مشابه براتون جالبه لطفا با ایموجی بگید تا اگر حدنصابی مناسبی داشت، برای روز یکشنبه یه دورهمی آنلاین داشته باشیم 😊
اگر حتمن شرکت میکنید:
اگر شاید شرکت میکنید: 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Learning With M
سلام.
من مسعود دانش پور هستم.
همسر، پدر، پسر، برادر، انسان و مهندس نرم افزار.👻
اینجا جایی هست که من تلاش می کنم موضوعاتی که برای یک مهندس نرم افزار مهم و لازمه رو بازگو کنم.
آکادمی یادگیری با M :
https://academy.daneshpour.ir
من مسعود دانش پور هستم.
همسر، پدر، پسر، برادر، انسان و مهندس نرم افزار.👻
اینجا جایی هست که من تلاش می کنم موضوعاتی که برای یک مهندس نرم افزار مهم و لازمه رو بازگو کنم.
آکادمی یادگیری با M :
https://academy.daneshpour.ir
بالاخره بعد از کشوقوسهای فراوون (شروع جدیاش از سال ۲۰۲۱ بود) بالاخره امکان Extension members به سیشارپ ۱۴ (نسخه پیشنمایش ۳) اومد.
از سیشارپ ۳ میتونیم اکستنشنمتد برای تایپها بنویسیم. ولی حالا دیگه محدود به متد نیستیم و property و static method هم پشتیبانی میشه.
توی سیشارپ ۱۴ یه بلاک جدید به نام extension داریم:
public static class Extensions
{
extension(IEnumerable<int> source)
{
public IEnumerable<int> WhereGreaterThan(int threshold)
=> source.Where(x => x > threshold);
public bool IsEmpty
=> !source.Any();
}
}
توی مثال بالا، عملا دیگه از this استفاده نشده، قبلا همین رو باید اینجوری مینوشتیم:
WhereGreaterThan(this IEnumerable<int> source, int threshold)
در حالیکه:
حتی اینو میتونید به صورت جنریک هم بنویسید:
extension<T>(IEnumerable<T> source)
where T : INumber<T>
{
public IEnumerable<T> WhereGreaterThan(T threshold)
=> source.Where(x => x > threshold);
public bool IsEmpty
=> !source.Any();
}
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
core/release-notes/10.0/preview/preview3/csharp.md at main · dotnet/core
.NET news, announcements, release notes, and more! - dotnet/core
🔥7👍6👏1
ارزش «باور به توانایی»، اعتبار فردی...
احتمالا با خانم یعنی میرا موراتی، CTO سابق OpenAI که از ابتدای طراحی ChatGPT نقش داشت و چند وقت پیش استعفا داد تا دنبال رویای خودش بره آشنایی دارین.
استارتاپ ایشون که الان تعداد انگشتشمار! کارمند داره و هنوز محصولی بیرون نداده، یعنی Thinking Machines Lab الان ۲ میلیارد دلار جذب سرمایه (خطرپذیر) داشته.
این نمونه واقعی اینه که اعتبار و باوری که آدمها از خودشون میسازن، چقدر میتونه ارزشمند باشه.
حالا میرا موراتی یک نمونه رایج و نرمال نیست. ولی اینکه ما بتونیم توی تیم یا شرکت، ایدهی جدید، تغییر بزرگ، یا یک نوآوری پرریسک رو پیشنهاد بدیم و سازمان یا مدیر «عاقل»، با تکیه بر باور توانایی و اراده ما، فضا و امکان کار روی اون طرح رو بده، بخشی از «پرسنال برندینگ» است که ذره ذره و با ممارست و تلاش فقط به دست میاد.
صحبتم در مورد اعتبار متخلخل و پوشالی نیست، در مورد مدیر احمق و نفهم هم نیست... چون با جفت اینا هم میشه امکان و فضای کار روی محصول یا ایده اشتباه و محکوم به شکست رو پیدا کرد.
از این دست نمونهها زیادن، چه نمونههای خارجی چه ایرانی، توی همه نمونههایی که حداقل من دیدم، تلاش و ممارست فردی، صبر، و اعتباری که پله به پله ساخته شده، وجه مشترک آدمهایی بوده که بهشون اعتماد شده، و کارهای بزرگ کردن...
فقط هم محدود به نرمافزار نیست، «گاها» حتی اون آدمها وارد حوزه جدیدی شدن که همپوشانی کاملی با تجربیات قبلیشون نداشته.
یه سری مهارتهای نَرم (soft skills) وجود داره که میتونه کمک کنه تا hard skills ما طوری پرورش پیدا کنه که صاحب «اعتبار و اعتماد» اجرایی بشیم، و شاید این یکی از مهمترین دستاوردهای کاری یک فرد بتونه باشه، یعنی دیگرانی باشن که باور و اعتماد داشته باشن به توانایی به انجام رسوندن کارهای دشوار یا جدید...
💬 تجربهای داشتید؟ نظری دارین؟
احتمالا با خانم یعنی میرا موراتی، CTO سابق OpenAI که از ابتدای طراحی ChatGPT نقش داشت و چند وقت پیش استعفا داد تا دنبال رویای خودش بره آشنایی دارین.
استارتاپ ایشون که الان تعداد انگشتشمار! کارمند داره و هنوز محصولی بیرون نداده، یعنی Thinking Machines Lab الان ۲ میلیارد دلار جذب سرمایه (خطرپذیر) داشته.
این نمونه واقعی اینه که اعتبار و باوری که آدمها از خودشون میسازن، چقدر میتونه ارزشمند باشه.
حالا میرا موراتی یک نمونه رایج و نرمال نیست. ولی اینکه ما بتونیم توی تیم یا شرکت، ایدهی جدید، تغییر بزرگ، یا یک نوآوری پرریسک رو پیشنهاد بدیم و سازمان یا مدیر «عاقل»، با تکیه بر باور توانایی و اراده ما، فضا و امکان کار روی اون طرح رو بده، بخشی از «پرسنال برندینگ» است که ذره ذره و با ممارست و تلاش فقط به دست میاد.
صحبتم در مورد اعتبار متخلخل و پوشالی نیست، در مورد مدیر احمق و نفهم هم نیست... چون با جفت اینا هم میشه امکان و فضای کار روی محصول یا ایده اشتباه و محکوم به شکست رو پیدا کرد.
از این دست نمونهها زیادن، چه نمونههای خارجی چه ایرانی، توی همه نمونههایی که حداقل من دیدم، تلاش و ممارست فردی، صبر، و اعتباری که پله به پله ساخته شده، وجه مشترک آدمهایی بوده که بهشون اعتماد شده، و کارهای بزرگ کردن...
فقط هم محدود به نرمافزار نیست، «گاها» حتی اون آدمها وارد حوزه جدیدی شدن که همپوشانی کاملی با تجربیات قبلیشون نداشته.
یه سری مهارتهای نَرم (soft skills) وجود داره که میتونه کمک کنه تا hard skills ما طوری پرورش پیدا کنه که صاحب «اعتبار و اعتماد» اجرایی بشیم، و شاید این یکی از مهمترین دستاوردهای کاری یک فرد بتونه باشه، یعنی دیگرانی باشن که باور و اعتماد داشته باشن به توانایی به انجام رسوندن کارهای دشوار یا جدید...
Please open Telegram to view this post
VIEW IN TELEGRAM
💯7👍5👏4
tech-afternoon
مسعود دانشپور عزیز، برای تیمش توی دیجیکالا دنبال چند مهندس نرمافزار خبره می گرده که از پس تراکنش های بسیار بالا مثل بلک فرایدی بر بیان، طبیعتا افرادی که خودشون رو واجد شرایط بدونن اپلای میکنن و براشون آرزوی موفقیت دارم. به نظرم اومد شاید دوستانی باشن که…
(⚠️ زمان جلسه تغییر کرده است!️) یکشنبه ۳۱ فروردین (۲۰ اپریل)؛ ساعت
لینک ثبتنام
* «اگر و اگر» تعداد افراد زیاد باشه «و» تنوع بین «جونیور به مدیور» و «مدیور به سنیور» به حد خوبی برسه، شاید همون یکشنبه ولی دو جلسه متناسب با سطوح مختلف برگزار شه.
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
دورهمی تکافترنون (مسیر شغلی) یکشنبه ۳۱ فروردین (۲۰ اپریل)
مرور مهارتهای مورد نیاز و مسیر رسیدن به مهندس ارشد نرمافزار
👍7🙏4🔥2
tech-afternoon
Please open Telegram to view this post
VIEW IN TELEGRAM
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
👏6😍4👍1😁1
ممنون از همه دوستانی که تشریف آوردن، امیدوارم هر چه زودتر توی جلسه دوم ببینمتون 😊🌱
لینک یوتیوب
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
بخش ۱: مرور مهارتهای مورد نیاز و مسیر رسیدن به مهندس ارشد نرمافزار
این جلسه حول اینه که ببینیم به عنوان توسعهدهندهای که از سطح Junior به Medior؛ یا از سطح Medior به Senior در حال رشد هستیم، در هر مرحله باید چه مهارتها و توانمندیهایی رو کسب کنیم تا بتونیم در شرکتهایی که چالشهایی مثل تعداد زیاد درخواست همزمان، یا پیچیدگیهای…
❤24🔥4
📝 روشهایی برای اولویتبندی نیازمندیها
وقتی یه تیم محصول یا توسعه تصمیم میگیره یه چیزی بسازه یا بهبود بده، معمولاً با کلی پیشنهاد و نیازمندی (requirement) مواجه میشه: از باگهای کوچیک گرفته تا فیچرهای کوچیک و بزرگ.
ولی واقعیت اینه که زمان، نیرو و بودجه محدوده (منابع محدود، در مقایسه با نیازهای نامحدود!). پس مهمه بدونیم چی رو باید اول انجام بدیم، چی رو میتونیم بذاریم برای بعد، و چی رو فعلاً انجام ندیم.
اینجاست که تکنیکهای اولویتبندی میان وسط. اینا ابزارهایی هستن که کمک میکنن:
*️⃣ خواستههای کاربر، کسبوکار و تیم توسعه رو دستهبندی کنیم.
*️⃣ تصمیمهای درستتری بگیریم.
*️⃣ روی چیزهایی تمرکز کنیم که بیشترین تأثیر رو دارن.
دو تا روش محبوب رو اینجا معرفی میکنم که میتونن کمک کنن. Kano Model و MoSCoW
🔍 مدل اول: Kano – وقتی رضایت کاربر مهمه
مدل Kano از اسم یه پروفسور ژاپنی به اسم «نوریآکی کانو» الهام گرفته شده. ایده اصلی اینه که همه فیچرها تأثیر یکسانی روی رضایت کاربر ندارن. بعضیاشون اگه نباشن، کاربر عصبانی میشه. بعضیا اگه باشن، خیلی خوشحال میشه. بعضیا هم بودن یا نبودنش براش فرقی نداره! (کاربر رو ذینفع (stakeholder) هم تعبیر میکنیم)
دستهبندی ویژگیها توی Kano:
*️⃣ گروه Basic Needs (Must-be): چیزایی که انتظار میره حتماً باشن. نبودش فاجعهست ولی بودنش کسی رو شگفتزده نمیکنه.
*️⃣ گروه Performance Needs: هرچی بهترش کنی، رضایت بیشتر میشه (مثلاً سرعت سایت یا دقت جستجو).
*️⃣ گروه Excitement Needs (Delighters): قابلیتهایی که کاربر انتظار نداره، ولی وقتی میبینه خوشحال میشه. (مثل auto-save هوشمند یا تم تیره پیشفرض)
*️⃣ گروه Indifferent: بودن یا نبودنش خیلی فرقی نمیکنه.
*️⃣ گروه Reverse: بعضیا ممکنه یه فیچر رو نخوان!
🔧 کاربرد: این مدل خیلی برای مصاحبه با کاربر و طراحی تجربه کاربری خوبه. کمک میکنه روی فیچرهایی تمرکز کنی که "دل کاربر رو میبره"، نه فقط اونایی که لازمه.
——————————————————-
📦 مدل دوم: MoSCoW – برای اولویتبندی سریع و پروژهمحور
اشتباه نشه؛ MoSCoW یه مخففه و ربطی به شهر مسکو نداره! 😄:
*️⃣ گروه Must have: اگه اینا نباشن، محصول کار نمیکنه.
*️⃣ گروه Should have: مهمن، ولی میتونن تاخیر بخورن.
*️⃣ گروه Could have: اگه وقت شد اضافهشون میکنیم.
*️⃣ گروه Won’t have (this time): الان انجامش نمیدیم، شاید بعداً.
🔧 کاربرد: MoSCoW بیشتر توی مدیریت پروژه و جلسههای برنامهریزی اسپرینت استفاده میشه. وقتی میخوای با تیم تصمیم بگیری که توی این بازه زمانی رو چی تمرکز کنید.
🧠 اگه خواستی بیشتر بدونی...
اولا هر کاری رو اگر «روشمند» یعنی بر اساس یک مدل بریم جلو، ولو کارهایی که بدیهی به نظر میان، عموما شانس موفقیت بالاتری داریم.
دوما، فقط این دو تا نیست؛ اگه دوست داری مدلهای بیشتری رو بررسی کنی یا روشهای دیگهای برای تصمیمگیری داشته باشی، اینا هم ارزش وقت گذاشتن دارن:
💬 شما از چه روشی برای اولویت دادن به نیازها و کارها استفاده میکنی؟
جلسه «مرور مهارتهای مورد نیاز و مسیر رسیدن به مهندس ارشد نرمافزار» رو بر اساس چرخه توسعه نرمافزار (SDLC) طرح کردم، و بخش اولش «نیازمندیها و تحلیل (Requirements & Analysis)» بود. چون از روشهای MoSCoW و Kano Model برای اولویتبندی نیازمندیها (Prioritization Techniques) اسم بردم، گفتم شاید بد نباشه برای دوستانی که آشنایی ندارن، کمی توضیح بدم.
وقتی یه تیم محصول یا توسعه تصمیم میگیره یه چیزی بسازه یا بهبود بده، معمولاً با کلی پیشنهاد و نیازمندی (requirement) مواجه میشه: از باگهای کوچیک گرفته تا فیچرهای کوچیک و بزرگ.
ولی واقعیت اینه که زمان، نیرو و بودجه محدوده (منابع محدود، در مقایسه با نیازهای نامحدود!). پس مهمه بدونیم چی رو باید اول انجام بدیم، چی رو میتونیم بذاریم برای بعد، و چی رو فعلاً انجام ندیم.
اینجاست که تکنیکهای اولویتبندی میان وسط. اینا ابزارهایی هستن که کمک میکنن:
دو تا روش محبوب رو اینجا معرفی میکنم که میتونن کمک کنن. Kano Model و MoSCoW
🔍 مدل اول: Kano – وقتی رضایت کاربر مهمه
مدل Kano از اسم یه پروفسور ژاپنی به اسم «نوریآکی کانو» الهام گرفته شده. ایده اصلی اینه که همه فیچرها تأثیر یکسانی روی رضایت کاربر ندارن. بعضیاشون اگه نباشن، کاربر عصبانی میشه. بعضیا اگه باشن، خیلی خوشحال میشه. بعضیا هم بودن یا نبودنش براش فرقی نداره! (کاربر رو ذینفع (stakeholder) هم تعبیر میکنیم)
دستهبندی ویژگیها توی Kano:
🔧 کاربرد: این مدل خیلی برای مصاحبه با کاربر و طراحی تجربه کاربری خوبه. کمک میکنه روی فیچرهایی تمرکز کنی که "دل کاربر رو میبره"، نه فقط اونایی که لازمه.
——————————————————-
📦 مدل دوم: MoSCoW – برای اولویتبندی سریع و پروژهمحور
اشتباه نشه؛ MoSCoW یه مخففه و ربطی به شهر مسکو نداره! 😄:
🔧 کاربرد: MoSCoW بیشتر توی مدیریت پروژه و جلسههای برنامهریزی اسپرینت استفاده میشه. وقتی میخوای با تیم تصمیم بگیری که توی این بازه زمانی رو چی تمرکز کنید.
🧠 اگه خواستی بیشتر بدونی...
اولا هر کاری رو اگر «روشمند» یعنی بر اساس یک مدل بریم جلو، ولو کارهایی که بدیهی به نظر میان، عموما شانس موفقیت بالاتری داریم.
دوما، فقط این دو تا نیست؛ اگه دوست داری مدلهای بیشتری رو بررسی کنی یا روشهای دیگهای برای تصمیمگیری داشته باشی، اینا هم ارزش وقت گذاشتن دارن:
روش RICE Scoring – برای اولویتبندی عددی و دادهمحور
روش WSJF – مخصوص تیمهای اجایل و SAFe
روش Opportunity Scoring – مبتنی بر نیازهای پنهان کاربر
روش Feature Buckets – دستهبندی فیچرها براساس تأثیر و استراتژی
روش Eisenhower Matrix – ساده ولی کاربردی برای تصمیمگیریهای روزمره
Please open Telegram to view this post
VIEW IN TELEGRAM
tech-afternoon
اگر نظر مثبتی نسبت به جلسه اول «مرور مهارتهای مورد نیاز و مسیر رسیدن به مهندس ارشد نرمافزار» داشتید و فکر میکنید ادامه بحث میتونه براتون جالب باشه، لطفا از طریق فرم زیر بگید 😊
🗓 برای روز یکشنبه ۷ اردیبهشت (۲۷ اپریل) ساعت ۱۸:۳۰ به وقت تهران
https://forms.gle/ayy2Q3MESKnhrNt3A
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
دورهمی تکافترنون (مسیر شغلی) یکشنبه ۷ اردیبهشت (۲۷ اپریل)
مرور مهارتهای مورد نیاز و مسیر رسیدن به مهندس ارشد نرمافزار
❤25
tech-afternoon
Please open Telegram to view this post
VIEW IN TELEGRAM
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
❤5
دیدید بعضیها هر کاری میگی نکن، میکنن و بالعکس...؟
حالا این ریپو برای همینجور آدمهاست...
اسمش هم state-of-the-art Shitcode است 😂
فکر کنم نوادگان لقمان حکیم روش contribute میکنن 😂
پینوشت: دلیل اینکه این ایام کمتر مطلب داریم، گرفتاری شخصی است و ایشالا به زودی دوباره فعال میشیم
پینوشت ۲: لطفا اگر موضوعی هست که فکر میکنید بهش بپردازیم میتونه مفید باشه، حتمن کامنت کنین 😉
حالا این ریپو برای همینجور آدمهاست...
اسمش هم state-of-the-art Shitcode است 😂
فکر کنم نوادگان لقمان حکیم روش contribute میکنن 😂
پینوشت: دلیل اینکه این ایام کمتر مطلب داریم، گرفتاری شخصی است و ایشالا به زودی دوباره فعال میشیم
پینوشت ۲: لطفا اگر موضوعی هست که فکر میکنید بهش بپردازیم میتونه مفید باشه، حتمن کامنت کنین 😉
🤣12😁2❤1
🤔 فارغ از هیجانزدگی و تحلیلهای مبتنی بر گمان، خوبه فکر کنیم در فاجعهی بندرعباس، نقش نرمافزار و تکنولوژی چی بود؟ نقش مدیرمحصولها تا مدیر تکنولوژی چی بود؟
چیزی که محرز است اینه که کانتینر(ها)ی با محتویاتی مستعد اشتعال یا انفجار در جای نامناسب و بدون مراقبت قرار گرفته. آیا جابجایی و چیدمان کانتینر، در یک اسکله بزرگ، بدون حضور نرمافزار ممکنه؟ آیا یک نرمافزار بد میتونه مسبب تخلف، سوءاستفاده، فساد، یا اهمالکاری و چنین فاجعههایی بشه؟ آیا یک مدیر تکنولوژی ناشایست، یک مدیرمحصول بیکفایت، یک بیزنسآنالیست ابله، میتونن جزو متهمین این داغ بزرگ باشن؟
من صحبت از سیستمهای اتوماسیون بندرگاهی و... که گرونقیمت و مشمول تحریم هستن نمیکنم. در مورد نرمافزار و تکنولوژیهای سادهتری صحبت میکنم که «کفایت و دانش» نیاز دارن و «مسئولیتپذیری». این اخیر رو اطلاع ندارم ولی با همون اندک تعاملاتی که سالها پیش با افراد، شرکتها، و سازمانهای مرتبط داشتم؛ نمیتونم نقش مدیران بیکفایت تکنولوژی و نرمافزار، یا حتی توسعهدهندهها و تحلیلگرهای کمدانش و بیتفاوت به کمدانشیشون رو کمرنگ بدونم...
مشکل اینجاست که اینقدر «جان» و «اعداد» تهی از معنی شده که ۷۰ نفر (تا این ساعت) برامون ساده شده و ته تهش ختم میشه به یک بنر یا متن رمانتیک توی اینستاگرام و تمام...
خوشحال میشم نظر شما رو بدونم... آیا نرمافزار و تکنولوژیهای در دسترس، و افراد مرتبط با تکنولوژی سهمی ولو اندک داشتند؟
چیزی که محرز است اینه که کانتینر(ها)ی با محتویاتی مستعد اشتعال یا انفجار در جای نامناسب و بدون مراقبت قرار گرفته. آیا جابجایی و چیدمان کانتینر، در یک اسکله بزرگ، بدون حضور نرمافزار ممکنه؟ آیا یک نرمافزار بد میتونه مسبب تخلف، سوءاستفاده، فساد، یا اهمالکاری و چنین فاجعههایی بشه؟ آیا یک مدیر تکنولوژی ناشایست، یک مدیرمحصول بیکفایت، یک بیزنسآنالیست ابله، میتونن جزو متهمین این داغ بزرگ باشن؟
من صحبت از سیستمهای اتوماسیون بندرگاهی و... که گرونقیمت و مشمول تحریم هستن نمیکنم. در مورد نرمافزار و تکنولوژیهای سادهتری صحبت میکنم که «کفایت و دانش» نیاز دارن و «مسئولیتپذیری». این اخیر رو اطلاع ندارم ولی با همون اندک تعاملاتی که سالها پیش با افراد، شرکتها، و سازمانهای مرتبط داشتم؛ نمیتونم نقش مدیران بیکفایت تکنولوژی و نرمافزار، یا حتی توسعهدهندهها و تحلیلگرهای کمدانش و بیتفاوت به کمدانشیشون رو کمرنگ بدونم...
مشکل اینجاست که اینقدر «جان» و «اعداد» تهی از معنی شده که ۷۰ نفر (تا این ساعت) برامون ساده شده و ته تهش ختم میشه به یک بنر یا متن رمانتیک توی اینستاگرام و تمام...
خوشحال میشم نظر شما رو بدونم... آیا نرمافزار و تکنولوژیهای در دسترس، و افراد مرتبط با تکنولوژی سهمی ولو اندک داشتند؟
👍11👌4🤔2