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

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

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

بازی هزار تو
هزار تو یا به انگلیسی 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 نزدیک می‌شوید؛ احساس پیروزی می‌کنید، خوشحال می‌شوید، دیگران هم شما را تشویق می‌کنند، سرمست از باده‌ی پیروزی هستید که ناگهان سر و کله‌ی ماری پیدا می‌شود و مهره‌ی شما را چنان نیش می‌زند که لبخند بر لب‌تان خشک می‌شود: روز از نو، روزی از نو.

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

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

طبقه‌بندی مفاهیم (classification)

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

نوشته‌ای از دوست گرانقدرم، روح الله دلپاک که در اینجا (تلگرام: t.me/Break_Point) خواندم:

… یوسف مهرداد، وقتی می‌خواست سختی و پیچیدگی طبقه‌بندی مفاهیم (classification) را توضیح دهد، شعری از «شل سیلوراستاین»، شاعر، داستان‌سرا و کارتونیست آمریکایی را مثال می‌زد:

I asked the Zebra, are you black with white stripes?
Or white with black stripes?
And the zebra asked me,

Are you good with bad habits?
Or are you bad with good habits?

Are you noisy with quiet times?
Or are you quiet with noisy times?

Are you happy with some sad days?
Or are you sad with some happy days?

Are you neat with some sloppy ways?
Or are you sloppy with some neat ways?

And on and on and on and on and on and on he went.

I’ll never ask a zebra about stripes…again.

گاهی یک مثال، از صد صفحه توضیح گویاتر است. این همان گاهی است.
– روح‌الله دلپاک

پ.ن.
– سپاسگزارم روح الله جان!
– نوشته‌ای در این مورد در وبلاگ (داستانک گورخر و Classification!)

ای جوی‌های آرام از رودها بپرسید

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

ای قطره‌های باران با جوی‌ها بگویید
کان رهرو غم آلود زین ره‌گذر کجا رفت؟

ای جوی‌های آرام از رودها بپرسید
زین راهِ راز پیوند آن همسفر چرا رفت؟

ای رودهای سرکش کاشفته وُ سبک پوی
آغوش می‌گشایی دریای بیکران را

آنجا که بی‌نهایت در بی‌کران غنوده است
از موج ها بجویید آن راز جاودان را

ای قطره‌های باران ای جویبار آرام
ای رودهای سرکش و‌ی بحر بی‌کرانه

سرگشته وُ ملولم در دشت خاطر خویش
آیا شما ندارید زان بی‌ نشان نشانه .. ؟

آهنگ قطره‌های باران
خواننده: علیرضا قربانی ترانه: پرتو کرمانشاهی ؛ آهنگسازی: طهمورث پورناظری ؛ تنظیم: سهراب پورناظری

Joke: NLP and Programmers

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

There is an old joke from the 1970s:
Scientists developed a technology to program computers using natural language.
The project was scrapped when they discovered that programmers do not speak the natural language. 🙂

Source: Yann LeCun on Twitter

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