Forwarded from tech-afternoon (Amin Mesbahi)
💡 یک قدم به سمت کاربرد عینی مدل زبانی با RAG, CAG, KAG یا Fine Tuning
در حالت عادی، یه مدل زبانی از چند میلیارد تا چندصد میلیارد پارامتر آموزش میبینه، بلده به زبونهای مختلف حرف بزنه و جملاتی عاقلانه تا ابلهانه سرهم کنه. بلده دستور پخت سوشی تا قرمهسبزی بده و برای دلدردتون چایینبات تجویز کنه، ولی اینکه بالانس حساب آقای جمالی چقدره یا آییننامههای داخلی شرکتی که ما توش کار میکنیم یعنی کامپیوتراندیشان عصر نوین پاسارگاد با مدیریت آقای موکتپور رو که بلد نیست! پس باید راهی یاد بگیریم که مزخرفاتی که بلده رو با مزخرفات خودمون بیامیزیم و مزخرفات ترکیبی تولید کنیم. پس یه نگاه کلی به RAG، CAG, KAG و Fine Tuning بندازیم تا اگر مشتری داشت ادامهاش بدیم…
✅ مفهوم و کاربرد RAG یا Retrieval-Augmented Generation چیه؟
کار RAG اینه که دادههای مدل رو با دیتای ما تکمیل کنه؛ یعنی موقع جواب دادن به سؤال، میره از یه دیتابیس یا منبع خارجی (که عموما به صورت Vector database ذخیره میکنیم) اطلاعات جدید رو میگیره و بعد جواب میده. اینجوری دیگه همیشه اطلاعات سیستم خودمون رو در کنار قابلیتهای مدل اصلی داریم. این اطلاعات رو میتونیم نهایتا به شکل ساختارمند و مشخص (مثلا یه آبجکت یا یه ساختار JSON مشخص) برگردونیم، یا باهاش جمله بسازیم و مثل یه محاوره انسانی برگردونیمش.
چرا لازمه ازش استفاده کنیم؟
- اطلاعات بهروز و دقیقتر
- کاهش خطا و توهم در جوابهای مدل
- جوابهای دقیق و مبتنی بر داده واقعی
✅ مفهوم و کاربرد KAG یا Knowledge-Augmented Generation چیه؟
کاربرد و مفهموم KAG یه مرحله پیشرفتهتر از RAG هست که از گرافهای دانش ساختاریافته استفاده میکنه. یعنی علاوه بر دادههای معمولی، دادهها رو بهصورت ساختاریافته (مثل گراف دانش) به مدل میده و مدل میتونه از طریق این ساختارها منطق و استدلال چندمرحلهای انجام بده. (توی RAG کوئری داریم ولی اینجا گراف دانش)
چرا لازمه ازش استفاده کنیم؟
- افزایش دقت در حوزههای تخصصی
- استدلال چندمرحلهای و منطقی
- رعایت قوانین و مقررات مشخص (مثل حوزههای پزشکی و حقوقی)
✅ مفهوم و کاربرد CAG یا Cache-Augmented Generation چیه؟
مفهوم CAG یه جورایی نسخه سریعتر و سادهتر از RAG هست. توی CAG، دانش ثابت (مثل دفترچههای راهنما) از قبل تو حافظه (Cache) بارگذاری میشه و موقع جواب دادن لازم نیست هر بار اطلاعات رو از بیرون بگیره.
چرا لازمه ازش استفاده کنیم؟
- جوابهای سریعتر
- ساختار سادهتر و هزینه کمتر
- ثبات و یکپارچگی جوابها
✅ مفهوم و کاربر Fine Tuning (تنظیم دقیق) دیگه؟
یه سری دادههای محدود و مشخص رو به یه مدل زبانی که خیلی چیزا بلده، ولی دقیقاً کاری که میخوای رو درست انجام نمیده. اینجا میای از Fine Tuning استفاده میکنی؛ یعنی یه سری داده خاص خودمون رو میدیم بهش که یاد بگیره دقیقاً طبق اون چیزی که میخوایم جواب بده. از RAG خیلی سادهتر و ابتداییتره.
چرا لازمه ازش استفاده کنیم؟
- بهبود دقت مدل توی یه وظیفه خاص
- سفارشی کردن مدل برای کسبوکار یا حوزه خاص خودمون
- کاهش هزینهها (چون نیازی به آموزش یه مدل عظیم از صفر نداریم)
📎 طی ماههای پیش رو، SQL Server 2025 قابلیتهایی ارائه خواهد کرد که کارهای RAG و CAG و KAG رو بتونیم انجام بدیم. یعنی به جای استفاده از Vector Databaseها که الان ازشون برای RAG کمک میگیریم، میتونیم مستقیم از خود SQL Server کمک بگیریم. البته چون هنوز قابلیت vector اش رونمایی عمومی نشده، نمیشه قضاوت کرد که در مقایسه با نمونههای پرشمار VectorDBها چه جایگاهی داره.
مثل همیشه:💬 ⚙️ 😉
سال ۱۴۰۳ هم تموم شد و مثل ۲ سال قبلترش، روز و ساعتی نبود که هوشمصنوعی خصوصا از نوع مولدش از متن و تیتر اخبار بیوفته 😉 حالا اگر تا به امروز فقط باهاش چت کردین، یا همون چت رو با API انجام دادین، دیگه ۱۴۰۴ سالیه که خوبه از حاشیه به متن بیاریدش و «اگر و اگر ارزش افزودهای به محصولتون اضافه میکنه»، به شکل جدیتری ازش استفاده کنین. حالا این یعنی چی؟ مگه چت کردن چشه؟
در حالت عادی، یه مدل زبانی از چند میلیارد تا چندصد میلیارد پارامتر آموزش میبینه، بلده به زبونهای مختلف حرف بزنه و جملاتی عاقلانه تا ابلهانه سرهم کنه. بلده دستور پخت سوشی تا قرمهسبزی بده و برای دلدردتون چایینبات تجویز کنه، ولی اینکه بالانس حساب آقای جمالی چقدره یا آییننامههای داخلی شرکتی که ما توش کار میکنیم یعنی کامپیوتراندیشان عصر نوین پاسارگاد با مدیریت آقای موکتپور رو که بلد نیست! پس باید راهی یاد بگیریم که مزخرفاتی که بلده رو با مزخرفات خودمون بیامیزیم و مزخرفات ترکیبی تولید کنیم. پس یه نگاه کلی به RAG، CAG, KAG و Fine Tuning بندازیم تا اگر مشتری داشت ادامهاش بدیم…
کار RAG اینه که دادههای مدل رو با دیتای ما تکمیل کنه؛ یعنی موقع جواب دادن به سؤال، میره از یه دیتابیس یا منبع خارجی (که عموما به صورت Vector database ذخیره میکنیم) اطلاعات جدید رو میگیره و بعد جواب میده. اینجوری دیگه همیشه اطلاعات سیستم خودمون رو در کنار قابلیتهای مدل اصلی داریم. این اطلاعات رو میتونیم نهایتا به شکل ساختارمند و مشخص (مثلا یه آبجکت یا یه ساختار JSON مشخص) برگردونیم، یا باهاش جمله بسازیم و مثل یه محاوره انسانی برگردونیمش.
چرا لازمه ازش استفاده کنیم؟
- اطلاعات بهروز و دقیقتر
- کاهش خطا و توهم در جوابهای مدل
- جوابهای دقیق و مبتنی بر داده واقعی
کاربرد و مفهموم KAG یه مرحله پیشرفتهتر از RAG هست که از گرافهای دانش ساختاریافته استفاده میکنه. یعنی علاوه بر دادههای معمولی، دادهها رو بهصورت ساختاریافته (مثل گراف دانش) به مدل میده و مدل میتونه از طریق این ساختارها منطق و استدلال چندمرحلهای انجام بده. (توی RAG کوئری داریم ولی اینجا گراف دانش)
چرا لازمه ازش استفاده کنیم؟
- افزایش دقت در حوزههای تخصصی
- استدلال چندمرحلهای و منطقی
- رعایت قوانین و مقررات مشخص (مثل حوزههای پزشکی و حقوقی)
مفهوم CAG یه جورایی نسخه سریعتر و سادهتر از RAG هست. توی CAG، دانش ثابت (مثل دفترچههای راهنما) از قبل تو حافظه (Cache) بارگذاری میشه و موقع جواب دادن لازم نیست هر بار اطلاعات رو از بیرون بگیره.
چرا لازمه ازش استفاده کنیم؟
- جوابهای سریعتر
- ساختار سادهتر و هزینه کمتر
- ثبات و یکپارچگی جوابها
یه سری دادههای محدود و مشخص رو به یه مدل زبانی که خیلی چیزا بلده، ولی دقیقاً کاری که میخوای رو درست انجام نمیده. اینجا میای از Fine Tuning استفاده میکنی؛ یعنی یه سری داده خاص خودمون رو میدیم بهش که یاد بگیره دقیقاً طبق اون چیزی که میخوایم جواب بده. از RAG خیلی سادهتر و ابتداییتره.
چرا لازمه ازش استفاده کنیم؟
- بهبود دقت مدل توی یه وظیفه خاص
- سفارشی کردن مدل برای کسبوکار یا حوزه خاص خودمون
- کاهش هزینهها (چون نیازی به آموزش یه مدل عظیم از صفر نداریم)
مثل همیشه:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Forwarded from DevTwitter | توییت برنامه نویسی
یه چرخ زدم تو گیتهاب ، ملت کلی api key پوش کردن تو گیتهاب :)))
نتیجه وایب کدینگ با هوش مصنوعی
البته بیشتراش از کار افتاده بخاطر سیستم گیتهاب...
@DevTwitter | <Shojaei/>
نتیجه وایب کدینگ با هوش مصنوعی
البته بیشتراش از کار افتاده بخاطر سیستم گیتهاب...
@DevTwitter | <Shojaei/>
🔥3🤣1
Forwarded from TondTech (مسعود بیگی)
برای یکی از چند تا شرکت بزرگ اکوسیستم، دوستانم در حال تیم سازی هستند. اگر در حوزه دات نت مید (d3 به بالا) تا تک لید هستید و دوست دارید این فرصت رو بررسی کنید، رزومه تون رو برام بفرستین
برای سنجش خودتون نگاهی به این فریم ورک بندازید:
https://github.com/jorgef/engineeringladders
@Merkousha
برای سنجش خودتون نگاهی به این فریم ورک بندازید:
https://github.com/jorgef/engineeringladders
@Merkousha
🔥4
Forwarded from .NET Fun
دیگه سی شارپ و دات نت بدرد نمیخوره
از این به بعد سوییچ میکنیم رو php و وردپرس!
از این به بعد سوییچ میکنیم رو php و وردپرس!
🤣6🔥2
Forwarded from thisisnabi.dev [Farsi]
ف... به هر دوتاشون 😂
2 سالم هست از این دو بزرگوار در هیچ پروژه تجاری استفاده نکردم.
2 سالم هست از این دو بزرگوار در هیچ پروژه تجاری استفاده نکردم.
😁4😭2🔥1
Forwarded from thisisnabi.dev [Farsi]
... به هر سه تاشون :)
RabbitMq.Client هم خیلی فانتره
فقط بخش Distributed Tracing ش کمی چالش داره که توی سیستم دیزاین خودمون یکی نوشتیم براش 🤞
RabbitMq.Client هم خیلی فانتره
فقط بخش Distributed Tracing ش کمی چالش داره که توی سیستم دیزاین خودمون یکی نوشتیم براش 🤞
❤3😭2🔥1
1. Navigating changes to a design that one fundamentally disagrees with can be challenging. Communicating design intent—particularly to those without a design background—requires clarity, precision, and empathy. The ability to articulate design decisions effectively is crucial to the success of any project, as the most persuasive voice often guides the outcome. The distinction between a good designer and a great one lies not only in their capacity to solve problems through design, but also in their skill to communicate the rationale behind their solutions in a way that is compelling, builds consensus, and secures the support necessary to move forward.
کنار آمدن با تغییراتی در یک طراحی که اساساً با آن مخالف هستیم میتواند چالشبرانگیز باشد. انتقال هدف طراحی—بهویژه برای کسانی که پیشزمینهای در طراحی ندارند—نیازمند وضوح، دقت، و همدلی است. توانایی بیان مؤثر تصمیمات طراحی، برای موفقیت هر پروژهای حیاتی است، چرا که اغلب تأثیرگذارترین صداست که مسیر نهایی را تعیین میکند. تفاوت بین یک طراح خوب و یک طراح عالی تنها در توانایی حل مسئله از طریق طراحی نیست، بلکه در مهارت او در توضیح منطق پشت راهحلهایش بهگونهای است که قانعکننده باشد، اجماع ایجاد کند و حمایت لازم برای پیشبرد پروژه را جلب نماید.
#BetterSoftwareEngineer
کنار آمدن با تغییراتی در یک طراحی که اساساً با آن مخالف هستیم میتواند چالشبرانگیز باشد. انتقال هدف طراحی—بهویژه برای کسانی که پیشزمینهای در طراحی ندارند—نیازمند وضوح، دقت، و همدلی است. توانایی بیان مؤثر تصمیمات طراحی، برای موفقیت هر پروژهای حیاتی است، چرا که اغلب تأثیرگذارترین صداست که مسیر نهایی را تعیین میکند. تفاوت بین یک طراح خوب و یک طراح عالی تنها در توانایی حل مسئله از طریق طراحی نیست، بلکه در مهارت او در توضیح منطق پشت راهحلهایش بهگونهای است که قانعکننده باشد، اجماع ایجاد کند و حمایت لازم برای پیشبرد پروژه را جلب نماید.
#BetterSoftwareEngineer
👍4🔥3
2. It’s often unclear where some designers develop definitions of design that feel more performative than practical. These perspectives don’t seem to come from formal education or grounded experience. What’s concerning is the influence of a social media–driven design culture, where popularity and visual polish are mistaken for effectiveness and usability. This mindset encourages designers to create unsolicited redesigns of popular platforms—without a real understanding of the underlying business goals or user needs.
In these cases, design becomes more about visibility and validation than about thoughtful problem-solving. The truth is, design is deeply subjective. What one person finds intuitive, another may find confusing. What succeeds in one context can fail in another. This complexity makes design inherently difficult to discuss—particularly with those outside the field—because there is often no shared language or clear consensus on what design is, or what it should be.
اغلب مشخص نیست که برخی طراحان تعاریفی از طراحی را از کجا آوردهاند که بیشتر نمایشیاند تا کاربردی. این دیدگاهها نه به نظر میرسد از آموزش رسمی آمده باشند، نه از تجربهای عمیق و واقعی. نکته نگرانکننده، تأثیر فرهنگی است که از طریق شبکههای اجتماعی بر طراحی شکل گرفته—جایی که محبوبیت و جذابیت بصری، به اشتباه بهجای اثربخشی و کاربرپذیری گرفته میشوند. این طرز فکر طراحان را تشویق میکند تا بازطراحیهایی بیدرخواست از پلتفرمهای محبوب انجام دهند—بیآنکه درک واقعیای از اهداف تجاری یا نیازهای کاربران داشته باشند.
در چنین مواردی، طراحی بیشتر به ابزاری برای دیدهشدن و تأیید گرفتن تبدیل میشود تا راهحلی اندیشمندانه برای مسائل واقعی. واقعیت این است که طراحی بهشدت ذهنی و وابسته به دیدگاه افراد است. چیزی که برای یک نفر شهودی به نظر میرسد، ممکن است برای دیگری گیجکننده باشد. آنچه در یک موقعیت موفق است، ممکن است در موقعیتی دیگر ناکام بماند. این پیچیدگی باعث میشود صحبت درباره طراحی—بهویژه با کسانی خارج از این حوزه—بسیار دشوار باشد، چرا که اغلب زبانی مشترک یا توافقی روشن درباره اینکه طراحی چیست یا باید چه باشد، وجود ندارد.
#BetterSoftwareEngineer
In these cases, design becomes more about visibility and validation than about thoughtful problem-solving. The truth is, design is deeply subjective. What one person finds intuitive, another may find confusing. What succeeds in one context can fail in another. This complexity makes design inherently difficult to discuss—particularly with those outside the field—because there is often no shared language or clear consensus on what design is, or what it should be.
اغلب مشخص نیست که برخی طراحان تعاریفی از طراحی را از کجا آوردهاند که بیشتر نمایشیاند تا کاربردی. این دیدگاهها نه به نظر میرسد از آموزش رسمی آمده باشند، نه از تجربهای عمیق و واقعی. نکته نگرانکننده، تأثیر فرهنگی است که از طریق شبکههای اجتماعی بر طراحی شکل گرفته—جایی که محبوبیت و جذابیت بصری، به اشتباه بهجای اثربخشی و کاربرپذیری گرفته میشوند. این طرز فکر طراحان را تشویق میکند تا بازطراحیهایی بیدرخواست از پلتفرمهای محبوب انجام دهند—بیآنکه درک واقعیای از اهداف تجاری یا نیازهای کاربران داشته باشند.
در چنین مواردی، طراحی بیشتر به ابزاری برای دیدهشدن و تأیید گرفتن تبدیل میشود تا راهحلی اندیشمندانه برای مسائل واقعی. واقعیت این است که طراحی بهشدت ذهنی و وابسته به دیدگاه افراد است. چیزی که برای یک نفر شهودی به نظر میرسد، ممکن است برای دیگری گیجکننده باشد. آنچه در یک موقعیت موفق است، ممکن است در موقعیتی دیگر ناکام بماند. این پیچیدگی باعث میشود صحبت درباره طراحی—بهویژه با کسانی خارج از این حوزه—بسیار دشوار باشد، چرا که اغلب زبانی مشترک یا توافقی روشن درباره اینکه طراحی چیست یا باید چه باشد، وجود ندارد.
#BetterSoftwareEngineer
🔥4👍2
3. What defines a good design? While interpretations may vary, in the context of user experience, a design is only truly effective if it solves a real problem. Most of the time, that problem is tied to a business objective—something that supports growth, efficiency, or strategic goals. Yet, if we are committed to a user-centered design approach, our solutions must also be intuitive and accessible to the people who will interact with them.
One aspect often overlooked is the influence of others involved in the project. Crafting an exceptional product is not enough; gaining the support of your team, stakeholders, and collaborators is equally critical. Without that alignment, even the most well-executed design cannot move forward.
The distinction between a good designer and a great one lies in the ability to not only solve problems through design but also to clearly and convincingly communicate how the solution addresses those problems. This clarity fosters understanding, builds consensus, and earns the trust needed to proceed.
In essence, every successful design should meet three fundamental criteria:
1. It addresses a meaningful problem.
2. It is intuitive and easy to use.
3. It has the support of the broader team and stakeholders.
These principles form the foundation of a great user experience—one that is both practical and persuasive. Projects that fall short usually lack strength in one of these areas. When all three are in place, the path to success becomes far more attainable.
تعریف یک طراحی خوب چیست؟ با اینکه برداشتها ممکن است متفاوت باشند، اما در زمینه تجربه کاربری، یک طراحی زمانی واقعاً مؤثر است که یک مشکل واقعی را حل کند. در اغلب موارد، این مشکل با یک هدف تجاری گره خورده است—چیزی که به رشد، کارآمدی یا اهداف استراتژیک کمک کند. با این حال، اگر به رویکرد طراحی کاربرمحور پایبند باشیم، راهحلهای ما باید در عین حال برای کاربران نیز شهودی و قابلدسترسی باشند.
یکی از جنبههایی که اغلب نادیده گرفته میشود، تأثیر افرادی است که در پروژه دخیل هستند. ساختن یک محصول عالی بهتنهایی کافی نیست؛ جلب حمایت تیم، ذینفعان، و همکاران نیز به همان اندازه حیاتی است. بدون این همراستایی، حتی بهترین طراحی هم نمیتواند به مرحله اجرا برسد.
تفاوت بین یک طراح خوب و یک طراح عالی در این است که طراح عالی نهتنها مسئله را از طریق طراحی حل میکند، بلکه توانایی دارد بهروشنی و با قدرت توضیح دهد که این راهحل چگونه به آن مشکل پاسخ میدهد. این شفافیت باعث درک بهتر، ایجاد اجماع، و جلب اعتمادی میشود که برای پیشبرد پروژه ضروری است.
در اصل، هر طراحی موفق باید سه معیار اساسی را برآورده کند:
۱. یک مشکل معنادار را حل کند.
۲. شهودی و آسان برای استفاده باشد.
۳. از حمایت تیم و ذینفعان برخوردار باشد.
این اصول، پایهگذار یک تجربه کاربری عالی هستند—تجربهای که هم کاربردی است و هم متقاعدکننده. پروژههایی که شکست میخورند، معمولاً در یکی از این سه حوزه ضعف دارند. اما وقتی هر سه فراهم باشند، مسیر موفقیت بسیار هموارتر خواهد بود.
#BetterSoftwareEngineer
One aspect often overlooked is the influence of others involved in the project. Crafting an exceptional product is not enough; gaining the support of your team, stakeholders, and collaborators is equally critical. Without that alignment, even the most well-executed design cannot move forward.
The distinction between a good designer and a great one lies in the ability to not only solve problems through design but also to clearly and convincingly communicate how the solution addresses those problems. This clarity fosters understanding, builds consensus, and earns the trust needed to proceed.
In essence, every successful design should meet three fundamental criteria:
1. It addresses a meaningful problem.
2. It is intuitive and easy to use.
3. It has the support of the broader team and stakeholders.
These principles form the foundation of a great user experience—one that is both practical and persuasive. Projects that fall short usually lack strength in one of these areas. When all three are in place, the path to success becomes far more attainable.
تعریف یک طراحی خوب چیست؟ با اینکه برداشتها ممکن است متفاوت باشند، اما در زمینه تجربه کاربری، یک طراحی زمانی واقعاً مؤثر است که یک مشکل واقعی را حل کند. در اغلب موارد، این مشکل با یک هدف تجاری گره خورده است—چیزی که به رشد، کارآمدی یا اهداف استراتژیک کمک کند. با این حال، اگر به رویکرد طراحی کاربرمحور پایبند باشیم، راهحلهای ما باید در عین حال برای کاربران نیز شهودی و قابلدسترسی باشند.
یکی از جنبههایی که اغلب نادیده گرفته میشود، تأثیر افرادی است که در پروژه دخیل هستند. ساختن یک محصول عالی بهتنهایی کافی نیست؛ جلب حمایت تیم، ذینفعان، و همکاران نیز به همان اندازه حیاتی است. بدون این همراستایی، حتی بهترین طراحی هم نمیتواند به مرحله اجرا برسد.
تفاوت بین یک طراح خوب و یک طراح عالی در این است که طراح عالی نهتنها مسئله را از طریق طراحی حل میکند، بلکه توانایی دارد بهروشنی و با قدرت توضیح دهد که این راهحل چگونه به آن مشکل پاسخ میدهد. این شفافیت باعث درک بهتر، ایجاد اجماع، و جلب اعتمادی میشود که برای پیشبرد پروژه ضروری است.
در اصل، هر طراحی موفق باید سه معیار اساسی را برآورده کند:
۱. یک مشکل معنادار را حل کند.
۲. شهودی و آسان برای استفاده باشد.
۳. از حمایت تیم و ذینفعان برخوردار باشد.
این اصول، پایهگذار یک تجربه کاربری عالی هستند—تجربهای که هم کاربردی است و هم متقاعدکننده. پروژههایی که شکست میخورند، معمولاً در یکی از این سه حوزه ضعف دارند. اما وقتی هر سه فراهم باشند، مسیر موفقیت بسیار هموارتر خواهد بود.
#BetterSoftwareEngineer
👍4🔥2
4. When working on a design, it’s essential to remain consciously aware of every decision you make and the reasoning behind it. You should continuously ask yourself, “What problem am I trying to solve with this?” Staying mindful of every change, addition, or reorganization you implement is crucial to discovering the right interface. These often unconscious choices hold the key to articulating your design rationale to others and ensuring your expert insight remains central to the final decision-making process.
The most effective way to achieve this is by writing your decisions down. Translating unconscious thought into a tangible format helps you recall and reflect on the reasoning behind your work. Since you’re addressing measurable problems, clearly document each one, followed by the design decisions made to solve it. Whatever form this documentation takes, the goal is to ground your thinking in concrete, explainable terms.
هنگام کار روی یک طراحی، ضروری است که نسبت به هر تصمیمی که میگیری و دلیل پشت آن، آگاهی کامل داشته باشی. باید مدام از خودت بپرسی: «با این تصمیم دقیقاً چه مشکلی را دارم حل میکنم؟» آگاهبودن نسبت به هر تغییری که اعمال میکنی—چه اضافهکردن، حذف یا بازآرایی—برای رسیدن به رابط کاربری درست حیاتی است. این تصمیمهای ناخودآگاه در واقع کلید توضیح منطق طراحی تو برای دیگران هستند و کمک میکنند تخصصت در تصمیمگیری نهایی نقشی محوری داشته باشد.
موثرترین راه برای رسیدن به این هدف، نوشتن تصمیمهایت است. تبدیل فکر ناخودآگاه به یک قالب ملموس، به تو کمک میکند تا دلایل پشت انتخابهایت را بهخاطر بسپاری و روی آنها تأمل کنی. از آنجا که با مشکلات قابلاندازهگیری سروکار داری، باید هر کدام را بهوضوح ثبت کنی و بعد، تصمیمهای طراحیای که برای حل آنها گرفتهای را بنویسی. مهم نیست این مستندسازی چه شکلی دارد—هدف این است که افکارت را بر پایه مفاهیمی مشخص و قابلتوضیح استوار کنی.
#BetterSoftwareEngineer
The most effective way to achieve this is by writing your decisions down. Translating unconscious thought into a tangible format helps you recall and reflect on the reasoning behind your work. Since you’re addressing measurable problems, clearly document each one, followed by the design decisions made to solve it. Whatever form this documentation takes, the goal is to ground your thinking in concrete, explainable terms.
هنگام کار روی یک طراحی، ضروری است که نسبت به هر تصمیمی که میگیری و دلیل پشت آن، آگاهی کامل داشته باشی. باید مدام از خودت بپرسی: «با این تصمیم دقیقاً چه مشکلی را دارم حل میکنم؟» آگاهبودن نسبت به هر تغییری که اعمال میکنی—چه اضافهکردن، حذف یا بازآرایی—برای رسیدن به رابط کاربری درست حیاتی است. این تصمیمهای ناخودآگاه در واقع کلید توضیح منطق طراحی تو برای دیگران هستند و کمک میکنند تخصصت در تصمیمگیری نهایی نقشی محوری داشته باشد.
موثرترین راه برای رسیدن به این هدف، نوشتن تصمیمهایت است. تبدیل فکر ناخودآگاه به یک قالب ملموس، به تو کمک میکند تا دلایل پشت انتخابهایت را بهخاطر بسپاری و روی آنها تأمل کنی. از آنجا که با مشکلات قابلاندازهگیری سروکار داری، باید هر کدام را بهوضوح ثبت کنی و بعد، تصمیمهای طراحیای که برای حل آنها گرفتهای را بنویسی. مهم نیست این مستندسازی چه شکلی دارد—هدف این است که افکارت را بر پایه مفاهیمی مشخص و قابلتوضیح استوار کنی.
#BetterSoftwareEngineer
🔥6
خرسِ برنامه نویس
4. When working on a design, it’s essential to remain consciously aware of every decision you make and the reasoning behind it. You should continuously ask yourself, “What problem am I trying to solve with this?” Staying mindful of every change, addition,…
4/1.
این وسط یه نکته ریز!
لازم نیست این یادداشتها را با مشتری یا ذینفعان به اشتراک بگذاری.
شاید هیچوقت آنها را نبینند، و اشکالی هم ندارد.
هدف بیشتر پیداکردن سر مقصد است تا ارتباط برقرار کردن با دیگران.
نکته اصلی این است که نوشتن درباره آنچه طراحی میکنی، به مغزت کمک میکند بین مشکلی که روی آن کار میکنی و راهحلی که طراحی ارائه میدهد، ارتباط برقرار کند. هرچقدر در ایجاد این ارتباطها بهتر عمل کنی، برای صحبتکردن دربارهشان با دیگران هم آمادهتر خواهی بود.
مهم نیست از چه روشی استفاده میکنی، هدف این است که روند فکریات را به چیزی واقعی، قابلاشتراکگذاری و قابلدیدن تبدیل کنی—تا بتوانی کلماتی پیدا کنی که به کمک آنها، طراحیات را برای دیگران بهروشی قابلدرک توضیح دهی.
این وسط یه نکته ریز!
لازم نیست این یادداشتها را با مشتری یا ذینفعان به اشتراک بگذاری.
شاید هیچوقت آنها را نبینند، و اشکالی هم ندارد.
هدف بیشتر پیداکردن سر مقصد است تا ارتباط برقرار کردن با دیگران.
نکته اصلی این است که نوشتن درباره آنچه طراحی میکنی، به مغزت کمک میکند بین مشکلی که روی آن کار میکنی و راهحلی که طراحی ارائه میدهد، ارتباط برقرار کند. هرچقدر در ایجاد این ارتباطها بهتر عمل کنی، برای صحبتکردن دربارهشان با دیگران هم آمادهتر خواهی بود.
مهم نیست از چه روشی استفاده میکنی، هدف این است که روند فکریات را به چیزی واقعی، قابلاشتراکگذاری و قابلدیدن تبدیل کنی—تا بتوانی کلماتی پیدا کنی که به کمک آنها، طراحیات را برای دیگران بهروشی قابلدرک توضیح دهی.
🔥7
خرسِ برنامه نویس
4/1. این وسط یه نکته ریز! لازم نیست این یادداشتها را با مشتری یا ذینفعان به اشتراک بگذاری. شاید هیچوقت آنها را نبینند، و اشکالی هم ندارد. هدف بیشتر پیداکردن سر مقصد است تا ارتباط برقرار کردن با دیگران. نکته اصلی این است که نوشتن درباره آنچه طراحی…
5. Usability comes down to two key principles: common sense and research. At the start of a project, when data may be limited, designers must rely on experience and intuition to create simple, practical solutions. Overthinking should be avoided—do what makes sense and move forward.
However, assumptions don’t always align with user behavior. That’s where research becomes essential. While analytics can show what users did, they don’t explain why. To truly understand the impact of design decisions, direct observation through usability testing is necessary. Make informed guesses, validate them with real users, and take notes—you’ll gain valuable insights and be better equipped to justify your choices.
قابلیت استفاده به دو اصل کلیدی خلاصه میشود: شعور و تحقیق. در ابتدای یک پروژه، زمانی که دادهها محدود هستند، طراح باید به تجربه و شهود خود تکیه کند تا راهحلهایی ساده و کاربردی ارائه دهد. نباید بیش از حد فکر کرد—کاری را انجام بده که منطقی به نظر میرسد و پیش برو.
اما فرضیات همیشه با رفتار واقعی کاربران همراستا نیستند. اینجاست که تحقیق اهمیت پیدا میکند. تحلیل دادهها فقط نشان میدهد کاربران چه کردهاند، اما دلیل آن را مشخص نمیکند. برای درک واقعی اثر تصمیمهای طراحی، مشاهده مستقیم از طریق تست قابلیت استفاده ضروری است.
حدسهای منطقی بزن، آنها را با کاربران واقعی بررسی کن، و یادداشتبرداری کن—به بینشهای ارزشمندی دست خواهی یافت و آمادهتر خواهی بود تا از تصمیمهایت دفاع کنی.
#BetterSoftwareEngineer
However, assumptions don’t always align with user behavior. That’s where research becomes essential. While analytics can show what users did, they don’t explain why. To truly understand the impact of design decisions, direct observation through usability testing is necessary. Make informed guesses, validate them with real users, and take notes—you’ll gain valuable insights and be better equipped to justify your choices.
قابلیت استفاده به دو اصل کلیدی خلاصه میشود: شعور و تحقیق. در ابتدای یک پروژه، زمانی که دادهها محدود هستند، طراح باید به تجربه و شهود خود تکیه کند تا راهحلهایی ساده و کاربردی ارائه دهد. نباید بیش از حد فکر کرد—کاری را انجام بده که منطقی به نظر میرسد و پیش برو.
اما فرضیات همیشه با رفتار واقعی کاربران همراستا نیستند. اینجاست که تحقیق اهمیت پیدا میکند. تحلیل دادهها فقط نشان میدهد کاربران چه کردهاند، اما دلیل آن را مشخص نمیکند. برای درک واقعی اثر تصمیمهای طراحی، مشاهده مستقیم از طریق تست قابلیت استفاده ضروری است.
حدسهای منطقی بزن، آنها را با کاربران واقعی بررسی کن، و یادداشتبرداری کن—به بینشهای ارزشمندی دست خواهی یافت و آمادهتر خواهی بود تا از تصمیمهایت دفاع کنی.
#BetterSoftwareEngineer
🔥4👍2
خرسِ برنامه نویس
5. Usability comes down to two key principles: common sense and research. At the start of a project, when data may be limited, designers must rely on experience and intuition to create simple, practical solutions. Overthinking should be avoided—do what makes…
6. Solving problems and creating user-friendly designs isn’t enough—stakeholder support is essential for progress. Even the most innovative solution will struggle if your team doesn’t understand or align with your vision.
Without clear buy-in, you risk repeating the same discussions, defending decisions that weren’t effectively communicated. Unconvinced stakeholders will continue to suggest alternatives, expanding the project scope with new features and requests. This slows down development and dilutes the user experience. Ultimately, lack of alignment can result in a compromised product—not because the design was flawed, but because it wasn’t clearly explained or supported.
حل مسئله و ساختن طراحیهایی کاربرپسند بهتنهایی کافی نیست—حمایت ذینفعان برای پیشرفت ضروری است. حتی نوآورانهترین راهحل هم اگر تیم نتواند دیدگاه تو را درک کند یا با آن همراه نباشد، به سختی پیش خواهد رفت.
بدون جلب حمایت شفاف، احتمال اینکه گفتگوهای تکراری پیش بیاید و مجبور شوی از تصمیمهایی که خوب منتقل نشدهاند دفاع کنی، زیاد است. ذینفعانی که قانع نشدهاند، مدام پیشنهادهای جایگزین میدهند و با ویژگیها و درخواستهای جدید، دامنه پروژه را گسترش میدهند. این روند توسعه را کند میکند و تجربه کاربری را از هدف اصلیاش دور میسازد.
در نهایت، نبود همراستایی میتواند به محصولی ناقص منتهی شود—نه به این دلیل که طراحی بد بوده، بلکه چون خوب توضیح داده نشده یا از آن حمایت کافی نشده است.
#BetterSoftwareEngineer
Without clear buy-in, you risk repeating the same discussions, defending decisions that weren’t effectively communicated. Unconvinced stakeholders will continue to suggest alternatives, expanding the project scope with new features and requests. This slows down development and dilutes the user experience. Ultimately, lack of alignment can result in a compromised product—not because the design was flawed, but because it wasn’t clearly explained or supported.
حل مسئله و ساختن طراحیهایی کاربرپسند بهتنهایی کافی نیست—حمایت ذینفعان برای پیشرفت ضروری است. حتی نوآورانهترین راهحل هم اگر تیم نتواند دیدگاه تو را درک کند یا با آن همراه نباشد، به سختی پیش خواهد رفت.
بدون جلب حمایت شفاف، احتمال اینکه گفتگوهای تکراری پیش بیاید و مجبور شوی از تصمیمهایی که خوب منتقل نشدهاند دفاع کنی، زیاد است. ذینفعانی که قانع نشدهاند، مدام پیشنهادهای جایگزین میدهند و با ویژگیها و درخواستهای جدید، دامنه پروژه را گسترش میدهند. این روند توسعه را کند میکند و تجربه کاربری را از هدف اصلیاش دور میسازد.
در نهایت، نبود همراستایی میتواند به محصولی ناقص منتهی شود—نه به این دلیل که طراحی بد بوده، بلکه چون خوب توضیح داده نشده یا از آن حمایت کافی نشده است.
#BetterSoftwareEngineer
❤4🔥3
خرسِ برنامه نویس
6. Solving problems and creating user-friendly designs isn’t enough—stakeholder support is essential for progress. Even the most innovative solution will struggle if your team doesn’t understand or align with your vision. Without clear buy-in, you risk repeating…
7. To effectively communicate your design decisions, you should be able to answer three key questions:
- What problem does it solve?
- How does it impact the user?
- Why is it better than the alternative?
Answering these questions isn’t just for documentation—it’s a way to clarify your own thinking. By doing so, you’ll be better prepared to defend your choices and address stakeholder concerns with confidence. These responses become the foundation for meaningful discussions around your design.
برای اینکه بتوانی تصمیمهای طراحیات را بهطور مؤثر منتقل کنی، باید بتوانی به سه سؤال کلیدی پاسخ بدهی:
- این طراحی چه مشکلی را حل میکند؟
- چه تأثیری بر کاربر دارد؟
- چرا از گزینههای دیگر بهتر است؟
پاسخدادن به این سؤالها فقط برای مستندسازی نیست—بلکه راهی است برای شفافسازی افکارت. با این کار، آمادگی بیشتری برای دفاع از انتخابهایت خواهی داشت و میتوانی با اطمینان به نگرانیهای ذینفعان پاسخ بدهی. این پاسخها پایهای برای گفتوگوهای معنادار درباره طراحی تو خواهند بود.
#BetterSoftwareEngineer
- What problem does it solve?
- How does it impact the user?
- Why is it better than the alternative?
Answering these questions isn’t just for documentation—it’s a way to clarify your own thinking. By doing so, you’ll be better prepared to defend your choices and address stakeholder concerns with confidence. These responses become the foundation for meaningful discussions around your design.
برای اینکه بتوانی تصمیمهای طراحیات را بهطور مؤثر منتقل کنی، باید بتوانی به سه سؤال کلیدی پاسخ بدهی:
- این طراحی چه مشکلی را حل میکند؟
- چه تأثیری بر کاربر دارد؟
- چرا از گزینههای دیگر بهتر است؟
پاسخدادن به این سؤالها فقط برای مستندسازی نیست—بلکه راهی است برای شفافسازی افکارت. با این کار، آمادگی بیشتری برای دفاع از انتخابهایت خواهی داشت و میتوانی با اطمینان به نگرانیهای ذینفعان پاسخ بدهی. این پاسخها پایهای برای گفتوگوهای معنادار درباره طراحی تو خواهند بود.
#BetterSoftwareEngineer
🔥7👍1