خلاصه کتاب Pragmatic Programmer. درس 7

درس 7: برقراری ارتباط (Communicate)ما شاید بتونیم یک مطلب جدیدو راحت یاد بگیریم، اما چجوری نگهداری کنیم ازش، داشتن بهترین ایده ها، بهترین کدها، و عملی ترین فکرها، عقیمن تا موقعی که نتونیم با دیگران خوب و موثر ارتباط برقرار کنیم.ما به عنوان یک دولوپر مجبوریم به ارتباط برقرار کردن در لولهای مختلف. بعضا ساعتهایی رو در جلسات میگذرونیم، میشنویم و صحبت میکنیم. ما با کاربران نهایی ارتباط میگیریم و باید به خوبی دیتکت کنیم نیازهاشونو، ما کد مینویسیم که خودش نوعی ارتباط با ماشین محسوب میشه، تفکرات و عملیاتهامونو داکیومنت میکنیم برای نسلهای بعدی روی اون پروژه، پروپوزال مینویسیم، گزارش عملکردمون رو میدیم و ...بخش زیادی از روز در حال ارتباط هستیم، پس نیاز داریم که به بهترین نحو انجامش بدیم.زبان انگلیسی رو هم به عنوان یک زبان برنامه نویسی در نظر بگیرید.(از نظر اهمیت و کاربرد در این رشته)خوب در اینجا لیستی از ایده های مختلفو که به درد بخورن اوردیم:· مخاطب خودتونو بشناسیدشما وقتی در حال ارتباط موثر هستید که اون چیزی که میخاید منتقل کنید، به درستی منتقل بشه!! صرف صحبت کردن کافی نیست. شما باید نیازها، علاقه مندی ها و تواناییهای مخاطبینتون رو بشناسید.فرض کنید در یک جلسه چندین برنامه نویس گیک(برنامه نویسهای خوره ای که بیشترین تایم روزو با سیستم سروکله میزنن و تپه ای از تکنولوژی رو فتح نشده نمیزارن)، در مقابل یک معاون مارکتینگی خبره (که معمولا خوش کلام هم هستن و دوس ندارن میکروفونو به کسی بدن) در یک جلسه نشستن، این به هیچ وجه یک ارتباط نیست، صرفا صحبت کردنه و حتی ممکنه آزار دهنده هم باشه برای طرفین.فرض کن میخای یک مسیج بروکر از سرویسهای ترد پارتی بیاری توی سیستم، این آپدیت خوبو به چند روش باید پرزنت و منتقل کنی، کاربران نهایی بابت بهبودی که لمسش میکنن و همچنین امکان اتصال سرویسهایشون به سرویس های دیگه ای که از اون بروکر استفاده میکنن، ازت قدردانی میکنن، تیم فروش این رو به عنوان یک فیچر قابل مانور در پروسه خودش برداشت خاهد کرد، دولوپرها خوشحالن که میخان یک چیز جدید یاد بگیرن و تجربه خوبی کسب کنن و ...در تمام فرمهای مختلف ارتباط، نکته مهم گرفتن و متوجه شدن فیدبکهاست، اصلا صبر نکن تا ازت سوال کنن، تو ازشون بپرس، به زبان بدنشون، عکس العمل، وضعیت چهره شون دقت کن، و همیشه سعی کن تا شناختت رو نسبت به مخاطبات بیشتر و بیشتر کنی، بالخص اونایی که بیشترین ارتباطو باید باهاشون بگیری.· بدون که چی میخای بگییکی از مهمترین و حساس ترین قسمت های ارتباطهای بیزنسی همینه که بدونیم دقیقا چی میخایم بگیم و پلنش کرده باشیم. نویسنده های داستان معمولا قبل از شروع یک بار جزئیات کتابشونو ترسیم میکنن و پلن ریزی و اصلاح میکنن. اما مردمی که معمولا مقاله های فنی مینویسن خوشحالن از اینکه اغلبا میشینن روی کیبورد و هرچیزی که همون لحظه به مغزشون خطور میکنه راجع به اون موضوع مینویسن و جلو میرن.پلن کنید چیزی که میخاید بگید، بنویسیدش بعد از خودتون بپرسید و بالا پایین کنید که این همون چیزیه که میخام بگم و در راستای هدف ارتباطمه یا نه.. این تکنیک در همه جا قابل استفاده است فرض کن میخای با یکی از مهمترین مشتریانت چت بکنی، اسکایپ بری یا ... از قبل پلنتو بنویس و استراتژیهای مختلفو هم در نظر بگیر.· لحظه خود را انتخاب کنیدفرض کن ساعت 6 عصر جمعه، یا مثلا مخاطب شما توی بیمارستانه، یا یک بارون مرگ بار داره بیرون میاد، شاید این لحظات وقت خوبی برای منتقل کردن یک مطلب نباشه، البته شایدم باشه این کاملا به شرایط بستگی داره و خودتون باید بسنجیدش، فقط کافیه قبل از ارتباط گرفتن این سوالو از خودت بپرسی که الان زمان خوبیه برای این ارتباط؟· یک سبک انتخاب کنیدبسته به مخاطبتون سبک ارتباط رو انتخاب کنید، شاید چت کردن با یک مدیرعامل شلوغ همیشه در جلسه یا مسیر سبک انتخاب خوبی نباشه برعکس برای یک برنامه نویس خیلی دلچسب باشه که با چت ارتباط بگیری، شاید یک نفر بسته به نوع شخصیتش دوست داره هرچند در حد چند ثانیه ولی باهاش تماس بگیرید تا بتونید ارتباط موثرو بگیرید و سود خودتون از اون ارتباطو برداشت کنید.· خوب جلوه بدهایده ها و محتوای ارتباط خیلی مهم هستن، سعی کن به همون اندازه سوار وسیله خوبیشون کنی برای اینکه به مخاطبت منتقلشون کنی.(اینجوری تشبیه کرد که ایده رو سوار ماشینی بکنی که هم قده قشنگیه ایدت باشه)خیلی از برنامه نویسها و مدیرانشون فقط و فقط به محتواهایی که داکیومنت شده باشن توجه و دقت میکنن، از نظر ما یک اشتباهه. این روزها دیگه جای توجیهی برای داکیومنت های زشت و کم کیفیت وجود نداره. نرم افزارهای زیادی وجود داره که جنگولک بازیای کافی و استانداردو سر داکیومنت پیاده میکنن بدون اینکه مهم باشه شما با یک کامپیوتر مدرن اونو وارد سیستم کرده باشی یا کیبورد سنتی پردازش کلمه. رعایت استانداردهای هدر فوتر، فاصله از چهارطرف، استفاده از نمودار یا چارت، چک کردن برای عدم وجود غلط املایی اول در سیستم دوم به صورت دستی و چاپ شده ...· مخاطبتان را درگیر کنیددر صورتی که امکانش وجود داره، مخاطبتونو درگیر پروسه تولید داکیومنت هم بکنید و ازش فیدبک بگیرید، مغزشو خالی کنید، یک ارتباط موثر که در نهایت داکیومنت بهتری تهیه همیشه.(البته بعضی از داکیومنتها قطعا این امکانو داره، داکیومنت درون سازمانی رو شاید بشه این تکنیک رو پیاده کرد ولی داکیومنت های فروش و برون سازمانی نه)· شنونده خوبی باشیداین تکنیک خیلی مهمه، اگر میخای مردم حرفتو بشنون، باید شنونده خوبی هم برای حرفهاشون باشی. حتی اگر چیزی که میگن رو میدونی، باز هم شنونده خوبی باش فرض کن توی یک جلسه ای که 20 نفر نشستن، اگر قرار باشه تو به حرفهاشون گوش ندی قطعا بهت گوش نمیدن. ازشون سوال بپرسید و سعی کنید جلسه به سمت دیالوگی شدن بره(دوطرفه) این قطعا موثر تر میکنه ارتباطتتونو.· به مردم جواب بدهاگر از کسی سوال بپرسید و هیچ جوابی بهتون نده، شما این حس بهتون دست میده که ادم بی ادبیه. اما شاید براتون پیش بیاد که جواب ایمیل یا تکستی رو نداده باشین، این برای همه مون ممکنه پیش بیاد توی شرایطی، اما سعی کن توی بدترین شرایط حتی در حد یک جمله بهشون جواب بدی: "بهت جواب میدم بعدا"، سعی کن متوجهشون کنی که کارشون یا خودشونو فراموش نکردی.اگر در جایی غیر از خلاء(خارج از جو) کار میکنید، شما نیاز دارید به ارتباط و هر چی بهتر و قوی تر ارتباط بگیری، نفوذ و تاثیر خودت بالاتر میره.داکیومنت سازی:در نهایت، برقراری ارتباط به وسیله دایکومنت کردن، بعضی از دولوپرها متاسفانه اهمیت نمیدن به این موضوع، لازمش نمیدونن حتی، کم اهمیت برخورد میکنن باهاش تا پروژه تموم میشه. در صورتی که برنامه نویس های عملگرا (Pragmatic) داکیومنت کردنو جزئی از پروسه کار میدونن دقیقا حین و بین دولوپ ها باید داکیومنت کنید تا از اتلاف وقت های آینده و ضرراش جلوگیری کنید. ما به برنامه نویس های عملگرا توصیه میکنیم که به همون نحوه که سعی میکنید کد خوب بزنید، در داکیومنت سازی هم خوب عمل کنید.بعضی از برنامه نویس ها هم فکر میکنن منظور از داکیومنت کردن، کامنت های توی کده، نه. کامنت های توی کد لازمه ولی فقط توی هدر ماژولها و یا جاهای خیلی خیلی کریتیکال که میخاید ی پیامی برای بقیه افراد بزارید که متوجه نکته ای باشن، و نه بیشتر و نه دیتیل داکیومنت، دیتیل داکیومنت ها باید به صورت فولدر بندی شده در پلتفرمی خارج از کد انجام بشه.درسهای مرتبط: 15, 18, 45, 49منبع کانال تلگرامی: https://t.me/pragmaticprogrammer_fa