شوک‌های ذهنی! (بخش ۱)

  • یوسف مهرداد بی‌بالان

پیش‌گفتار:

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

نمونه ۱: رابطه سرما و گرما
در درس فیزیک یاد گرفتم که سرما همان نبود گرما است. هستی یکی معادل با نیستی دیگری است. و یاد گرفتم که برای افزایش سرما لازم است گرما را کم کنیم. به عبارت ساده‌تر کاهش یک عامل با افزایش عامل دیگر همراه است. 

شوک ۱: افزایش قطعیت منجر به کاهش عدم قطعیت نمی‌شود!
وقتی با مفهوم قطعیت و عدم قطعیت آشنا شدم رابطه بین آن را همان رابطه‌ی بین گرما و سرما می‌دیدم. برای من بدیهی بود که قطعیت و عدم قطعیت (شرایط غیرقطعی) مثل رابطه سرما و گرما است. افزایش یکی یعنی کاهش دیگری! اگه می‌خواهید میزان عدم قطعیت را افزایش دهید باید میزان قطعیت را افزایش دهید.
مدتی طول کشید تا با یک شوک بینان‌کن به این نتیجه برسم که برداشت ذهنی من کاملن نادرست است. شما نمی‌توانید با افزایش قطعیت،‌ عدم قطعیت (شرایط غیرقطعی) موجود را کاهش بدهید! (فکر کنم شما هم دچار شوک ذهنی شدید 🙂 )
برای نمونه شما نمی‌توانید با افزایش قطعیت در برنامه‌ریزی میزان عدم قطعیت آن را کاهش دهید. 

پس‌گفتار:
هنوز هم نمی‌دانم درست کدام است!

گزیده:

زهی دریای بی‌ساحل پر از ماهی درون دل
چنین دریا ندیدستم چنین ماهی نمی‌دانم


نرم‌افزار بی‌نقص و کامل

  • یوسف مهرداد بی‌بالان

شما نمی تونید نرم افزاری بنویسید که بی‌نقض و کامل باشه. این موضوع شما رو ناراحت می‌کنه؟ خوب، نباید ناراحت بشید. این موضوع رو به عنوان یکی از واقعیات زندگی بپذیرید. با اون کنار بیایید. با اون خوش باشید. زیرا نرم‌افزار بی‌نقص و کامل وجود نداره. هیچ کس در تاریخ کوتاه کامپیوتر، نرم‌افزاری کامل و بی‌نقص ننوشته. بعیده که شما اولین نفری باشید که این کار رو کرده. و اگه این موضوع رو به عنوان یک واقعیت نپذیرید، زمان و انرژی خودتون رو برای دنبال کردن یک رویای ناممکن تلف خواهید کرد.
اندرو هانت نویسنده کتاب The Pragmatic Programmer

پ.ن. تصویر از Gemini

آقای دکتر و انتخابات ریاست جمهوری آمریکا

  • یوسف مهرداد بی‌بالان

پیش گفتار:
بخش بزرگی از یادگیری‌های ما از تجربه است. تجربه‌هایی که در هیچ کتاب یا منبعی پیدا نمی‌شود. آموخته‌هایی که وقتی آنها را تجربه می‌کنید تازه بخش عمده‌ای از آموخته‌های نظری و تئوری جایگاه خود در مغز شما پیدا می‌کنند. در این نوشته می‌خواهم یکی از این تجربه‌ها را بازگو کنم. تجربه‌ای که در هیچ کتاب و کلاسی نمی‌توانستم آن را یاد بگیرم و اگر هم یاد می‌گرفتم خیلی زود فراموش می‌کردم.

انتخابات ۲۰۱۶ آمریکا:

در چنین روزهایی در سال ۲۰۱۶ برابر با ۱۳۹۵ خورشیدی، انتخابات ریاست جمهوری آمریکا برگزار شد. دو نماینده، آقای دونالد ترامپ و خانم هیلاری کلینتون با هم رقابت می‌کردند. پیش‌بینی‌ها در ایران از این حکایت از پیروزی خانم کلینتون می‌کرد. ولی به هر حال در هفته‌های پایانی رقابت شدید‌تر شده بود.

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

در بین خبرگان بازار سرمایه و تحلیل‌گرانی که آنها را آنجا ملاقات می‌کردم انسان نازنینی بود که ایشان را در این نوشته «آقای دکتر» خواهم نامید. آقای دکتر استاد من نیز بودند که آن موقع مشغول تحصیل در رشته‌ی مدیریت مالی بودم. فرد بسیار با تجربه، با شخصیت، با سواد و با لیست بلند بالایی از سمت‌های اجرایی و علمی. از خوش‌شانسی‌های من در زندگی کاری‌ و آموزشی‌ام، آشنایی و شاگردی آقای دکتر بود.

فردای روزی که نتایج انتخابات اعلام شد و آقای ترامپ برنده‌ی انتخاب اعلام شد، نقشه‌ی بازار (نموداری که رنگ قرمز نشان‌دهنده کاهش قیمت‌ها و سبز نشان‌دهنده‌ی افزایش قیمت است) سراسر قرمز بود! فعالان بازار در آن نهاد مالی نگران بودند هم به دلیل زیان سبد سرمایه‌گذاری‌شان و هم نگرانی از ریزش بورس در روزها، هفته‌ها و ماه‌های آینده.

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

پاسخی که انتظار داشتم این بود که «بله، من هم مثل بقیه دچار زیان شدم و اصلن فکر نمی‌کردم که هیلاری کلینتون بازنده‌ی انتخابات بشه».

چهره‌ی آقای دکتر موقع پاسخ به سوالم هنوز در حافظه‌ام باقی مانده. با آرامش خاصی که ویژه‌ي خودشان بود شروع به صحبت کرد. گفته‌هایشان را دقیق به خاطر ندارم ولی مضمون گفته‌های ایشان این بود:‌ «نه من تا هفته‌ی پیش همه‌ی سهم‌ها رو فروختم و فقط بیست درصدشان را نگه داشتم.» «من که تحلیل‌گر سیاسی نیستم و نمی‌دونم چه کسی رییس جمهور می‌شه» «با خودم گفتم اگه کلینتون برنده‌ی انتخابات شد و سهم‌ها گرون شد می‌رم گرون‌تر می‌خرم و بعد هم گرون‌تر می‌فروشم» و »اگه هم که ترامپ شد من ضرر نمی‌کنم»

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

برای استاد عزیزم، آقای دکتر نازنین، بهترین‌ها را آرزومندم و امیدوارم که هر جا که هستند تندرست، شاد و پیروز باشند.

گزیده:
برای پول درآوردن نیازی نیست بدانید که قرار است چه اتفاقی بیفتد.
ثباتی که شما به دنبال آن هستید در ذهن شماست، نه در بازار.
مایکل داگلاس،
از افراد مشهور در روان‌شناسی خرید و فروش (ترید)

پیراهن تیم توسعه‌ی نرم‌افزار

  • یوسف مهرداد بی‌بالان

لوچانو اسپالتی، سرمربی تیم ملی فوتبال ایتالیا در مصاحبه‌ی اخیر خود (اینجا) در پاسخ به پرسشی در مورد دلایل ناکامی تیم ایتالیا در مسابقات یورو ۲۰۲۴ و نقش بازیکنان در این ناکامی گفته بود: «هر اتفاقی که بیفتد صددرصد به عهده من است، در این صورت ممکن است یک درصد تقصیر را به گردن کادرم بیندازم، اما بازیکنان از این موضوع معاف هستند. احتمالاً فشار زیادی به آن‌ها وارد کردم و این فرصت را ندادم که از تجربه بازی با پیراهن ایتالیا لذت ببرند. »

جالب‌ترین بخش این مصاحبه برای من این جمله بود: «این فرصت را ندادم که از تجربه بازی با پیراهن ایتالیا لذت ببرند».

اوه! به این موضوع فکر کردم که ما هم به عنوان بازیکن یا مدیر یک تیم نرم‌افزاری فرصت لذت بردن از پیراهن تیم «توسعه‌ی نرم‌افزار» را نداریم یا به بازیکنان تیم‌مان نمی‌دهیم.
می‌دانم! می‌دانم! هزاران دلیل درست برای «نبودن»‌اش وجود دارد، ولی برای «بودن»‌اش لازم نیست دنبال دلیلی باشیم. همه‌ی ما می‌دانیم که «باید» باشد. پس بسم‌الله!

به یاد دارم که در کلاس‌ها در کنار محتوای دوره،‌ یک سری ویدیوی کوتاه و نامرتبط به دوره پخش می‌کردم و از دانشجویانم می‌خواستم آن را با هم ببینیم و بعد کمی درباره‌اش با هم گپ بزنیم. یکی از این ویدیوها، سخنرانی شان آکر با عنوان «The happy secret to better work» بود. پیشنهاد می‌کنم شما هم آن را ببینید. می‌توانید ویدیو را با زیرنویس فارسی هم ببینید.

The happy secret to better work, Shawn Achor, 26,363,163 views

گزیده:
خیلی‌ها این جمله را به شما می‌گویند. از زمانی که مربی‌گری را با مربی‌گری خردسالان شروع کردم این جمله را بارها و بارها شنیده‌ام: «تنها چیزی که مهمه برنده شدنه». من مخالف این جمله‌ام. چیزی که واقعن اهمیت داره فوتبال با کیفیت بازی کردنه.

پ.ن.
پیش‌نویس این نوشته را آماده کرده بودم و می‌خواستم بعدها منتشر کنم. ولی پیروزی ایتالیا بر فرانسه در بازی امروز،‌ انتشار آن را به جلو انداخت. 😃

جزوه دوره تحلیل نیازمندی‌ها

  • یوسف مهرداد بی‌بالان

پیش‌گفتار: دوره‌ تحلیل نیازمندی‌ها

برای سالها، دوره‌ای تدریس می‌کردم با عنوان روش کاربردی تحلیل نیازمندی‌های نرم‌افزار (Software Requirements Analysis: A Practical Approach). این دوره را مثل بقیه دوره‌هایی که تدریس می‌کردم خیلی دوست داشتم. حس بسیار خوبی داشتم وقتی سر کلاس حاضر می‌شدم. دلم برای کلاس‌ و شاگردهایم خیلی تنگ می‌شود. یادش به خیر.

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

گفتار: جزوه درس تحلیل نیازمندی‌ها

جزوه‌ای که اینجا منتشر شده را آقای امیر سوکی نوشته‌اند. آقای سوکی،‌ جزوه‌ دست‌نویس‌شان را با تایپ کرده‌اند و نمودارها را با ابزار ترسیم و به آن اضافه کرده‌اند. ضمن قدردانی بسیار زیاد از این محبت و کار ارزشمند آقای سوکی و آرزوی بهترین‌ها برای‌شان، این جزوه‌ به پیوست تقدیم شده است.

گزیده:
یادداشت‌برداری تجربه‌ها را به خاطراتی تبدیل می‌کنند که درک و فهم ما از دنیا را شکل می‌دهند.»
والتر آیزاک‌سون، مورخ آمریکایی

دانلود پی‌دی‌اف تحلیل كاربردی نیازمندی‌های نرم‌افزار

چگونه برنامه‌نویس خوبی شوم

  • یوسف مهرداد بی‌بالان

پرسش: چه چیزی از یک برنامه‌نویس، یک برنامه‌نویس «خوب» می‌سازه؟

کنت بک: پاسخ این پرسش راحته. «خودت باش» (Be Yourself).

تنها یه بازی [چالش] در کل دنیا وجود داره و اون هم اینه:‌«تمام تلاشت رو بکن» (Do Your Best). ورزش‌‌، کار، روابط انسانی فقط سایه‌هایی از همین «یه بازی»اند. برنامه‌نویسی هم همین طور.
سوال اینه که به عنوان یک برنامه‌نویس تا چه حدی تونستید از حداکثر توان و پتانسیل خودتون استفاده کنید؟ اگر می‌تونید تقریبا بخش زیادی از توان‌تون رو استفاده بکنید، شما برنامه‌نویس خوبی هستید.»

گزیده:
برنامه‌نویس خوب کسی است که موقع رد شدن از یک خیابان یک طرفه همیشه هر دو طرف را نگاه می‌کند. ☺
داگ لیندر

متن انگلیسی نوشته:

What makes a programmer “good?”
This is an easy one. Be yourself. There is only one game in the whole world. It’s called Do Your Best. Sports, careers, relationships are all shadows of the One Game. Programming, too. How close have you come to your full potential as a programmer? If you get kind of close, you’re good.

برنامه نویس کاردرست

  • یوسف مهرداد بی‌بالان

اگه از من بپرسید برنامه‌نویس کاردرست کیست خواهم گفت «برنامه‌نویس خوبی که عادت‌های ممتازی دارد». این جمله برگرفته از سخن کنت بک (Kent Beck) درباره‌ی خودش است:

«من برنامه‌نویس ممتازی نیستم. من برنامه‌نویس خوبی هستم که عادت‌های ممتازی دارم»

“I’m not a great programmer; I’m just a good programmer with great habits.”

برای من این که «عادت‌‌های ممتاز» (great habits) در برنامه‌نویسی چیست همواره جای سوال و تحقیق بوده است.

کنت بک در جایی در توضیح این جمله‌اش گفته که «تأمل (Reflection) اساسی‌ترین و اصلی‌ترین عادت است. در یک ساعت گذشته چه کارهایی کردم؟ کدوم بخش‌اش رو می‌تونستم بهتر انجام بدم؟ دفعه بعد [توی چنین شرایطی] چه کاری می‌کنم؟ تأمل مادر همه‌ی عادت‌های دیگه است»

اینها برداشت‌های من است از نکاتی که کنت بک به آنها اشاره کرده است:

  • «در یک ساعت گذشته چه کارهایی کردم؟»: یک ساعت گذشته را ارزیابی کنم، به آن چه گذشته، دستاوردها، مسایل و مشکلات، و این که چقدر اثربخش (effective) بوده‌ام فکر کنم.
  • «کدوم بخش‌اش رو می‌تونستم بهتر انجام بدم؟»: کارایی یک ساعت گذشته را بررسی کنم و نسبت به جنبه‌هایی از کارم که قابل بهبود است تفکر نقادانه داشته باشم.
  • «دفعه بعد [توی چنین شرایطی] چه کاری می‌کنم؟» بر اساس تجربه‌‌ای که کسب کردم، کدام بخش از کار رو به شکل دیگری انجام و بهبود خواهم داد و برای انجام آن از چه تکنیک‌ها یا متدهای جدیدی استفاده خواهم کرد.

او حرف‌هایش رو به این شکل ادامه‌ می‌دهد: «من موقعی که با وارد کانینگهام (Ward Cunningham) کار می‌کردم چیزهای فوق‌العاده‌ای به خاطر استفاده از «تامل» (Reflection) یاد گرفتم. ما هر روز صبح توی کافه‌تریا تک‌ترونیکس با هم قهوه می‌خوردیم،‌ به تپه‌های اطراف نگاه می‌کردیم و درباره‌ی این که کارها چه جوری داره پیش می‌ره صحبت می‌کردیم.»

و در پایان کنت بک اشاره می‌کند که «اساسن کتاب‌های من این عادت‌ها را بیان می‌کنند:

  • کدنویسی برای دیگران
  • کار در قالب گام‌های کوچک
  • استراحت کافی».

گزیده:
ما از تجربه‌‌ چیزی یاد نمی‌گیریم، ما با فکر کردن و تامل (Reflection) درباره‌ی تجربه‌‌ها یاد می‌گیریم.
جان دیویی فیلسوف آمریکایی

پ.ن. من کمی درباره‌ی واژه Reflection هم تحقیق کردم که بتونم برگردان مناسبی برای اون پیدا کنم. دوستانم در گروه «برابریابی برای واژه‌های تخصصی» برگردان‌های بازتاب، بازاندیشی، تعمق،‌ تامل، غور و ژرف‌نگری را پیشنهاد کردند و من واژه‌ی تامل را از بین انتخاب کردم.

برای خروج از جستجو کلید ESC را بفشارید