کجایی؟ باران آمد!

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

… و باران آمد.
این روزها دمای هوای کانادا در حال ثبت رکوردهای جدیدی است. دمای هوای ایالت بریتیش کلمبیا به دمای بی‌سابقه‌ی 46 درجه رسید و دمای اینجا هم رکورد 37 درجه را پشت سرگذاشت. نبود زیرساخت مناسب برای هوای گرم مانند کولر و دیگر خنک‌کننده‌ها، تحمل شرایط را واقعا غیرممکن می‌کند.

اما دیروز (دوم ژوئن) باران آمد و هوا را خنک‌تر کرد. دمای امروز 24 درجه سانتی‌گراد است!
دیدن باران با یادآوری بی‌بالان و ترانه‌ی لیلایِ علیرضا قربانی هم خالی از لطف نبود. دلم برای روزهای بارانی تنگ شد؛ روزهایی که مادر ما را از رفتن به حیاط خانه منع می‌کرد! نگران بود که خیس شویم و بعدش بیمار! کجایی مادر؟ باران آمد!

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

به افتخار هانیه!

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

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

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

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

از هانیه خواستم که یک نمودار تهیه کند که محور ایکس آن روزهای هفته و محور ایگرگ آن مدت زمان درس خواندنش بود. نموداری شبیه به نمودار زیر.

هانیه در ابتدای هر هفته برنامه‌ریزی و برآورد می‌کرد و بعد در طول هفته آن چه که اتفاق می‌افتاد را ثبت می‌کرد. نموداری شبیه به نمودار زیر: خط قرمز برآورد و خط سیاه، مقدار واقعی است.

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

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


تحلیل تکنیکال
:
تحلیل تکنیکال (فنی) (به انگلیسی: Technical analysis) در امور مالی، تجزیه و تحلیل فنی یک روش تجزیه و تحلیل برای پیش‌بینی جهت قیمت‌ها از طریق مطالعه داده‌های بازار گذشته، و در درجه اول قیمت و حجم است. [ویکی پدیا]
ابزارهای زیادی برای تحلیل تکنیکال مورد استفاده قرار می‌گیرند که یکی از آنها الگوهای نموداری یا به انگلیسی Chart Patterns هست. ایده‌ی این ابزار این است که الگوهایی در نمودار قیمت وجود دارد که تکرارپذیر است. اگر شما بتوانید الگو را در نمودار قیمت یک سهم یا اوراق بهادار پیدا کنید احتمالا می‌توانید ادامه‌ی آن را پیش‌بینی کنید.
برای نمونه یکی از این الگوها که به الگوی سر و شانه معروف است در شکل زیر دیده می‌شود. [مرجع: خانه سرمایه] رفتار قیمت به گونه‌ای است که شبیه سر و سرشانه یک انسان می‌شود. برای نمونه اگر قیمت در نقطه شانه سمت راست باشد، پیش‌بینی می‌شود که قیمت‌ها کاهش یافته و با سرعت بریزد.


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

 

نمایشگاه نمودارهای هانیه:
حالا در تصاویر زیر می‌توانید برخی از نمودارهای درس‌خواندن هانیه را ببینید. جذاب نیست؟! 🙂

 

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

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

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

 

پاییز ۱۳۹۳: دوره تحلیل نیازمندی‌های نرم‌افزاری

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

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

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

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

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

 

منبع عکس: اینجا

 

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

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

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

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

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

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

از بازی لذت ببرید و برای پیروزی، سخت تلاش کنید!

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

The SPACE of Developer Productivity

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

The SPACE of Developer Productivity (Link)
Nicole Forsgren, Margaret-Anne Storey, Chandra Maddila, Thomas Zimmermann, Brian Houck, Jenna Butler,
ACM Queue, 28 February 2021

Abstract:
Developer productivity is about more than an individual’s activity levels or the efficiency of the engineering systems relied on to ship software, and it cannot be measured by a single metric or dimension. The SPACE framework captures different dimensions of productivity, and here we demonstrate how this framework can be used to understand productivity in practice and why using it will help teams better understand developer productivity and create better measures to inform their work and teams.

Myths and Misconceptions About Developer Productivity:
Myth 1: Productivity is all about developer activity.
Myth 2: Productivity is only about individual performance.
Myth 3: One productivity metric can tell us everything.
Myth 4: Productivity measures are useful only for managers.
Myth 5: Productivity is only about engineering systems and developer tools.

The Dimensions Of Productivity:
Satisfaction and well-being: How fulfilled, happy, and healthy one is
Performance: An outcome of a process
Activity: The count of actions or outputs
Communication and collaboration: How people talk and work together
Efficiency and flow: Doing work with minimal delays or interruptions

The Levels:
Individual: One person
Team or Group: People that work together
System: End-to-end work through a system(like a development pipeline)

Example Metrics:

پاییز ۱۳۹۳: دوره متدهای چابک

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

الگوی ایجاد نرم‌افزار: مار و پله!

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

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

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

مرجع عکس: اینجا

 

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

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

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

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

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

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