بهشت راه نرفته!

  • یوسف مهرداد

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

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

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

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

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

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

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

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

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

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

https://bibalan.com/?p=4486
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نوروز ۱۴۰۳

  • یوسف مهرداد

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

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

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

https://bibalan.com/?p=4490
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

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

  • یوسف مهرداد

پیش‌گفتار:

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

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

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

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

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

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

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

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

گزیده:

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

https://bibalan.com/?p=4480
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

دستیار کتابخوانی

  • یوسف مهرداد

سرعت پیشرفت یادگیری ماشین به ویژه بخش مدل‌های زبانی بزرگ (LLM) مانند ChatGPT به اندازه‌ای است که هر لحظه باید منتظر نوآوری و فناوری نوظهوری باشید. امکانات این مدل‌ها امکان حل مسا‌له‌هایی را فراهم می‌کنند که تا همین چند وقت پیش امیدی به حل آنها نبود.

در این نوشته می‌خواهم به دو مورد از آنها که جنبه شخصی دارد اشاره کنم.

۱) مورد کاربرد یک: حافظه‌یار

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

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

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

Question: what is the role of messaging grid?
Answer: The role of the messaging grid is to manage input requests and session state within the virtualized middleware of a space-based architecture….
Reference: software-architecture: page 214.

۲) مورد کاربرد دو: کتاب‌خوان یار

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

Question: Explain a front controller?
Answer: A front controller is a domain service within a choreography architecture that not only handles domain behavior but

مدل زبانی به کمک محتوای کتاب و اطلاعاتی که با آن آموزش دیده است می‌تواند به شما کمک کند تا محتوای کتاب را بهتر بفهمید و سرعت و کیفیت کتابخوانی شما را افزایش می‌دهد.

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

https://bibalan.com/?p=4472
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

غیرمستقیم زندگی کنید!

  • یوسف مهرداد

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

If you want to go in one direction, the best route may involve going in another.

این جمله بیانگر مفهوم «غیرمستفیم» یا ‘obliquity’ است: مفهومی که با ظاهر متناقض و پارادکسی‌اش بیان می‌کند که بسیاری از اهداف وقتی به صورت غیرمستقیم دنبال شوند احتمال این که محقق شوند بیشتر است.

چه برای پیروزی در نبردهای سرنوشت‌ساز و چه برای تحقق اهداف فروش، تاریخ نشان داده که رویکردهای غیرمستقیم (obliquity) مو‌فق‌تر بوده‌اند به ویژه در حوزه‌های بسیار دشوار.

جان کی (John Kay) اقتصاددان برجسته این نظریه‌اش را برای بسیاری از حوزه‌ها از کسب‌و‌کارهای بین‌المللی گرفته تا برنامه‌ریزی شهری، از فوتبال گرفته تا مدیریت مهار آتش‌سوزی جنگل‌ها استفاده کرده است.

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

کتاب جان کی از مشاهدات محقق حوزه‌ی داروسازی سر جیمز بلک (Sir James Black) الهام گرفته است. سر جیمز بلک برنده‌ی جایزه نوبل ۱۹۸۸ در جایی گفته:
«من به همکارانم می‌گفتم که اگر می‌خواهید پول در بیاورید راه‌های بسیار آسان‌تری نسبت به تحقیقات دارویی وجود دارد. اوه! چقدر من در اشتباه بودم! به نظر می‌رسد هم در کسب‌وکار و هم در علم، وقتی سرگرم انجام کاری هستید، احتمال موفقیت شما در رسیدن به دستاورد دیگری [که مد نظر شما نبود] بیشتر است. من به این پدیده، اصل «غیرمستقیم» می‌گویم.»

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

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

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

https://bibalan.com/?p=4456
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

پوسته‌ی بیشتر – تخم‌مرغ کمتر

  • یوسف مهرداد

جان بنتلی (Jon Bentley) که ستونی با نام Programming Pearls در نشریه Communications of the ACM داشت در سال ۱۹۸۶ به برنامه‌نویسی ادیبانه (literate programming) علاقه‌مند شد و از دونالد کنوث (Donald Knuth) خواست تا به عنوان نویسنده‌ی مهمان برنامه‌‌ای با این شیوه بنویسد و از داگ مکل‌روی (Doug McIlroy) هم خواست نقدی بر برنامه‌نویسی ادیبانه در آن ستون بنویسد.

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

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

در ادامه با متانت و با زبانی ساده، مبانی و اصول زیربنایی برنامه‌ی کنوث را نقد و ویران کرد. آن چه افراد از آن نوشته به یاد دارند این است که مکل‌روی یک کد با ۶ دستور شل یونیکس (six-command shell pipeline) نوشت که نسخه‌ی کامل و بدون خطای کد پاسکال ۱۰ صفحه‌ای کنوث بود.


۱  tr -cs A-Za-z '\n' |
۲  tr A-Z a-z |
۳  sort |
۴  uniq -c |
۵  sort -rn |
۶  sed ${1}q

مرجع: More shell, less egg

این داستان نشان‌‌دهنده‌ی توانایی ترکیب اجزای از پیش‌ساخته در مدل Pipeline (معروف به pipes and filters) است. جایی که ترکیب دستورات ساده و مستقل، ولی قابل ترکیب می‌تواند کار یک کد ۱۰ صفحه‌ای را انجام دهد.


گزیده:

Keep it simple, make it general, and make it intelligible. Douglas McIlroy

https://bibalan.com/?p=4357
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

انتشار کتاب The Ignite Project: A Journey in Scrum

  • یوسف مهرداد

خوشحالم که به اطلاع دوستان گرامی برسانم که کتاب The Ignite Project: A Journey in Scrum (لینک آمازون) توسط انتشارات Springer Nature در تاریخ ۲۵ آذر ۱۴۰۲ منتشر شد. افتخار داشتم با خانم نیوشا رییسی نژاد و آقای دکتر مشیرپور به عنوان نویسنده در این کتاب همکاری داشته باشم. از هر دوی این عزیزان به ویژه آقای دکتر مشیرپور بسیار سپاسگزارم.

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

در کنار داستان توسعه‌ی این نرم‌افزار بخش‌هایی به شکل زیر و با نام a word from the mentor (سخنی از مربی) وجود دارد که مفاهیم، اصطلاحات و تکنیک‌های مهندسی نرم‌افزار یا متدهای چابک مرتبط با آن بخش از داستان را توضیح می‌‌دهد. تلاش بر این بوده که اطلاعات تخصصی حوزه‌ی توسعه‌ی نرم‌افزار در لابه‌لای داستان گنجانده شود.

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

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


https://bibalan.com/?p=4437
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

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