سال نو

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

چو فردا روز نوروز است و نوروز جهان آید
رود این سال فرتوت و یکی سال جوان آید

از این خوابم چنین یابم که سالی خوش روان آید
که آن نامهربان یارم، به خوابم مهربان آید
«میرزاده عشقی»

نوروزتان فرخنده.
بهترین‌ها را برای‌تان آرزومندم.

برنامه‌نویسی دلی! – بخش دو

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

فیلم «پیدا کردن فارستر» (Finding Forrester) به داستان آشنایی یک رمان‌نویس معروف، برنده‌ی جایزه پولیتزر و البته منزوی به نام ویلیام فارستر (با بازی شان کانری)‌ و یک نوجوان دبیرستانی به نام جمال می‌پردازد. فارستر پس از آن که پی‌ می‌برد جمال برای پذیرفته شدن در کالج نیاز دارد متنی ادبی بنویسد، تصمیم می‌گیرد به او کمک کند. متن زیر گفتگوی فارستر و جمال است در اولین تلاش فارستر برای کمک به جمال. در این صحنه، فارستر پشت یک ماشین تحریر می‌نشیند و جمال هم رو به روی او و جلوی یک ماشین تحریر دیگر ایستاده است.

فارستر: پس بیا به اون [یکی از استادهای دانشگاه و عضو کمیته ارزشیابی] نشون بدیم که تو چه کاری می‌تونی انجام بدی.
جمال: چرا چیزهایی که برای خودمون می‌نویسیم … همیشه خیلی بهتر از چیزهایی‌اند که برای دیگران می‌نویسیم؟
فارستر: زود باش.
– بشین.
– شروع کن.
جمال: چی رو شروع کنم؟
فارستر: نوشتن رو

در این لحظه، فارستر شروع به تایپ می‌کنه.
جمال: داری چه کار می‌کنی؟
فارستر: دارم می‌نویسم، همون کاری که تو قراره بکنی… وقتی که شروع کنی به فشردن اون کلیدها [ی ماشین تحریر].

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

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

برنامه‌نویسی دلی! – بخش یک

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

پیش‌گفتار یک: نگاه ریاضی‌گونه و نگاه مهندسی‌گونه به برنامه‌نویسی

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

برای نمونه در نگاه ریاضی‌گونه به برنامه‌نویسی شما ابتدا باید ساختار داده‌ها (data structure) را تعیین کنید و بعد با نگاه رویه‌گونه و الگوریتمی به کمک تابع یا رویه (procedure or function) راه‌حل‌تان را به گام‌هایی بشکنید و همین گام‌ها را تکرار کنید. روی کاغذ، در کامپیوتر یا در ذهن‌تان،‌ ابتدا باید این اجزا فکر کنید و بعد کدنویسی رو شروع کنید. البته می‌توانید کمی فکر کنید و بعد کد بنویسید و بعد باز هم فکر کنید و کد بنویسید و …

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

از این منظر،‌ نگرش روش‌های تکراری-تدریجی (iterative-incremental) نیز همین گونه است فقط «به همه چیز فکر کن بعد کد بنویس» به «یک کم فکر کن یک کم کد بنویس بعد دوباره فکر کن …». تلاش بر این است که اندازه و مدت آماده کردن طراحی و سپس پیاده‌سازی آن کاهش پیدا کند.

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

برداشت من این است که اگر از این منظر به روش‌های توسعه‌ی نرم‌افزار نگاه کنیم همه‌ی آنها بر این بنیان استوارند که «اول فکر کن بعد کد بنویس»!

در یکی دو نوشته‌ی بعدی در نظر دارم کمی در این باره بنویسم و ایده‌ای را با شما مطرح کنم.

گزیده:

برنامه‌نویس کیه؟
برنامه‌نویس، ماشینی یه که قهوه [ یا چایی] رو به کد تبدیل می‌کنه!

روان‌شناسی پول

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

کتاب روان‌شناسی پول: درس‌های ابدی درباره‌ی ثروت، طمع و خوشحالی (The Psychology of Money: Timeless lessons on wealth, greed, and happiness) را به همراه چند تن از دوستان عزیزم خواندم.

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

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

اجازه دهید بدون لو دادن مطالب کتاب،‌ چند نمونه را با هم بررسی کنیم.
– در این کتاب توضیح می‌دهد که پول‌داری (rich) با ثروت‌مندی (wealthy) تفاوت دارد و آن چه باید به دنبال آن بود ثروتمندی است!

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

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

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

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

گزیده:
انسان‌ها کارهای احمقانه‌ای با پول می‌کنند ولی هیچ انسانی احمق نیست!
مورگان هاوسل – روان‌شناسی پول

نمونه کاربردهای هوش مصنوعی

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

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

https://cloud.google.com/transform/101-real-world-generative-ai-use-cases-from-industry-leaders

مهم نیست که چه می‌خواهیم!

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

صحنه‌ای از مجموعه تلویزیونی “بازی تاج و تخت” (Game of Thrones) است که توی اون «لیتل فینگر» (شخصیت مرموز،‌ حیله‌گر و تشنه‌ی قدرت این سریال) رو به «سانسا استارک» می‌کنه و می‌گه:
«همیشه دلم می‌خواست یه کشتی داشته باشم. ولی الان [که یه کشتی دارم] دلم می‌خواد چند تا کشتی داشته باشم. عجیبه! مگه نه؟!»
و سانسا ازش می‌پرسه: «چی عجیبه؟»
و بعد لیتل فینگر ادامه می‌ده:‌ «مهم نیست که چی می‌خوایم. مهم اینه که وقتی به دست‌اش می‌آریم یه چیز دیگه می‌خوایم.»


. . . هر سو مرا کشيد پي خويش در به در
اين خوش پسند ديده‌ی زيبا پرستِ من.
شد رهنمای اين دلِ مشتاق بی‌قرار،
بگرفت دستِ من.

و آن آرزوی گم شده، بی ‌نام و بی ‌نشان،
در دورگاهِ ديده‌ی من جلوه می‌نمود.
در وادیِ خيال مرا مست می‌دواند،
وز خويش می‌ربود.

از دور می‌فريفت دلِ تشنه‌ی مرا؛
چون بحر، موج می‌زد و لرزان چو آب بود.
وانگه که پيش رفتم با شور و التهاب، ديدم سراب بود!
الف.سایه.

قوانین نرم‌افزار: قانون کانینگهم (Cunningham’s Law)

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

بهترین راه برای دریافت پاسخ درست در اینترنت، پرسیدن پرسش درست نیست! بهترین راه، نوشتن پاسخ نادرست است.

ورد کانینگهم (Ward Cunningham)

مرجع تصویر: xkcd.com

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