ضمیمه C
مرور یکساله بر برنامه شاگردی Obtiva
نویسنده: دیو هوور (Dave Hoover)
نکته:
این نوشته نخستینبار در ۲۳ مارس ۲۰۰۸ در وبلاگ من منتشر شد. پس از دعوتنامهای که سال قبل نوشتم، این یادداشت تلاشی بود برای «پیشقدمی از راه عمل» — یعنی اینکه خودم برنامهی شاگردیای راه بیندازم و تجربههای موفق و شکستهایم را با دیگران به اشتراک بگذارم. از زمان نگارش این مرور، دو شاگرد جدید جذب کردهایم و دو نفر از شاگردان قبلی را نیز به سطح بالاتر ارتقا دادهایم.
یک سال پیش تصمیم گرفتم کار مشاورهی تماموقت در محل مشتری را متوقف کنم. از سال ۲۰۰۴، زمانی که به ThoughtWorks پیوستم، تا نخستین مشتریام در Obtiva، درگیر پروژههای مشاورهای بودم. از بهار ۲۰۰۷ به بعد فقط چند کار کوتاه چندروزه انجام دادم؛ بیشتر روزهایم در دفتر کوچکی در ویتون، ایالت ایلینوی، حدود یک مایل دورتر از خانهام گذشت.
شروع استودیوی استادکاری و سپس برنامهی شاگردی Obtiva ریسکی بزرگ بود. اما پس از کار سخت فراوان، اشتباهات متعدد و مدیریت نهچندان ماهرانه، امروز میتوانم با اطمینان بگویم که این ۱۲ ماه به ثمر نشسته و آینده درخشان است.
استودیوی استادکاری چیست؟
در واقع بهتر است بگویم: استودیوی استادکاری Obtiva چیست؟ چون فقط دربارهی تجربهی خودم میتوانم با قطعیت حرف بزنم.
اول باید بپرسیم: «استادکاری» در این زمینه یعنی چه؟ بهترین پاسخم این است که بخش سوم کتاب Software Craftsmanship نوشتهی پیت مکبـرین را بخوانید. من برنامهنویسی را خودآموز یاد گرفتم و از دنیای هنر آمده بودم؛ بنابراین مفهوم «استادکاری» فوراً در من طنین انداخت. پس طبیعی بود که وقتی فرصت ساختن یک واحد جدید در Obtiva را پیدا کردم، آن را بر پایهی همان ایدهها بنا کنم.
واژهی «استودیو» نیز از همان تعریف کلاسیکش میآید: «محل کار یک هنرمند» یا «جایی که هنری آموزش یا تمرین میشود». این دقیقاً همان بود که ما میخواستیم: جایی که تازهکاران بتوانند در پروژههای واقعی، دوشادوش حرفهایها، هنر توسعهی نرمافزار را بیاموزند.
اما واقعیت همیشه آشفتهتر از رویاست — بارها پیش آمد که شاگردان جدا افتادند یا بدون نظارت کافی کار کردند. این هرجومرجها نتیجهی یک واقعیت ساده بود: من استاد نبودم، فقط یک میانراهی (journeyman) بودم. و همین باعث شد که سال اول پر از آزمونوخطا در مدیریت پروژه، ارتباط با مشتری، برنامهریزی ظرفیت و جذب نیرو باشد. با این حال، در حدود ۵۰ جلسهی بازنگری (Retrospective) طی همان سال، فرآیندمان را گامبهگام بهبود دادیم و به ترکیب پویایی از اصول چابک دست یافتیم که هنوز هم هر هفته تکامل مییابد.
شاگرد کیست؟
پیت مکبـرین در بخش سوم کتابش بهخوبی مفهوم شاگردی را توضیح میدهد:
«یکی از اصول بنیادین مدل استادکاری این است که نمیتوان فقط با شنیدن دربارهی یک مهارت، آن را آموخت؛ باید آن مهارت را در شرایط واقعی و زیر نظر یک استاد باتجربه تمرین کرد.»
در عمل، شاگرد کسی است که میخواهد فرصت یادگیریاش را به حداکثر برساند — حتی به بهای از دست دادن فرصتهای مالی یا عنوانهای شغلی بزرگتر. اغلب این یعنی عمداً خود را در وضعیتی قرار دادن که از همهی اطرافیان ضعیفتر باشی (Be the Worst)؛ دقیقاً کاری که من با پیوستن به ThoughtWorks کردم.
در Obtiva، ما بیشتر به استعداد و نگرش توجه میکنیم تا به رزومه. شاگرد کسی است که شاید بتواند در جای دیگر پول بیشتری درآورد، اما انتخاب میکند که در اینجا روی رشد بلندمدت خود سرمایهگذاری کند.
نتایج سال نخست
با وجود کاستیهایم بهعنوان مدیر، چهار شاگردی که در سال نخست با ما بودند، واقعاً درخشان عمل کردند:
- یکی از آنها که توسعهدهندهی وب با Perl بود، نزد ما Ruby، Rails و Java یاد گرفت و حالا برای یک صندوق سرمایهگذاری محلی، برنامهای چندنخی با Ruby/JRuby/Java روی ماشین ۱۶هستهای مینویسد.
- دیگری برای بازآغاز حرفهاش آمد، Unix، MySQL، Perl، Ruby و Rails یاد گرفت و اکنون مدیر و توسعهدهندهی اصلی پروژهی تجارت الکترونیکی بزرگ استودیوست.
- سومی از یک کارگاه فشردهی Rails به ما پیوست، ابزارهایی مانند Sphinx، RSpec، God، ActiveMerchant، CruiseControl.rb و Perl یاد گرفت، حالا Git را وارد تیم کرده و در آستانهی رهبری فنی سومین پروژهی بزرگ Rails خود است.
- چهارمی، که پیشتر مدیر شبکه بود، پس از انجام چند پروژهی سریع Rails، حالا بهکمک RSpec در حال ساماندادن به یک کدبیس عظیم و آشفته است — و از بسیاری از توسعهدهندگان باسابقهای که میشناسم بهتر عمل میکند.
عوامل موفقیت ما
- هممکانی (Co-location): هیچ چیز جای همکاری چهرهبهچهره را نمیگیرد.
- برنامهنویسی دوتایی (Pair Programming): هیچ چیز بهتر از یادگیری کنار یک همتیمی نیست.
- توسعهی آزمونمحور (TDD): حلقههای بازخورد کوچک، خطا را به یادگیری تبدیل میکنند.
- اصول چابک (Agile Principles): بازنگری مداوم و اصلاح فرایند بر اساس واقعیتها.
- احترام به مشتری: ارتباط مستقیم با صاحب هدف و استفاده از زبان او در تعریف داستانهای کاربری.
- ابزارهای خوب: مکبوکها با نمایشگر اضافه و فناوریهای تازه برای افزایش بهرهوری.
- کار سخت و تمرکز: تحویل بهموقع با وجود شرایط دشوار.
- فرهنگ تیمی: گاهی یک جنگ برفی ناگهانی در پارکینگ میتواند الهامبخشترین لحظهی روز باشد.
همهی این عوامل باعث افزایش تقاضا برای خدمات ما شدند و در عین حال، توانستیم سرعت رشد را بهتدریج مدیریت کنیم تا به ریتمی پایدار برسیم. این ریتم پایدار همان عنصر حیاتی است — چون به ما اجازه میدهد بیرون از دفتر نیز زندگی کنیم، انرژی بگیریم و با ذهنی تازه به سر کار برگردیم.