سماموس: نوشته‌های یوسف مهرداد بی‌بالان


Гео и язык канала: не указан, не указан
Категория: не указана


این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.

Связанные каналы  |  Похожие каналы

Гео и язык канала
не указан, не указан
Категория
не указана
Статистика
Фильтр публикаций


قانون هایروم (Hyrum’s Law)-بخش اول

طی چند سال گذشته و به دلیل همکاری‌ام برای انتقال (migration) زیرساخت‌های سطح‌ پایین یکی از پیچیده‌ترین سیستم‌های نرم‌افزاری روی کره‌ی خاکی به نکات مهمی درباره‌ی تفاوت بین رابط (interface) و پیاده‌سازی آن (implementation) برخورد کرده‌ام. معمولن ما رابط (interface) را تجریدی (abstraction) برای ارتباط با سیستم می‌دانیم و پیاده‌سازی (implementation) را هم روشی می‌‌دانیم که سیستم کارش را انجام می‌دهد. برای نمونه فرمان و پدال‌های گاز و ترمز در خودرو مانند رابط عمل می‌کنند و چرخ‌ها و موتور هم مانند پیاده‌سازی هستند (ارتباط ما با خودرو از طریق فرمان و پدال‌ها است ولی خودرو به کمک موتور و چرخ‌ها کار خواسته‌شده را انجام می‌دهد). چنین مفهومی به دلایل متعددی مفید است که مهم‌ترین‌اش این است که پیچیدگی بسیاری از سیستم‌های پرکاربرد خیلی سریع به حدی می‌رسد که فهم و شناخت کامل آن برای یک فرد یا گروه دشوار می‌گردد و تجرید‌ها (abstraction) برای مدیریت این پیچیدگی بسیار مهم و حیاتی‌اند.

تعریف سطح درستِ تجرید (abstraction)، موضوع کاملن جداگانه‌ای است که در اینجا به آن نمی‌پردازیم (کتاب نفر ماه افسانه‌ای -Mythical Man-Month- را ببینید). نکته مهم این است که وقتی یک تجرید (abstraction) تعریف شد ما دوست داریم آن را غیرقابل تغییر، شفاف و تفسیرناپذیر بدانیم. به عبارت دیگر، هر رابط (interface) از دیدگاه نظری باید مرز شفافی بین استفاده‌کنندگان یک سیستم و پیاده‌سازی داخلی سیستم ترسیم کند. اما از دیدگاه عملی، با رشد تعداد استفاده‌کنندگان و استفاده از سیستم، این نظریه نقض می‌شود و استفاده‌کنندگان شروع به اعتماد و اتکا به جزییات پیاده‌سازی می‌کنند. این جزییات یا دانسته از طریق رابط (interface) به بیرون درز کرده یا خود استفاده‌کنندگان موقع استفاده از سیستم آنها را کشف کرده و فهمیده‌اند. «قانون تجریدهای دارای نشتی اسپولسکی» (Spolsky’s Law of Leaky Abstractions) توضیح می‌دهد که چگونه استفاده‌کنندگان به جزییات پیاده‌سازی اعتماد و اتکا می‌کنند.

نهایت چنین اتفاقی ما را به سوی مفهومی هدایت می‌کند که در محاوره به آن «قانون رابط‌های ضمنی یا غیرشفاف» (The Law of Implicit Interfaces)‌ گفته می‌شود: با فرض وجود تعداد کافی از استفاده‌کنندگان، چیزی به نام پیاده‌سازی خصوصی (private implementation) وجود ندارد [پیاده‌سازی خصوصی به این معناست که استفاده‌کننده هیچ اطلاعی از نحوه و روش پیاده‌سازی داخلی سیستم ندارند].

گزیده:
وقتی داشتم این کد رو می‌نوشتم فقط من و خدا می‌فهمیدیم من دارم چه کار می‌کنم. الان دیگه فقط خدا می‌دونه! 😀
ناشناس


https://t.me/bibalan_com
https://bibalan.com/?p=4652


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

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

شوک ۳: گزاره‌های متفاوت و متناقض ولی همه درست!
بر اساس آموخته‌های ریاضیات‌ام بر این باور بودم که وقتی در مورد یک موضوع دو نظر متفاوت وجود دارد نمی‌تواند هر دوی آنها درست باشد. اگر کمی به هم شبیه بودند باز هم می‌شد از مبحث اشتراک در مجموعه‌ها آن را بررسی کرد ولی اگر هیچ شباهتی به هم نداشته باشند و حتا در تناقض با هم باشند، ناگزیر یکی از آنها باید درست باشد. نتیجه‌ی این که باید تلاش کنید تا پاسخ درست را از بین آنها پیدا کنید.

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

بعدها در جایی دیدم که اگر عدد ۶ انگلیسی را بین دو نفر بگذارید که یکی از راست و دیگری از چپ به آن نگاه کند،‌ یکی می‌گوید این عدد ۹ است و دیگری می‌گوید این عدد ۶ است. هر چند که عدد ۶ ثابت است ولی آن دو از دو منظر متفاوت به آن می‌نگرند و در نتیجه هر دو درست می‌گویند: یکی می‌گوید ۶ و دیگری می‌گوید ۹. نظر من می‌تواند کاملن مخالف نظر شما باشد ولی هر دو نظر و در یک زمان درست باشند!

زندگی سخت‌تر از گذشته شد و شاید هم راحت‌تر! سخت‌تر شد چون باید به جایی که از آن زندگی را نگاه می‌کردم توجه می‌کردم و به یاد می‌آوردم که اگر جایم تغییر می‌کرد همه چیز می‌توانست متفاوت باشد. راحت‌تر شد چون کمتر درگیر درست/نادرست بودم و بیشتر به این نتیجه می‌رسیدم که همه درست می‌گویند حتا شما دوست عزیز!

گزیده:
رها کن حرف هندو را ببین ترکان معنی را
من آن ترکم که هندو را نمی‌دانم نمی‌دانم


https://t.me/bibalan_com
https://bibalan.com/?p=4648


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

نمونه ۲:
از مبحث بازخورد (فیدبک) در مدارهای الکتریکی آموخته بودم که که بازخورد دو نوع است:‌ بازخورد مثبت و بازخورد منفی. بازخورد مثبت باعث افزایش و بهبود خروجی سیستم می‌شود و بازخورد منفی باعث کاهش خروجی سیستم. وقتی شما به یک فرد دیگر بازخورد می‌دهید، یا بازخوردتان مثبت است (تعریف و تمجید می‌کنید)‌ یا بازخوردتان منفی است (نقد می‌کنید و ایراد می‌گیرید).

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

پس گفتار:
به قول مولانا «چه دانم‌های بسیار است لیکن من نمی‌دانم»

https://t.me/bibalan_com
https://bibalan.com/?p=4650


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

پیش‌گفتار:

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

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

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

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

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

https://t.me/bibalan_com
https://bibalan.com/?p=4644


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

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

اندرو هانت نویسنده کتاب The Pragmatic Programmer


https://t.me/bibalan_com
https://bibalan.com/?p=4593


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

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

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

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

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

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

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

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

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

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

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

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

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



https://t.me/bibalan_com
https://bibalan.com/?p=4633
https://bit.ly/3CjjgEC


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

https://bit.ly/3z6YFlG

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

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

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

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

The happy secret to better work, Shawn Achor, 26,363,163 views
https://bit.ly/4ghuXeA

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

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

منبع مصاحبه: ورزش ۳
https://bit.ly/3AV7Mq4

https://t.me/bibalan_com
https://bibalan.com/?p=4618




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

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

https://bit.ly/4fROpym

برای سالها، دوره‌ای تدریس می‌کردم با عنوان روش کاربردی تحلیل نیازمندی‌های نرم‌افزار (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.


https://bit.ly/4fHYCxg
https://t.me/bibalan_com
https://bibalan.com/?p=4571


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

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

این جمله برگرفته از سخن کنت بک (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 هم تحقیق کردم که بتونم برگردان مناسبی برای اون پیدا کنم. دوستانم در گروه «برابریابی برای واژه‌های تخصصی» برگردان‌های بازتاب، بازاندیشی، تعمق،‌ تامل، غور و ژرف‌نگری را پیشنهاد کردند و من واژه‌ی تامل را از بین انتخاب کردم.

https://bit.ly/4d91AsD

https://t.me/bibalan_com
https://bibalan.com/?p=4549


پیشنهاد کتاب: معماری نرم‌افزار

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

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

گفتار:
طی چندین ماه گذشته با گروهی از دوستان خوبم دو کتاب درباره‌ی معماری نرم‌افزار خواندیم:

– Fundamentals of Software Architecture: An Engineering Approach, 2020, by Mark Richards, Neal Ford

– Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures, 2021, by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani

کتاب اول هم‌چنان که از عنوان آن پیداست به مبانی معماری نرم‌افزار می‌پردازد. خواندن این کتاب علاوه بر مرور آنچه که از معماری می‌دانستم، دانسته‌ها‌یم را به روز کرد و با واژگان جدیدی هم آشنا نمود. نمونه این واژگان کوانتوم و کوانتا و ارتباط آنها با سیستم‌های یک‌ تکه یا Monolithic و سیستم‌های توزیع‌شده یا Distributed است.

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

گزیده:
Don’t try to find the best design in software architecture; instead, strive for the least worst combination of trade-offs.
Software Architecture: The Hard Parts

https://bit.ly/3Wb5dHx


https://t.me/bibalan_com
https://bibalan.com/?p=4542


I am excited to share that I will be attending the IEA/AIE 2024 conference (www.ieaaie2024.com) in Hradec Králové, Czech Republic, next week from July 10 to 12!

I’ll be presenting our paper, "𝑾𝒐𝒓𝒌 𝒊𝒏 𝑷𝒓𝒐𝒈𝒓𝒆𝒔𝒔 𝑷𝒓𝒆𝒅𝒊𝒄𝒕𝒊𝒐𝒏 𝒇𝒐𝒓 𝑩𝒖𝒔𝒊𝒏𝒆𝒔𝒔 𝑷𝒓𝒐𝒄𝒆𝒔𝒔𝒆𝒔 𝑼𝒔𝒊𝒏𝒈 𝑻𝒆𝒎𝒑𝒐𝒓𝒂𝒍 𝑪𝒐𝒏𝒗𝒐𝒍𝒖𝒕𝒊𝒐𝒏𝒂𝒍 𝑵𝒆𝒕𝒘𝒐𝒓𝒌𝒔," co-authored with Dr. Behrouz Far, Faezeh Eshragh, from University of Calgary, and Bahareh Ghiyasian from Google.

Our presentation is scheduled for July 10 at 11:50 AM CEST. If you’re attending the conference or happen to be near the venue, I would love to connect, exchange insights, and explore potential collaborations.

Looking forward to seeing everyone, especially my friends in Europe!


به احترام «یک آدم معمولی»

https://bit.ly/4bBCNwK

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

به همه‌ی دوستان و خوانندگان فوتبالی و غیرفوتبالی پیشنهاد می‌کنم این ویدیوی بیست دقیقه‌ای را ببینند. اگر هم فرصت ندارید ۸ دقیقه پایانی آن را ببینید. آدرس ویدیو در یوتیوب (https://youtu.be/o3GSDlRGODU?si=B0SQqUokJDqULsK6)


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

از آنجا که وقتی ما می‌خواهیم درباره‌ی مربیان قضاوت کنیم به آمارها نگاه می‌کنیم که ببینیم چند بار قهرمان لیگ برتر انگلیس شده‌اند، چند بار قهرمان لیگ قهرمانان اروپا شده‌اند، وقتی به این آمار نگاه می‌کنی آیا به یاد می‌آری که آن چه واقعا بیشتر از هر جامی اهمیت دارد خانواده (باشگاه لیورپول) است، روابط با انسان‌هاست که تو با خودت از لیورپول به همراه می‌بری؟

و کلوپ پاسخ می‌دهد و در بخشی از پاسخ خود می‌گوید:
البته که مردم می‌گویند او طی ۹ سال فقط یک قهرمانی لیگ برتر و یک قهرمانی لیگ قهرمانان را به دست آورده و من با این موضوع راحتم چون کاملا درست می‌گویند. آیا من به این آمارها علاقه‌ای دارم؟ نه. چرا باید علاقه داشته باشم. اگر همین افراد به جای ۲ قهرمانی طی ۹ سال بگویند بگویند ۳ قهرمانی طی ۹ سال ، زندگی‌ من حتی یک ذره هم تغییر نخواهد کرد.

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


و سخن پایانی مجری:
از شما بسیار سپاسگزارم شما مردم رو خوشحال کردید.

پانوشت:
هنگام ورود کلوپ به لیورپول خبرنگار به او گفت که مورینیو خودش را «آدم خاص» (The Special One) می‌نامد. شما خودتان را چه می‌نامید. کلوپ پاسخ داد: من «یک آدم معمولی» (A Normal One) هستم.

گزیده:
موضوع پول یا شهرت نیست، موضوع عشق به بازی است. یورگن کلوپ

مرجع تصویر: اسکای اسپورت

https://t.me/bibalan_com
https://bibalan.com/?p=4521


مدل یادگیری ۷۰:۲۰:۱۰

پیش‌گفتار:

بارها عبارتهایی شبیه جملات زیر را از دوستانم که می‌خواستند شرکت بعدی‌شان را برای همکاری انتخاب کنند شنیده‌‌ام:

- این شرکت حقوق بیشتری پرداخت می‌کند ولی تکنولوژی‌اش به روز نیست. این شرکت را انتخاب می‌کنم ولی خودم کنارش یادگیری تکنولوژی‌های نوین را ادامه می‌دهم.

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

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

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

گفتار: مدل ۷۰:۲۰:۱۰

چند وقت پیش به صورت اتفاقی با مدلی آشنا شدم به نام مدل یادگیری و توسعه‌ی ۷۰:۲۰:۱۰ (۷۰:۲۰:۱۰ Learning and Development Model و سایت ۷۰۲۰۱۰institute.com). این مدل بر اساس یک نظرسنجی از ۲۰۰ مدیر اجرایی در سال ۱۹۹۶ طراحی شده است. در این نظرسنجی از آنها خواسته شده بود که بیان کنند «چگونه یاد می‌گیرند». بر اساس این مدل، افراد از روش‌های زیر یاد می‌گیرند:

۷۰ درصد یادگیری از محیط کار [از کارهای چالشی یعنی کارها و پروژه‌هایی که مهارت‌هایی فراتر از مهارت کنونی شما دارند و با کارهایی که در آن احساس راحتی می‌کنید (کامفورت زون) متفاوتند]

۲۰ درصد یادگیری از دیگران [ آموزش غیررسمی از طریق شبکه‌‌سازی تخصصی، نشست‌ها، مربیان، منتورها ]

۱۰ درصد از طریق آموزش رسمی


حالا با این مدل شاید بتوان توضیح داد که چرا درگیر شدن در یک پروژه در محیط کار تاثیر به مراتب بیشتری از خودآموزی‌ها و شرکت در کلاس‌ها دارد.

گزیده:
You keep on learning and learning, and pretty soon you learn something no one has learned before.
― Richard Feynman



https://bit.ly/4ayrunz
https://t.me/bibalan_com
https://bibalan.com/?p=4507


یادگیری بی‌نام!

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

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

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

خوب چه باید کرد؟

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

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

این تجربه خوشایند باعث شد آن را در حوزه‌ی فنی نیز تکرار کنم. با این تفاوت که به جای انتخاب بخش‌های کتاب ورد، ویدیوی سخنرانی یا نوشته‌های افراد سرشناس را به صورت تصادفی انتخاب می‌‌کردم.

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

با این وجود نباید فراموش کنیم که:
چه دانم‌های بسیار است لیکن من نمی‌دانم
که خوردم از دهان بندی در آن دریا کفی افیون

https://bit.ly/4bxK1BF
https://t.me/bibalan_com
https://bibalan.com/?p=4499


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

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

https://bibalan.com/?p=4486
https://t.me/bibalan_com


بهشت راه نرفته! (۱ از ۲)

در تصمیم‌گیری‌ها به ویژه در تصمیم‌گیری‌های فنی، گاهی پیش می‌آید که شما بین دو راهی یا چندراهی تصمیم‌گیری گیر می‌کنید. از آنجا که نمی‌توانید همه‌ی آن راه‌ها را انتخاب کنید، به ناچار یکی را به عنوان تصمیم نهایی انتخاب می‌کنید.

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

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

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

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

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

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

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


سال نوی همگی مبارک!

برای‌تان بهترین‌ها را آرزومندم.
شاد باشید و تندرست

حافظ منشین بی‌ مِی و معشوق زمانی
که‌ ایّامِ گل و یاسمن و عیدِ صیام است


فناوری و بیلی‌ها

پیش‌گفتار:

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

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

داستان اردک‌های گم‌شده:

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

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

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

فناوری و بیلی‌ها!

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

گزیده:

«خاطره، تنها بهشتی است که نمی‌توانند ما را از آن طرد کنند.»
ژان پل


https://bit.ly/4cge2ab
https://t.me/bibalan_com
https://bibalan.com/?p=4480

Показано 20 последних публикаций.