Beautiful Design and Code Workshop – Part I

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

پیش‌گفتار:

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

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

بارها و بارها با پیشنهاد دوستان و دانشجویان قبلی‌ام در دوره‌های «تحلیل و طراحی شیءگرا» (Object Oriented Analysis and Design) و «الگوهای طراحی» (Design Patterns) برای برگزاری مجدد این دوره‌ها مواجه بودم ولی بی‌وقتی امان نمی‌داد.

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

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

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

در پایان عنوان «Beautiful Design and Code» را برای کارگاه انتخاب کردیم. امیدوارم برگزاری این کارگاه برای همه‌ی شرکت‌کنندگان مفید باشد.

گفتار:

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

مدت کارگاه
کارگاه در قالب جلسه‌های 4 ساعته برگزار خواهد گردید. مدت کل کارگاه 24 ساعت یا 6 جلسه است.

روش برگزاری
شرکت‌کنندگان به تیم‌های سه نفره دسته‌بندی خواهند گردید. این تیم‌ها مسئول انجام پروژه‌ها و تمرین‌ها هستند. بخش عمده‌ای از تمرین‌ها و پروژه‌ها خارج از زمان کارگاه انجام خواهد شد و از این رو ضروری است که شرکت‌کنندگان وقت کافی خارج از کارگاه برای گذراندن موفق کارگاه، در نظر گرفته باشند.
کارگاه شامل مطالب زیر خواهد بود:
○ مطالب نظری
○ تمرین‌های برنامه‌نویسی
○ تکه‌پروژه‌های برنامه‌نویسی
○ پروژه‌های برنامه‌نویسی

ادامه دارد …

پ.ن:

* این کارگاه توسط شرکت سماتک برگزار خواهد گردید.

* برای عضویت در گروه تلگرامی «متدهای چابک» اینجا را کلیک کنید.

گزیده:

“Talk is cheap. Show me the code.” Linus Torvalds

بدون شرح

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

كار در جريان يک قاتل بی‌صداست.

 

 

 

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

انسان خوشبخت، سازمان خوشبخت

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

پیش‌گفتار:

پنج‌شنبه‌ی هفته‌ی گذشته مهمان کارگزاری بودیم؛ گردهمایی پرسنل کارگزاری بود. استاد گران‌قدر، آقای دکتر هاشمی (دكتر سيد مهرداد هاشمی، سخنران و مشاور در حوزه منابع انسانی، عضو هيئت علمي سازمان مديريت صنعتي) هم یکی از سخنرانان این مراسم بود.

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

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

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

خوشبختی چیست؟

آيا خوشبختي :

– پول زياد است؟

– تحصيلات عالي است؟

– يك ماشين آخرين مدل است؟

– يك خانه شيك و استثنائي است؟

– يك همسر زيبا و خوش تيپ، پولدار و مقام دار و خلاصه استثنایی است؟

تعریف خوشبختی از دیدگاه علمی:

”وضعيتي كه افراد آن چنان درگير فعاليت خاصي هستند كه هيچ چيز ديگري براي آنها در آن لحظه مهم نيست.“

احساس چنين تجربه اي چنان لذت بخش است كه افراد حاضرند براي آن بهاي زيادي بپردازند.

Martin Seligman مدلي معرفي مي كند كه نشان مي دهد، انسان وقتي ويژگي هاي زير را داشته باشد، بيشترين احساس خوشبختي را مي كند.

Happiness

خوشبخت ترين مردم روي كره زمين:

موسسه تحقيقاتي انگليسي New Economics Foundation تحقيقات گسترده اي را در خصوص خوشبختي در بين 178 كشور دنيا
انجام داده است. فكر مي كنيد خوشبخت ترين سرزمين هاي اين كره خاكي طي اين بررسي ها كدام كشورها مي باشند؟

سرزمين رويايي كه مردمش يكي از خوشبخت‌ترين مردم روي زمين هستند يك مجمع الجزاير دور افتاده

در جنوب اقيانوس آرام است با نام وانواتو.

اسرار خوشبختي مردم وانواتو:

* آنها با حداقل ها راضي مي شوند

* روابط دوستانه، مشاركت و همكاري ميان آنها حكمفرماست

* آنها به هم آسيبي نمي رسانند

* زيان و ضرر همنوعان خود را، ضرر خود مي دانند

* زندگي شيرين و لذت بخش را با امكانات آن نمي سنجند

* هيچكس مشكلي براي ديگري ايجاد نمي كند

* حرص و طمع كلماتي است كه مردم اين منطقه با آن بيگانه اند

پرسش مهم: افراد موفق و افراد خوشبخت

سؤالي كه در ذهن بسياري از افراد مطرح مي شود اين است كه آيا افراد موفق يعني افرادي كه به دستاوردهاي بسياري رسيده اند يا High Achievers، احساس خوشبختي مي كنند؟

خوب است بدانید که %92 افراد موفق احساس خوشبختي نمي كنند.

مدل زندگي افراد موفق و خوشبخت

  1. 1. داشتن رسالت
  2. 2. چشم انداز مثبت از آينده
  3. 3. انجام كار با معنا
  4. 4. ارتباطات انرژي زا
  5. 5. رفتار و باورهاي آرامش دهنده
  6. 6. مرور، بازسازي، تعهد مجدد با خود
  7. انضباط

 

آقای دکتر هاشمی، استاد گران‌قدر، سپاسگزارم.

گزیده:

“همه مردم از خوشبختي حرف مي زنند، اما كمتر كسي معناي آن را مي داند.” مادام اولان

واچک (بخش اول)

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

پیش گفتار:

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

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

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

این نوشته ادامه دارد ….

گزیده:

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

روژه کایوا – استاد ابوالحسن نجفی
مرجع

خاطرات ترجمه (بخش دوم)

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

نویسنده: یاسر کازرونی

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

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

شیرینی ملاحظات پی در پی مهندس اسماعیلی که به حق اغلب هم درست بود از یک سو، پرکاری و پیگیری‌های خانم مهندس معصومی و جدیت و توانمندی مهندس مهرداد یک تیم خیلی خوب را در کنار هم تشکیل داده بود که بعضاً برای اثبات نظرات خود زمان‌های زیادی را با هم بحث می‌کردند تا به نتیجه برسند! یادم می‌آید یکبار حدود نیم‌ساعت در مورد کلمات «هدف کسب و کار» که ترجمه «Business Goal» بود با مهندس اسماعیلی بحث می‌کردیم! یا یکبار برای معنی کلمات «و/یا» که در متن اصلی آمده بود مجبور شدیم یک ربع چانه بزنیم تا مهندس اسماعیلی قبول کنند که نیاز به پانوشت دارد. یا ماه‌ها گذشت تا نهایتاً یک کلمه معادل مناسب برای کلمه «Insight» یا «Prework» انتخاب کنیم. همه‌ی این‌ها نشان از این داشت که تیم به کیفت متن متعهد است و هیچ چیز را فدای کیفیت کتاب نمی‌کند.

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

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

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

برنت‌های ایرانی

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

پیش‌گفتار:

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

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

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

آیا شما در شرکت‌تان «برنت» دارید؟ 🙂

گفتار:

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

وس شانه‌هایش را با شرمندگي بالا انداخت. ”واقعیت اینه که اون یکی از بهترین‌ افراد ماست. او واقعا باهوشه و تقریبا در مورد همه‌ي كارهاي ما اطلاعات زیادی داره. او یکی از معدود کسانی‌یه که می‌دونه ارتباط بين برنامه‌هاي كاربردي در سطح كلان سازمان چه جوریه. او حتي بيشتر از من روش كار اين شركت رو مي‌دونه.“

گزیده:

ندارد

به احترام هدف، گلدرات و نقشینه (بخش دوم)

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

بخش سوم: به احترام دیوید جی اندرسن (آشنایی)

به دنبال کاربرد تئوری محدودیت‌ها در تولید نرم‌افزار و مهندسی نرم‌افزار، اینترنت را زیر و رو کردم.

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

David_J_Andersonمرجع تصویر: اینجا

کتاب

Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results,

واقعاً ارزنده و خواندنی است.

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

TOC’s Five Basic Steps
The Theory of Constraints can be explained with a simple five-step process that needs little explanation.

* Identify the System Constraint.

* Decide how best to exploit the System Constraint.

* Subordinate everything else to the decision in step 2.

* Elevate the Constraint.

* If steps 1 through 4 have created a new constraint, return to step 2.

سپس در فصل چهارم ادامه می‌دهد:

The Five Constraints of Software Development
There are five main constraints in software development management: people, time, functionality, budget, and resources (excluding people). Agile methods recognize these constraints and seek to protect and exploit them [Beck 2000, p. 15].

Resources must be protected from uncertainty. Uncertainty manifests itself when the unplanned happens. A system can absorb uncertainty with the provision of buffers. Tom DeMarco wrote an entire book Slack, about buffering resources in software [2001]!

In every case, a constraint can be protected by a buffer. A buffer would normally be allocated in the same unit of measure as the constraint is measured. Hence, people should be buffered with people, schedule with time, budget with money, functionality with requirements, and other resources with similar resources

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

گزیده:

“You don’t need the best people to produce world-class results.” David J. Anderson

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