پست مهمان: معرفی کتاب ۹۷ نکته که هر برنامه نویسی باید بداند

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

97 نکته که هر برنامه‌نویسی باید بداند، کتابی است شامل 97 نکته از بزرگان و شخصیت های مهم آی تی که در آن به برنامه نویسان توصیه شده است. این کتاب توسط Kevlin Henney در سال 2010 به چاپ رسیده است. در قسمت فهرست آن نویسنده کتاب را به چند بخش از قبیل توسعه، کد ها، خطا ها، مهارت ها، مدیریت، کار تیمی، کیفیت و دیگر مواردی که در بخش فهرست آن اشاره شده است دسته بندی نموده است. نحوه نگارش این کتاب به این صورت است که یک نکته یا جمله توسط یک شخص اشاره و طی دو یا سه صفحه آن جمله تفسیر شده است.

جمله ای را که برای شما انتخاب کردم جمله ای است از Nate Jackson در صفحه 194 کتاب مبنی بر:

Your Customers

Do Not Mean

What They Say

یعنی منظور مشتریانتان آنچه به زبان می آورند نیست

در ادامه و تفسیر این جمله می گوید: من هنوز یک مشتری را پیدا نکردم که در بیان خواسته هایش موفق بوده باشد. درواقع مشکل اینجاست که مشتری در هنگام بیان خواسته هایش نمی تواند تمام حقیقت موجود رو بیان کند. معمولا آنها در زمان بیان نیازهایشان دروغ نمی گویند اما درست هم صحبت نمی کنند. در واقع بیان آن ها با بیان یک Developer نمی تواند تناسبی داشته باشد. آن ها در هنگام صحبت هایشان از هر موردی که دلخواه و مربوط به خودشان است استفاده می کنن و نمی توانند برروی یک موضوع در آن واحد تمرکز کنند. هیچ وقت به جزئیات اشاره نمی کنند. آنها فکر می کنند که شرکت شما 20 سال است که در زمینه ای که آنها فعالیت می کنند کار می کند و انتظار دارند که شما جزئیات را خودتان فهمیده باشید. این در واقع یک حقیقت است که مشتریان در وهله اول نمی دانند که چه چیزی می خواهند!

بعضی ها تصور خیلی بزرگی از خواسته هایشان دارند اما به ندرت قادر به ایجاد ارتباط موثر بین تصورات و چشم انداز خود هستند. برخی دیگر نیز ممکن است تصورات کوچکتری داشته باشند اما بازهم آنها هم می دانند که نمی دانند چه چیزی می خواهند!

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

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

از ابزارهای بصری در گفت و گو های خود استفاده کنید. این ممکن است استفاده از یک تخته وایت بورد ساده باشد. شما می توانید در فازهای اولیه پروژه و در هنگام مصاحبه ها با کشیدن اشکال بصری ساده و مسخره چیزهایی را که از صحبت های مشتری دریافته اید را به او بفهمانید.

به طور کلی ثابت شده است که استفاده از ابزارهای بصری باعث افزایش نزخ اطلاعات رد و بدل شده و دقت در مصاحبه و گفتگو می شود. از این روش برای تنظیم نمودن پروژه خود به سوی موفقیت استفاده کنید.

در گذشته من برنامه نویس نرم افزارهای چند رسانه یا MultiMedia در یک تیم بودم که برروی پروژه های glitzy کار می کردیم. یک مشتری داشتیم که نظر و احساسش رو در مورد پروژه با جزئیات به خوبی بیان کرده بود. او طرح و الگوی رنگ عمومی را که در جلسه طراحی در موردش بحث می کرد یک پس زمینه سیاه برای ارائه خود بود. در آن جلسه ما فکر کردیم که منظورش را متوجه شده ایم و فهمیده ایم که چه چیزی از ما می خواهد. تیم طراحی گرافیک شروع به ساختن و ایجاد صدها فایل گرافیکی چند لایه ای شدند. مدت زمان زیادی صرف شد تا قالب ریزی محصول نهایی انجام شد. یک روز ما حاصل نتیجه کارمان را در آزمایشگاه مان به مشتری نشان دادیم، اما از برخورد و صحبت های او شگفت زده شدیم. زمانی که او محصول ما را دید، کلمات دقیق او درباره رنگ پس زمینه این بود: “منظور من از رنگ سیاه رنگ سفید بود!”. همان طور که می بینید مشتری در هنگام بیان نیازها و خواسته هایش در پروژه سیاه و سفید را از یکدیگر تشخیص نمی دهد!

+لینک کتاب در آمازون

+لینک دانلود

نمایش 0 دیدگاه
  • razor
    پاسخ

    با سلام مرسی از مطلب بسیار خوب شمافقط ای کاش ترجمه پارسی این کتاب هم در دسترس بود
    باز هم سپاسگزارم

  • iikurd
    پاسخ

    لطفاً فارسیشو بذارین

  • حسين ميري
    پاسخ

    @razor
    بنده اگه انگليسي رو دانلود ميكردم الان ميتونستم ترجمه‌اش رو شروع كنم
    اما متاسفانه فايل بالا قابل دانلود نيست

  • roho
    پاسخ

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

    هزینه هایی که برای تهیه طرح های اولیه صرف میشه و مشتری به راحتی رد می کنه و با گستاخی طرح اولیه رو پیش پاافتاده یا تمسخر می کنه ، چطور میشه جبران کرد؟

    * ممنون می شوم اگر پاسخ مستقیم بدهید و ارجاع به خواندن کتاب ندهید.

  • nima
    پاسخ

    من هم دقیقاً سوال roho را دارم.

  • @M
    پاسخ

    سلام لطفاً پاسخ Roho عزیز رو بدید کاملاً درست میگن

  • اوبالیت به بو
    پاسخ

    سلام

    پاسخ جناب آقای حسین میری:
    شما می توانید کتاب را از لینک زیر دانلود نمایید:
    http://www.4shared.com/document/AVmG3osM/97_things_every_programmer_sho.htm
    پاسخ کاربران roho و nima:
    ابتدا پاسخ سوال اول شما مبنی بر اینکه چقدر میشه یک مشتری را که در بیان خواسته هاش عاجز است را می دهم. ببنید تخصص شما در تولید یک محصول نرم افزاری یک بخش کوچک کار است. اینکه شما توانایی پیادهسازی و اجرای موفق پروژه ها را دارید یک امتیاز است اما کافی نیست. دیدگاه شما یک دیدگاه سیستمی و گاها فیلدی به یک موضوع است در حالی که یک شخصی که چیزی زیادی از نرم افزار نمی داند این دیدگاه را ندارد. زمانی که شما ی محصول نرم افزاری مثل آفیس را خریداری می کنید به تمام جزئیات به کار رفته دقت می کنید در حالی که یک کاربر عادی حتی ساده ترین نکات و اشیا را نمی بیند و بعد از مدتی گزینه ای را که چند سال جلو چشمش بوده را اما به آن دقت نداشته را می بیند. در واقع این شما هستید که باید نیازمندی های سیستم را از زیر زبان کارفرما بیرون بکشید. این را در نظر داشته باشید در بعضی مواقع هنگام تحلیل و جمع آوری اطلاعات خیلی از افرادی که شما با آنها مصاحبه می کنید پاسخ درستی به شما نمی دهند و دروغ می گویند. زیرا فکر می کنند سیستم جایگزین آنها می شود و شغل خود را از دست می دهند. پس این شما هستید که باید “صبر” و “حوصله” داشته باشید و کنترل افکار مشتری خود را در دست بگیرید. اگر صبر و تحمل کمی دارید خود را اصلاح کنید. اگر نمی توانید ارتباط برقرار کنید و زود عصبی یا خسته می شود یا حوصله تان سر می رود و می خواهید که زود جلسه مصاحبه تمام شود باید برروی خود کار کنید.
    و اما سوال دوم مبنی بر اینکه مشتری فاز اول پروژه یعنی جمع آوری اطلاعات را کاغذ بازی و بیهوده می پندارد باید عرض کنم که من به شخصه این روش را الگوی خودم قرار می دهم:
    صحبت کنید. در همان ابتدا که می خواهید با مشتری راجع به پروژه صحبت کنید به مشتری بگویید که شرایط کاری شما این است. سلسله مراتب را به ترتیب شرح دهید و به او بفهمانید که اگر در فاز ابتدایی اطلاعات غلط رد و بدل شود منجر به خسارت و زیان می شود و به او بگویید که همین مرحله جمع آوری اطلاعات هزینه هایی دارد. درواقع یک کار پژوهشی محسوب می شود و شما اگر می خواهید به محصول برسید باید هزینه آن را پرداخت کنید.حال یا مشتری قبول می کند یا نمی کند خارج از این دو حالت نیست. اگر قبول کرد که شما می توانید با خیال راحت تر به تحلیل و طراحی سیستم بپردازید چون دغده ی هزینه های فاز اول پروژه مثل رفت و آمدها یا حقوق ها پرداختی را ندارید اما اگر قبول نکرد این شما هستید که تصمیم میگیرد کار کنید یا نکنید.
    پس اگر می خواهید که کار کنید باید به هر روشی که در آن مهارت دارید بتوانید مشتری را قانع کنید.

  • roho
    پاسخ

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

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

    حال آیا باید از مشتری خرد گذشت؟
    ایجاد تفاوت و کسب سهمی از بازار در میان رقبا و بی اعتمادی مشتریان و بحران اقتصادی چقدر امکان پذیر است؟

  • nima
    پاسخ

    ممنون از آقای به بو. با تمامی صحبت‌های شما موافقم. جمله “اگر صبر و تحمل کمی دارید خود را اصلاح کنید” تاثیر گذار بود.

  • امیر مهرانی
    پاسخ

    @roho هر شرکت برای خود بخشی از بازار (مشتریان9 را انتخاب می‌کند. این وظیفه مدیر شرکت – مدیر پروژه است که بتونه برآورد مالی درستی از پروژه داشته باشه. من پروژه‌هایی رو دیدم که با همین شرایط عجیب و غریب شروع می‌شن و دست آخر پیمانکار هم سود می‌کنه اما تعداد کارهایی که منجر به ضرر هر دوطرف می‌شه بیشتر هست.
    به نظر من در نهایت حق انتخاب با مجری است که کاری را انجام بدهد یا نه و مسئله نوع قرارداد بستن بیشتر یک توانایی انسانی است تا یک بحث سیستماتیک.
    من هم شخصا ترجیح می‌دم با این نوع مشتری کار نکنم اما با مشتریی که راحت هستم می‌تونم سال‌ها کار کنم.

  • مژگان بهروان
    پاسخ

    سلام اوبالیت عزیز، مرسی به خاطر مطلب خوبت

  • شاهین
    پاسخ

    از دوست عزیزم اوبالیت بابت معرفی و مطلب زیبا تشکر می کنم.

  • ali
    پاسخ

    لطفا لینک دانلود رو درست کنید

یک نظر بدهید