درود دوستان 👋 هنگام توی دنیای مهندسی نرم‌افزار یکی از مهمترین مهارت‌هایی که پا به پای مهارت‌های فنی (Hard Skills) می‌بایست بهش توجه کنیم، مهارت‌های نرم و به قول معروف Soft Skills هست.

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

طبق تجربه شخصی، یکی از مهمترین این مهارت‌ها «نحوهٔ برقراری ارتباط با افراد غیر فنی و توضیح دادن مسائل فنی به اونهاست.» توی هر شرکتی با هر تعداد کارمند که مشغول به فعالیت باشیم، افرادی هستن می‌بایست با اونها ارتباط برقرار کنیم و درباره مسائل فنی به اونها توضیح بدیم. برای مثال مدیر محصول، تیم پشتیبانی و یا طراح. بدون شک اگه با افراد غیر فنی بخوایم مسائل رو از دیدگاه و ادبیات خودمون توضیح بدیم و مثلاً به نیروهای پشتیبانی که مشکلی رو گزارش دادن بگیم:

این دکمه کار نمی‌کنه به این دلیل که هندلر onClick هنوز به درستی درخواست‌های API رو مدیریت نمی‌کنه. تیم بکند ساختار API رو تغییر داده و من مجبور شدم از روش توابع Async و Debounce برای حل این قضیه استفاده کنم تا Race condition به وجود نیاد. همچنین منتظر حل‌شدن قضیه CORS توی Staging هم هستم.

قطعاً مشکل رو نه تنها حل نمی‌کنه، بلکه باعث کند شدن روند انجام وظایف و گمراهی اشخاص میشه و همچنین تأثیرگذاری و ارزشمند بودن ما رو هم کاهش میده. به جای جمله‌های بالا می‌تونیم بگیم:

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

جملهٔ بالا مقداری ملموس‌تر و قابل فهم‌تر برای افراد غیر فنی هست. توی این پست می‌خوایم مهارت‌هایی رو بررسی کنیم که کمک می‌کنن بتونیم بهتر و موثر تر با افراد غیر فنی صحبت کنیم.

این پست از سری پست‌های «من مهندس نرم‌افزار هستم» هست که توی اونها نکات فنی و غیر فنی که ما رو به یک مهندس نرم‌افزار خوب تبدیل می‌کنه رو بررسی می‌کنیم.

 

قدم اول، شناخت مخاطب

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