داستان یک مصاحبه

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

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

مصاحبه‌کننده: می‌تونید کمی درباره حلقه‌ی while در برنامه‌نویسی توضیح بدید؟
برنامه‌نویس: من با while توی برنامه‌نویسی کار نکردم.

مصاحبه‌کننده: بگید یک حلقه while چند بار تکرار می‌شه؟
برنامه‌نویس: عرض کردم که من با while کار نکردم. کدهایم رو با حلقه for می‌نویسم.

مصاحبه‌کننده: خب! باشه. بگید تفاوت حلقه for با حلقه while چی هست؟
برنامه‌نویس: عرض کردم که با while کار نکردم. ولی حلقه for … (توضیحات کامل و دقیق متقاضی)

مصاحبه‌کننده: ببین عزیزم، کسی که حلقه while رو ندونه، اصلا برنامه‌‌نویسی بلد نیست. اصلا به درد برنامه‌نویسی نمی‌خوره.

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


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

گزیده:
بدیهی است مهم‌ترین وظیفه خبرنگار حفظ احترام، شأن و منزلت مصاحبه‌شونده است حتی اگر مصاحبه‌شونده یک مجرم باشد چراکه خبرنگار بازجو نیست، پرسشگر است.
فریدون صدیقی (روزنامه‌نگار)

جومویی هستید یا فومویی؟

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

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

مکتب فومو (FOMO):
فومو یا “ترس از دست دادن” (Fear of Missing Out.)، نگرشی است که شما به صورت پیوسته برای به روز بودن درباره‌ی پدیده‌ها و رخدادهای اجتماعی احساس نیاز می‌کنید و خود را ملزم می‌دانید که لحظه لحظه از رخدادهای اجتماعی، اخبار و روندهای محبوب مطلع گردید.

مکتب جومو (JOMO).
ایده پشت جومو یا”لذت از دست دادن” (Joy of Missing Out) این است که به جای اینکه دائماً احساس نیاز به به روز بودن داشته باشید، شادی را در پذیرفتن لحظات تنهایی، آرامش و چیزهایی که واقعاً برایتان مهم هستند، بیابید. زندگی وقتی بهتر می‌شود که چیزهای بی‌اهمیت را از دست بدهید.

گزیده:

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

مفاهیم نیازمندی‌های نرم‌افزار

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

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

چون فضا دوستانه بود به شوخی گفتم می‌دونید یکی از درس‌های مهمی که به تحلیل‌گران یاد می‌دهند چی هست؟
بعد ادامه دادم:‌
بین نیاز بیان‌شده‌ی کاربر و نیاز واقعی وی تفاوت قائل بشید ???? چیزی که کاربر می‌گه نیاز بیان‌شده است و چیزی که باید دنبالش بگردید نیاز واقعی. خیلی از مواقع این دو تا یکی نیستند.

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

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

گفتار:
شکل زیر نمایش به‌روز و جامعی است از مفاهیم نیازمندی‌های نرم‌افزار از کتاب جدید Essentials of Software Requirements از Karl Wiegers و Candase Hokanson. کارل ویگرز فرد شناخته‌شده‌ای در حوزه‌ی تحلیل نیازمندی‌هاست. از نظر من، این کتاب پیشنهاد مناسبی است برای افزایش دانش در زمینه‌ی تحلیل نرم‌افزار.

مرجع عکس:‌ www.informit.com
گزیده:
نیازمندی‌های کسب‌وکار (business requirements) باید توسط کسی بیان شود که پاسخ‌گوی نهایی ارزش ایجاد‌شده‌ی محصول برای کسب‌وکار است. نیازمندی‌های کاربر (user requirements) هم باید توسط افرادی بیان شود که دکمه‌ها را فشار می دهند، صفحه را لمس می کنند یا خروجی‌ها را دریافت می‌کنند [یا با سیستم کار می‌کنند یا از خروجی آن استفاده می‌کنند].
کارل ویگرز

بمبوله: بردهای هرز

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

دوست نازنینی این ویدیو رو برای من فرستاده و این پیام را نیز پیوست آن کرده است:
«به این موضوع فکر کردم که خوب است بسته شادی بفرستم! اما به نظرم رسید این داستان ممکن است زمانی به کار آموزش و تعلیم بیاید.»


لینک ویدیو: تلوبیون

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

سپاسگزارم علی آقای م.

گزیده: ندارد

قانون ۸-۸-۸

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

۸-۸-۸
8 ساعت کار، 8 ساعت زندگی، 8 ساعت خواب.

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

8/8/8
8 hours for work, 8 hours for life, 8 hours of sleep. That’s a fair formula. It’s not work/life balance — it’s work/life/sleep balance. A lack of sleep isn’t a badge of honor, it’s a mark of stupidity — literally.

مرجع:‌ 37signals.com

با تشکر از دوست عزیزم، مسعود خ.

دنبال چه می‌گردی! (طراحی)

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

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

سپس از شرکت‌کنندگان خواست که به این پرسش پاسخ دهند و آنها پاسخ دادند:
– آزمون
– فهمیدن آسان
– یکپارچگی و یک‌دستی
– انگیزه (دلایل طراحی)
– ساده بودن
– اعتمادپذیری
– کامل بودن
– آسان یادگرفتن

و بعد ادامه داد:
ما موضوعات و ایده‌های بسیار خوبی داریم مانند SOLID وDRY وDesign by Contract وSmall Methods و … که کمک می‌کنند تا خوب طراحی کنیم. اما من دنبال یک موضوع پایه‌ای‌تر و بنیادی‌تر در طراحی نرم‌افزار هستم.
و بعد ادامه داد …

حالا این پرسش را از خود بپرسیم و به آن فکر کنیم: طراحی خوب از نظر ما چگونه است؟ و توجه داشته باشیم که پاسخ ما باید پایه‌ای و بنیادی باشد!

اگر علاقه‌مند بودید پاسخ خود را برای من بفرستید.

گزیده:
آیا شما هم از این نوع چابکی که کلا در مورد پذیرش و پیروی از یک‌سری واژگان مدشده، رسوم و تشریفات،‌ و پوسترهای انگیزشی است خسته شده‌اید؟
جیم وایریک (Jim Weirich)

تی‌دی‌دی (TDD) عامل چنددستگی در جامعه‌ی برنامه‌نویسان

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

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

کنت بک(Kent Beck) طی یادداشتی، نظرش را در این مورد بیان کرد که برای من بسیار آموزنده بود.
او در پاسخ نوشت:
به نظر من این TDD نیست که جامعه‌ برنامه‌نویسان را به دو دسته تقسیم می‌کند. بلکه عامل چنددستگی پاسخ به این پرسش است که «آیا برنامه‌نویسان مسئول کیفیت کار خود هستند یا خیر؟ وقتی برنامه‌نویسی می‌گوید کار تمام شد آیا واقعا کار تمام شده یا نه.»

این موضوعی است که باعث چنددستگی در جامعه‌ی برنامه‌نویسان شده است. TDD تنها یکی از روش‌هایی است که پاسخ‌شان به این پرسش «بله و بله» است.
ما به عنوان یک صنعت کماکان در حال مبارزه با میراث تیلوریسم (Taylorist) هستیم که ادعا می‌کند «کیفیت مسئولیت واحد کیفیت است.»

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

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