یکی باور های رایج در میان توسعهدهندگان در تمام بخشهای اقتصاد ما این است: «اضافه کاری یکی از واقعیتهای زندگی است.» یعنی کار هرگز در وقتی که به آن اختصاص یافته انجام نمیشود. به نظر ما این گزاره مشکوک است. اضافه کاری قطعاً واقعیت زندگی در صنعت نرمافزار است. امّا اگر نرمافزارهای ساختهشده، در مجموع ارزش بیشتری از مبلغی که برای آن هزینه میشد نداشت، این صنعت نمیتوانست به این دورهی شکوفایی شگفتآور برسد. چگونه میتوان این واقعیت را توضیح داد که برنامهنویسان، و دیگر کارکنان در مشاغل فکری، ساعتهای خیلی بیشتری کار میکنند؟
یک احتمال نگرانکننده این است که اضافه کاری، راهی برای افزایش کمیت زمان کار نیست؛ بلکه برای بهبود میانگین کیفیت کار است. جملاتی تکراری میشنوید که گواه این موضوع است: «صبح زود و قبل از ورود بقیهی افراد، بهتر از همیشه کار میکنم.» «آخر وقت، به اندازهی ۲ یا ۳ روز کار میکنم.» «این دفتر تمام روز یک باغ وحش است! امّا حدود ساعت ۶ بعدازظهر، همه چیز آرام شده و واقعاً میتوانید کاری را به نتیجه برسانید.»
افراد ممکن است برای بهرهوری بیشتر زودتر بیایند، دیرتر بروند و یا سعی کنند کاملاً فرار کنند و یک روز در خانه بمانند تا بتوانند قسمت مهمی از کار را به انجام برسانند. یکی از شرکتکنندگان در سمینارمان تعریف کرد که رییس جدیدش اجازه نمیداد از خانه کار کنند، بنابراین او یک روز قبل از سررسید یک گزارش مهم، مرخصی استعلاجی گرفت تا بتواند کار را به انجام برساند.
ماندن تا دیروقت یا زود رفتن به محل کار و یا ماندن در خانه برای کار در آرامش، دلیل کافی برای نامناسب بودن محیط کار است. نکتهی شگفتانگیز این نیست که کار در آن محیط اغلب غیرممکن است، نکته این است که همه این موضوع را میدانند و هیچکس برای آن کاری نمیکند!
قانون پیشفرض #
شرکتی در کالیفرنیا که مشاور آنها بودم، بسیار برایشان مهم بود که نسبت به کارکنان خود مسئول باشند. یک سال، مدیریت شرکت در یک نظرسنجی از همهی برنامهنویسان (بیش از هزار نفر) خواسته بود بهترین و بدترین جنبههای شغلی خود را بگویند. مدیری که این نظرسنجی را انجام داده بود، از تغییراتی که شرکت ایجاد کرد، بسیار هیجانزده بود. او به من گفت که دومین مشکل بزرگ، ارتباط ضعیف با مدیران ارشد بود. شرکت با درس گرفتن از نظرسنجی، حلقههای کیفیت، جلسات گله و شکایت و برنامههای ارتباطی دیگر ایجاد کرد. من صبور و مؤدب به مواردی که با جزییات تعریف میکرد گوش دادم. وقتی صحبتش تمام شد، پرسیدم مشکل شماره یک چه بود؟ پاسخ داد «محیط. کارکنان از سروصدا ناراحت بودند.» پرسیدم که شرکت برای رفع این مشکل چه اقداماتی انجام داد؟ پاسخ داد: «ما نمیتوانیم در این زمینه کاری انجام دهیم؛ از کنترل ما خارج است.» — تام دیمارکو
دلسردکنندهترین اتفاق این است که آن مدیر حتی اندکی هم شرمسار نبود که نتوانسته برای بهبود شرایط محیط کاری انجام دهد. باوجود اینکه برنامهنویسان زیاد از دشواری شرایط شکایت کرده بودند، مدیریت پس از بررسی به این نتیجه رسیده بود که واقعاً نمیتوانند در این زمینه کار زیادی انجام دهند. این مشکلی بود که راه حل آن فراتر از توان انسانی بود. این یک قانون کاملاً پیشفرض است.
تغییر محیط، فراتر از توانایی انسان نیست. تقریباً در هر شرکتی یک گروه قدرتمند وجود دارد، یک گروه پلیس وسایل، که بر محیط کار سلطه دارد. امّا غیرممکن نیست از آنها بخواهیم دلیل مشکل را ببینند یا قدرت را از چنگ آنها در آوریم. در ادامهی این فصل، دلایلی ارائه خواهیم کرد که چرا مجبورید دقیقاً همین کار را انجام دهید و در فصلهای بعدی، به نکاتی در مورد چگونگی پیشبرد آن میپردازیم.
مسابقات جدال برنامهنویسی: مشاهدهی عوامل بهرهوری #
سالها قبل از ویرایش اول این کتاب، ما هر ساله نوعی نظرسنجی عمومی دربارهی بهرهوری انجام میدادیم. تاکنون بیش از سیصد سازمان در سراسر جهان در این مطالعات شرکت کردهاند. سرانجام، نظرسنجی سالانهی خود را به شکل مسابقهای عمومی برگزار کردیم که در آن تیمهای نرمافزاری از سازمانهای مختلف برای تکمیل مجموعهای از کارهای محکزدن برنامهنویسی و تست در کمترین زمان و با کمترین نقص رقابت میکنند. ما این مسابقات را جدال برنامهنویسی مینامیم. مسابقه به این شکل برگزار میشد:
- واحد اصلی رقابت، یک تیم دو نفره از یک سازمان است. این دو نفر با هم کار نمیکنند، بلکه با یکدیگر و همهی تیمهای دیگر مسابقه میدهند.
- هر دو عضو دقیقاً یک کار را انجام میدهند: طراحی، توسعه و تست برنامهای با اندازهی متوسط برای نیازمندی ثابت تعیین شده.
- شرکتکنندهها همانطور که مسئلهها را حل میکنند، زمان صرفشده را در گزارش زمانی ثبت میکنند.
- پس از اتمام تستهای همهی شرکتکنندهها، محصولات با آزمون پذیرش استاندارد ما ارزیابی میشوند.
- شرکتکنندگان در حوزه و ساعت کاری عادی خود و با استفاده از همان زبانها، ابزارها، ترمینالها و کامپیوترهایی که برای هر پروژهی دیگری استفاده میکنند، مسابقه میدهند.
- همهی نتایج محرمانه نگه داشته میشوند.
از ۱۹۸۴ تا ۱۹۸۶، بیش از ششصد توسعهدهنده از ۹۲ شرکت در این مسابقات شرکت کردند. نفع مسابقهدهندگان است که بفهمند در مقایسه با دیگران چه جایگاهی دارند. سود شرکتها این است که بفهمند چقدر در برابر سایر شرکتهای حاضر در مسابقه خوب عمل میکنند. منفعت ما هم این است که چیزهای زیادی دربارهی عوامل تاثیرگذار بر روی بهرهوری فرامیگیریم؛ عواملی که در ادامهی این فصل مورد بحث قرار گرفتهاند.
تفاوتهای فردی #
یکی از اولین نتایج مسابقات جدال برنامهنویسی، اثبات تفاوت بسیار زیاد بین افراد بود. البته این مورد قبلاً مشاهده شده بود. به عنوان مثال، شکل ۱-۸ ترکیبی از یافتههای سه منبع مختلف در مورد میزان تنوع در افراد است.
به نظر میرسد هر زمانی که تغییرات عملکرد نمونهای از افراد را اندازه بگیرید، میتوانید روی درستی سه قانون سرانگشتی حساب کنید:
- بهترین افراد، ۱۰ برابر بهتر از بدترین آنها کارآیی دارند
- بهترین عملکرد، ۲٫۵ برابر بهتر از میانه خواهد بود
- نیمهی بالاتر از میانه، بیش از دو برابر بهتر از نیمهی دیگر عمل میکنند
این قوانین تقریباً برای هر سنجهی عملکردی درست است. بنابراین، به عنوان مثال، نیمهی بالای نمونه، کار تعیین شده را در نصف زمانی که برای نیمهی دیگر طول میکشد، تمام میکنند؛ نیمهی پرنقص، مالک بیش از دو سوم نقصهای کشف شده خواهد بود؛ و به همین ترتیب.
نتایج مسابقات جدال برنامهنویسی هم همین خصوصیتها را داشت. برای نمونه، شکل ۲-۸ را که نشاندهندهی توزیع زمان لازم برای تکمیل اولین مرحله (کامپایل بدون خطا و آماده برای تست) در بازیهای یک سال است، در نظر بگیرید.
بهترین عملکرد ۲٫۱ برابر بهتر از میانگین بود. نیمهی بالایی ۱٫۹ برابر بهتر از نیمهی پایینی بود. نتایج مسابقات بعدی هم تقریباً همین بوده است.
عوامل نامؤثر در بهرهوری #
در تجزیه و تحلیل نتیجه بازی، متوجه شدیم عوامل زیر با عملکرد ارتباط کمی دارند یا بیارتباط هستند:
- زبان: آنهایی که با زبانهای قدیمی مثل COBOL و Fortran کدنویسی کردند، اساساً عملکردشان به همان خوبی کسانی بود که با زبانهای Pascal و C کد مینوشتند. پراکندگی در هر گروه زبان، شباهت به پراکندگی کلی عملکرد داشت. تنها استثناء در این مورد، زبان اسمبلی بود: مسابقهدهندگان با زبان اسمبلی، بهشدّت از سایر گروههای زبانی عقب ماندند. (البته افرادی که از زبان اسمبلی استفاده میکنند، عادت دارند عقب بمانند!)
- میزان سابقه: خروجی افرادی که ده سال تجربه داشتند، بهتر از افراد دارای دو سال تجربه نبود. هیچ ارتباطی بین تجربه و عملکرد وجود نداشت؛ به جز اینکه افرادی با کمتر از شش ماه تجربهی کار با زبان مورد استفاده در مسابقه، عملکردشان به خوبی دیگران نبود.
- تعداد نقصها: نزدیک به یک سوم از شرکتکنندگان، تمرینها را بدون نقص انجام دادند. بهعنوان یک گروه، کارکنانی که هیچ نقصی در کارشان نداشتند، هیچ هزینهی عملکردی برای کار دقیقتر پرداخت نکردند. (در حقیقت، بهطور متوسط حتی کمی کمتر از کسانی که یک یا چند نقص در کارشان داشتند، وقت صرف کردند.)
- دستمزد: سطح دستمزد بهطور گستردهای در بین نمونه متفاوت بود. بین دستمزد و عملکرد رابطهی بسیار ضعیفی وجود داشت. دستمزد نیمهی بالاتر از میانه، کمتر از ۱۰ درصد بیشتر از نیمهی پایین بود، امّا عملکرد آنها تقریباً ۲ برابر بود. پراکندگی عملکرد در هر سطح دستمزد، تقریبا برابر پراکندگی کل نمونه بود.
اینجا هم هیچچیز بسیار عجیبی وجود ندارد؛ بیشتر این موارد قبلاً ذکر شده است. چیزی که کمی باعث شگفتی بود، بعضی از فاکتورهایی بود که نتیجهی قابلتوجهی بر عملکرد داشتند.
ممکن است بخواهید اینها را از مدیرتان پنهان کنید #
در میان یافتههای ما، آنچه با عملکرد خوب، همبستگی مثبت داشت، این یافتهی نسبتاً غیرمنتظره بود: بسیار مهم بود چهکسی همتیمی شما باشد. اگر با کسی که عملکرد خوبی داشت همتیمی میشدید، شما هم خوب کار میکردید. اگر همتیمی شما کار را تا ابد طول میداد، شما هم کار را به اتمام نمیرساندید. به طور میانگین، عملکرد دو عضو تیم فقط ۲۱درصد تفاوت داشت.
حالا چرا این موضوع اینقدر مهم است؟ زیرا هرچند این دو نفر با هم کار نمیکردند، هر دو از یک سازمان بودند. (در بیشتر موارد، آنها تنها شرکتکنندگان از آن سازمان بودند). آنها در یک محیط فیزیکی مشترک و در یک فرهنگ سازمانی مشترک کار میکردند. این واقعیت که عملکردهای تقریباً یکسانی داشتند، اشاره دارد که توزیع تواناییهایی که در کل نمونه مشاهده میشود، قابل تعمیم به سازمان نیست: دو نفر از یک سازمان مشترک، به احتمال زیاد عملکرد مشابهی دارند. این بدان معناست که برنامهنویسان با بهترین عملکرد در بعضی سازمانها هستند و بدترینها در سازمانهای دیگر. این همان مفهومی است که هارلان میلز، یکی از پیشگامان مهندسی نرمافزار، در سال ۱۹۸۱ پیشبینی کرده بود:
همانطور که این تفاوت بهرهوری (۱۰ به ۱) بین برنامهنویسان قابل درک است، تفاوتی ده برابری نیز بین بهرهوری سازمانهای نرمافزاری وجود دارد.1
مطالعات ما نشان داد که اختلاف زیادی بین ۹۲ سازمان رقیب وجود دارد. درنمونهی بررسی شده، بهترین سازمان (همان سازمانی که نمایندگانش بهترین میانگین عملکرد را دارند) ده بار سریعتر از بدترین سازمان کار کرد. علاوه بر سرعتشان، همهی نمایندگان سریعترین سازمان، کدی را توسعه دادند که آزمون مقبولیت ما را با موفقیت پشت سر گذاشت.
این موضوع خیلی ناراحتکننده است. سالهاست که مدیران در مورد تفاوتهای فردی به نوعی تسلیم سرنوشت هستند. دلیلشان این است که این اختلافات ذاتی است و نمیتوان کاری در این مورد انجام داد. تقدیرگرایی در مورد دستهبندی سازمانها سختتر است. بعضی سازمانها خیلی بدتر از بقیه کار میکنند. مسئلهای در محیط و فرهنگ سازمانی آنها، باعث شکست در جذب و نگهداشت افراد خوب میشود یا باعث میشود حتی افراد خوب هم نتوانند اثربخش باشند.
تأثیرات محل کار #
واقعیت بیپرده این است که بسیاری از سازمانها، محیطی شلوغ، پرسروصدا و پر از وقفه برای کارکنان فراهم میکنند که روزهای آنها را با ناامیدی پر میکند. این موضوع به تنهایی بیان کننده کاهش کارایی و مهاجرت افراد خوب به جاهای دیگر است.
آزمایش این فرضیه که ویژگیهای محل کار ممکن است رابطهی معناداری با اثربخشی توسعهدهندگان داشته باشد، ساده است. تنها کاری که باید انجام دهید این است که تعدادی فعالیت مشخص، شبیه به مواردی که روزانه توسعهدهندگان انجام میدهند، تعریف کنید و چگونگی انجام آن در محیطهای متفاوت را مشاهده کنید.جدال برنامهنویسی دقیقاً با همین هدف تعریف شده بود.
برای جمعآوری برخی دادهها درمورد محل کار، ما از هر یک از شرکتکنندگان در مسابقات جدال برنامهنویسی خواستیم پیش از انجام فعالیتها به پرسشنامهای در مورد محل کار خود پاسخ دهند. برخی از ویژگیهای عینی را (مثل اندازهی فضای اختصاص دادهشده و ارتفاع دیوارهها) از آنها خواسته بودیم و سؤالاتی ذهنی مانند «آیا محل کارشما، حس قدردانی را به شما منتقل میکند؟» و «آیا محل کار شما سکوت قابل قبولی دارد؟» پرسیده بودیم و سپس پاسخهای آنها را با عملکردشان در تمرین، مرتبط کردیم.
یک راه آسان برای پیدا کردن روند، مقایسهی ویژگیهای محل کار افرادی است که در این مسابقات، خوب عمل کردهاند (براساس یک مؤلفهی ترکیبی عملکرد) و افرادی که خیلی خوب عمل نکردهاند. ما یکچهارم بالایی افراد برنده را با یکچهارم پایینی مقایسه کردیم. میانگین عملکرد افراد در یکچهارم بالایی، ۲٫۶ برابر بهتر از عملکرد افراد در یکچهارم پایین بود. همبستگی با عوامل محیطی در نمودار ۱-۸ خلاصه شده است.
عامل محیطی | افرادی که یک چهارم بالایی عملکرد هستند | افرادی که در یکچهارم پایینی عملکرد هستند |
---|---|---|
۱. چه مقدار فضای اختصاصی دارید؟ | ۷٫۲۵ متر مربع | ۴٫۲۵ متر مربع |
۲. آیا سکوت قابل قبولی دارد؟ | ۵۷٪ بله | ۲۹٪ بله |
۳. آیا حریم خصوصی قابل قبولی دارد؟ | ۶۲٪ بله | ۱۹٪ بله |
۴. میتوانید تلفن خود را بیصدا کنید؟ | ۵۲٪ بله | ۱۰٪ بله |
۵.میتوانید تماسهای خود را منتقل کنید؟ | ۷۶٪ بله | ۱۹٪ بله |
۶.آیا افراد، اغلب بیمورد در کار شما وقفه ایجاد میکنند؟ | ۳۸٪ بله | ۷۶٪ بله |
جدول ۱-۸. محیطهای بهترین و بدترین مسابقهدهندگان در جدال برنامهنویسی
یک چهارم بالا، همان کسانیکه تمرینات را با سرعت و کیفیت انجام دادند، در محیطی کار کردند که تفاوت اساسی با یک چهارم پایین دارد. شرکتکنندگان برتر، در محیطی ساکتتر، خصوصیتر، در برابر وقفه محافظت شدهتر و بزرگتر کار میکردند.
چهچیزی را ثابت کردیم؟ #
نتایجی که ارائه کردیم، ثابت نمیکند که محل کار بهتر، به افراد کمک میکند تا عملکرد بهتری داشته باشند. ممکن است فقط حاکی از این باشد افرادی که عملکرد بهتری دارند، جذب سازمانهایی میشوند که محل کار بهتری را فراهم میکنند. امّا آیا واقعاً مهم است که کدام یک درست است؟ در دراز مدت چه فرقی میکند که سکوت، فضا، و خلوت، به اینکه «کارکنان فعلی عملکرد بهتری داشته باشند» کمک میکند یا به «جذب و نگهداشت افراد با عملکرد بهتر»؟ در نهایت، با محل کار بهتر، کارکنانی با عملکرد بهتر خواهید داشت.
اگر چیزی را ثابت کرده باشیم، این است که قانون پیشفرض در مورد ویژگیهای محل کار، اشتباه است. اگر عضو تیمی هستید و یا تیمی را مدیریت میکنید که که نیاز دارند از فکرشان در طول زمان کار استفاده کنند، پس محیط کار به شما مربوط است. این کافی نیست که مشاهده کنید «اینجا هرگز بین ۹ تا ۵ کاری انجام نمیشود» و سپس توجه خود را به چیز دیگری معطوف کنید. این بیمعنیست که افراد نمیتوانند در ساعات کار معمول، کارهای خود را انجام دهند. وقت آن رسیده که برای این مسئله کاری کنیم.
H. D. Mills, Software Productivity (New York: Dorset House Publishing, 1988), p. 266. ↩︎