در این فصل دربارهی اصل ۸۰/۲۰ میآموزیم. (نام دیگر آن اصل پارتو است) این اصل بیان میکند که ۸۰ درصد اثرات از ۲۰ درصد علل ناشی میشود.
دقت کنید که این مطلب ترجمهی خط به خط کتاب نیست و فقط قسمتهای مهم آن آورده شده است.
مثالهایی از این اصل: اکثر درآمدها را اقلیت مردم به دست میآورند، اکثر نوآوریها را اقلیت محققین به دست میآورند، اقلیت نویسندهها اکثریت کتابها را نوشتهاند و...
دو علت برای محبوبیت این اصل وجود دارد. اول، این اصل به شما اجازه میدهد که تا زمانی که بتوانید چیزهای پراهمیت را بفهمید، آرام و پربازده باشید. این چیزهای پراهمیت شامل ۲۰ درصد فعالیتها میشوند که منجر به ۸۰ درصد نتایج میشود. دوم، این اصل را میتوانیم در شرایط متنوعی مشاهده کنیم. به همین خاطر اعتبار قابل توجهی دارد.
در این شکل اصل پارتو با توزیع پارتو رسم شده است.
توزیع پارتو نتایج را در برابر علتها رسم میکند (محور y در برابر x) نتایج میتواند هر میزان از موفقیت یا شکست باشد مانند درآمد، بازدهی یا تعداد باگها در یک پروژهی نرمافزاری. علتها میتوانند هر موجودیتی باشند که این نتایج با آنها در ارتباط هستند مانند کارمندان، کسبوکار یا پروژههای نرمافزاری.
برای به دست آوردن منحنی پارتو، علتها را بر اساس نتایجی که تولید میکنند، مرتب میکنیم. برای مثال، شخص با بالاترین درآمد در ابتدای محور x ظاهر میشود و بعد از آن شخص با دومین-بیشترین درآمد.
شکل زیر اصل پارتو را در عمل و در یک پروژهی نرمافزاری خیالی نشان میدهد. اقلیت کد، مسئول اکثریت زمان اجرای برنامه است.
محور x نشان دهندهی تابعهای برنامه است که بر اساس زمان اجرا مرتب شدهاند. محور y نشان دهندهی زمان اجرای هر تابع است. ناحیهی رنگی، نشان میدهد که بیشتر کدها زمان کمی به زمان کلی اجرای برنامه اضافه میکنند و زمان اجرای برنامه بخاطر تعداد کمی از تابعها است. Juseph Juran، یکی از اولین کسانی که به اصل ۸۰/۲۰ پی برده است، مورد اول را vital few (کمهای حیاتی) و مورد دوم را trivial many (خیلیهای بیاهمیت) مینامد. صرف زمان زیاد برای بهینهسازی خیلیهای بیاهمیت، به سختی زمان اجرا را بهبود میبخشد. وجود اصل پارتو در پروژههای نرمافزاری با شواهد علمی پشتیبانی میشود (“Power Laws in Software” by Louridas,Spinellis, and Vlachos (2008))
شرکتهای بزرگ مانند Microsoft، IBM و Apple از اصل پارتو برای ساختن کامپیوترهای سریعتر و کاربرپسندتر استفاده میکنند؛ آنها تمرکز خود را بر روی کمهای حیاتی میگذارند؛ یعنی ۲۰ درصد کد را که بیشتر از همه کاربران آن را اجرا کردهاند، مدام بهینه میکنند. تمام کدها برابر ساخته نشدهاند. اقلیت کدها تاثیر خیلی زیادی روی تجربهی کاربری دارند، در حالی که اکثریت کدها تاثیر خیلی کمی دارند. ممکن است شما آیکون File Explorer را در روز چند بار دابل کلیک کنید اما به ندرت دسترسیهای یک فایل را تغییر دهید. اصل ۸۰/۲۰ میگوید که بهینهسازیهای خود را در کدام بخشها متمرکز کنید.
با تمرکز بر روی کمهای حیاتی تا خیلیهای بیاهمیت، میتوانید بهرهوری خود را ۱۰ برابر یا حتی ۱۰۰ برابر کنید.
شکل زیر نشان میدهد که در یک شرکت با ۱۰ کارمند، فقط ۲ کارمند ۸۰ درصد نتیجه را تولید میکنند. در حالی که ۸ کارمند دیگر ۲۰ درصد نتیجه را تولید میکنند. ۸۰ درصد را تقسیم بر ۲ کارمند میکنیم تا به میانگین ۴۰ درصد به ازای هر کارمند با عملکرد عالی در شرکت برسیم. اگر ۲۰ درصد نتیجه را تقسیم بر ۸ کنیم، به میانگین ۲.۵ درصد به ازای هر کارمند با عملکرد ضعیف در شرکت میرسیم. تفاوت عملکرد ۱۶ برابر است.
تفاوت ۱۶ برابری در میانگین عملکرد در واقع در میلیونها شرکت در سراسر جهان وجود دارد. همچنین توزیع پارتو فراکتال نیز است، یعنی ۲۰ درصد بالای ۲۰ درصد بالا، ۸۰ درصد ِ۸۰ درصد نتایج را تولید میکنند.
دلیل تفاوت در نتیجهها را نمیتوان هوش دانست؛ یک شخص نمیتواند ۱۰۰۰ برابر باهوشتر از شخص دیگری باشد. بلکه، تفاوت در نتایج، ناشی از تفاوتهای رفتاری افراد مختلف یک سازمان میباشد. اگر شما هم همان رفتارها را داشتید، به همان نتایج میرسیدید. اما قبل از اینکه رفتار خود را تغییر دهید، باید به طور شفاف بدانید که میخواهید به چه نتیجهای برسید؛ چون تحقیقها در هر معیاری که بتوانید تصور کنید، نابرابری شدیدی را در نتایج نشان میدهد.
درآمد: ۱۰ درصد مردم تقریبا ۵۰ درصد درآمد را در ایالات متحده به دست میآورند.
نابرابری در نتایج، یک پدیدهی اثبات شده در علوم اجتماعی است و اغلب با یک متریک به نام Gini coefficient اندازهگیری میشود.
چطور میتوانیم در سازمان خود، به سمت چپ منحنی توزیع پارتو حرکت کنیم ؟
فرض کنید میخواهیم درآمد را بهینهسازی کنیم. چطور میتوانیم به سمت چپ منحنی پارتو حرکت کنیم؟ عبارت معیارهای موفقیت را چنین تعریف میکنیم: اندازهگیری رفتارهایی که باعث میشوند در زمینهی شما به موفقیت بیشتر رسید. اصل ۸۰/۲۰ برای این معیارها نیز صادق است؛ بعضی معیارهای موفقیت تاثیر زیادی روی عملکرد در زمینهی شما دارند، بعضی اصلا اهمیتی ندارند.
برای مثال، وقتی من به عنوان یک محقق دکتری تحقیق میکردم، خیلی زود فهمیدم که موفقیت یعنی cite شدن توسط دیگر محققین. به عنوان یک محقق، هرچقدر citation های بیشتری داشته باشید، اعتبار، دیده شدن و موقعیتهای بیشتری نیز خواهید داشت. اما، افزایش تعداد citation ها به سختی یک معیار موفقیت عملی به حساب میآید که بتوانید روزانه آن را بهینه کنید. تعداد citation ها یک lagging indicator است چون بر اساس کارهایی است که شما در گذشته انجام دادید. مشکل lagging indicator این است که فقط عواقب کارهای گذشته را نشان میدهند. آنها به شما نمیگویند که روزانه چه کارهایی را انجام دهید تا به موفقیت برسید.
برای بهدست آوردن معیاری برای انجام اقدامات درست، مفهوم leading indicator معرفی شد. leading indicator یک معیار است که قبل از اینکه یک تغییر در lagging indicator رخ دهد، آن را پیشبینی میکند. leading indicator میتواند lagging indicator را بهبود ببخشد. به عنوان یک محقق، اگر مقالههای با کیفیت بیشتری تولید کنید (leading indicator) آنگاه citation های بیشتری دریافت خواهید کرد (lagging indicator) این یعنی نوشتن مقالههای با کیفیت، مهمترین فعالیت برای بیشتر دانشمندان است، نه فعالیتهایی مثل درس دادن یا آماده کردن ارائه. پس معیار موفقیت برای محققین، تولید بیشترین تعداد مقالههای با کیفیت است، همانطور که در این شکل آمده است.
برای رفتن به سمت چپ، باید امروز کلمات بیشتری بنویسید، مقالهی با کیفیت بعدیتان را هر چه زودتر منتشر کنید، citation های بیشتری دریافت کنید و دانشمند موفقتری شوید.
اصل ۸۰/۲۰ به شما اجازه میدهد که فعالیتهایی را که باید روی آنها متمرکز شوید، شناسایی کنید. انجام بیشتر معیارهای موفقیت، موفقیت حرفهای شما را نیز افزایش خواهد داد. زمان کمتری روی کارهای دیگر صرف کنید.
اصل ۸۰/۲۰ توضیح میدهد که چرا تمرکز قدرتمند است.
توزیع پارتو در شکل زیر، درصد پیشرفت حرکت به سمت بالای توزیع را نشان میدهد. آلیس پنجمین فرد سازنده در سازمان خود است. اگر بتواند یک نفر را در سازمان شکست دهد، تبدیل به چهارمین فرد سازنده در سازمان میشود و در آمد خود را ۱۰ درصد افزایش میدهد. یک قدم از این جلوتر برود، ۲۰ درصد دیگر میتواند به درآمد خود اضافه کند. در توزیع پارتو، پیشرفت در هر مرتبه به طور تصاعدی رشد میکند، پس حتی افزایش کوچک در سازندگی میتواند منجر به نتیجهی بزرگی در درآمد شود. افزایش سازندگی میتواند درآمد، خوشحالی و لذت بردن از کار را افزایش دهد. بعضیها از این پدیده به عنوان برنده صاحب همه چیز میشود (the winner takes all) یاد میکنند.
به همین خاطر اصلا به نفع شما نیست که تمرکز نداشته باشید؛ اگر تمرکز نداشته باشید، در بسیاری از توزیعهای پارتو حضور خواهید داشت.
شکل زیر را در نظر بگیرید. فرض کنید آلیس و باب هر کدام میتوانند روزانه ۳ واحد تلاش برای یادگیری صرف کنند. آلیس تمرکز خود را روی یک چیز میگذارد: برنامهنویسی. او تمام ۳ واحد خود را روی یادگیری کدنویسی صرف میکند. باب تمرکز خود را بین چند مورد پخش میکند: یک واحد زمانی برای بهبود تواناییهای شطرنج، یک واحد برای بهبود توانایی برنامهنویسی، یک واحد هم برای بهبود تواناییهای سیاسی. او در تمام این ۳ زمینه، به توانایی میانگین دست یافته است. اما توزیع پارتو، به طور نامتناسب به برترینها پاداش میدهد، پس آلیس پاداش بیشتری را دریافت میکند.
این پاداش نامتناسب در هر کدام از این سطحها نیز وجود دارد. برای مثال، باب تمام وقت خود را صرف خواندن سه کتاب عمومی میکند (فرض کنید اسم آنها مقدمهای بر پایتون، مقدمهای بر C++ و مقدمه ای بر جاوا است). در حالی که آلیس سه کتاب دربارهی درک عمیق ماشین لرنینگ با پایتون میخواند (فرض کنید اسم آنها مقدمهای بر پایتون، مقدمهای بر ماشین لرنینگ با پایتون و ماشین لرنینگ برای حرفهایها است) به عنوان نتیجه، آلیس تمرکز خود را روی تبدیل شدن به یک متخصص ماشین لرنینگ شدن گذاشته است و میتواند درخواست درآمد بیشتری بخاطر تواناییهای مخصوص خود بکند.
در برنامهنویسی به نسبت دیگر زمینهها، نتایج بسیار بیشتر به سمت بالا کج شدهاند. به جای ۸۰/۲۰، توزیع بیشتر شبیه به ۹۰/۱۰ یا ۹۵/۵ است. این جمله از بیل گیتس را در نظر بگیرید:
یک تراشکار حرفهای خواهان درآمد چند برابری به نسبت یک تراشکار متوسط است اما یک برنامهنویس عالی ۱۰۰۰۰ برابر یک برنامهنویس متوسط ارزش دارد.
منظور بیل گیتس این است که تفاوت بین یک برنامهنویس عالی و متوسط ۱۶ برابر نیست بلکه ۱۰۰۰۰ برابر است! در اینجا چند دلیل میخوانیم که چرا دنیای نرمافزار مستعد چنین توزیع پارتو است:
متاسفانه جملهی تبدیل به یک برنامهنویس عالی شوید یک معیار موفقیت نیست که بتوانید بهینه کنید؛ این مسئله چندبعدی است. یک برنامهنویس عالی کد را سریع میفهمد، الگوریتمها و ساختمانهای داده را میداند، تکنولوژیهای مختلف و نقاط قوت و ضعف آنها را میشناسد، میتواند با دیگر افراد همکاری کند، خلاق و خوشبرخورد است، دانش خود را بهروزرسانی میکند و... اما نمیتوانید استاد همهی این کارها باشید! اگر بر روی اقلیت حیاتی تمرکز نکنید، توسط خیلیهای بیاهمیت غرق خواهید شد. برای اینکه یک برنامهنویس عالی شوید، باید روی اقلیتهای حیاتی تمرکز کنید.
یکی از اقلیتهای حیاتی که باید بر روی آن تمرکز کنید، نوشتن تعداد خطوط بیشتر کد است. هر چه قدر کد بیشتری بنویسید، برنامهنویس بهتری خواهید شد.
با نوشتن کدهای زیاد، درک بهتری نسبت به کد پیدا میکنید و مانند یک برنامهنویس حرفهای صحبت و رفتار خواهید کرد، برنامهنویسهای بهتری را به دایرهی ارتباطات خود جذب و تسکهای برنامهنویسی چالشیتری را پیدا خواهید کرد.
یک فعالیت ۸۰/۲۰ که میتوانید هر روز آن را دنبال کنید: تعداد خط کدهایی که در روز مینویسید بشمارید و آن را بهینه کنید. این را تبدیل به یک بازی کنید طوری که هر روز حداقل به اندازهی میانگین روزانهی خود، کد بنویسید.
مثالهای زیادی از توزیع پارتو را در ریپازیتوریهای گیتهاب میتوانیم ببینیم. برای مثال بیایید TensorFlow را در نظر بگیریم. در این شکلها میتوانید هفت contributor در ریپازیتوری TensorFlow را ببینید.
کاربر tensorflow-gardener بیش از ۲۰ درصد از ۹۳۰۰۰ کامیت این ریپازیتوری را به خود اختصاص داده است. با توجه به این که هزاران contributor وجود دارند، این توزیع خیلی با توزیع ۸۰/۲۰ فاصله دارد. علت این است که کاربر tensorflow-gardener شامل تیمی از برنامهنویسهای گوگل است که این ریپازیتوری را ساختهاند. اگر این کاربر را کنار بگذاریم، افرادی که باقی میمانند برنامهنویسهای بسیار موفقی هستند. بسیاری از آنها در شرکتهای بزرگی موقعیتهای خوبی داشتهاند. اینکه قبل از اضافه کردن تعداد زیادی کامیت به این ریپازیتوری موفق بودند یا بعد از آن موفق شدهاند، صرفا یک بحث تئوری است. برای بحث عملی، این را در نظر بگیرید: باید عادت موفقیت خود را شروع کنید و هر روز کدهای بیشتری بنویسید. هیچ چیز شما را از تبدیل شدن به شماره دو در ریپازیتوری TensorFlow باز نمیدارد؛ روزانه دو یا سه کد با ارزش به این مخزن اضافه کنید و این کار را تا دو یا سه سال آینده ادامه دهید. اگر پافشاری کنید، میتوانید با یک عادت و چسبیدن به آن، جزء بهترین برنامهنویسهای جهان شوید.
اگر زوم کنید و فقط قسمتی از توزیع را بررسی کنید، میبینید که یک توزیع پارتوی دیگر وجود دارد! این تا موقعی صادق است که داده زیاد پراکنده نباشد (در این صورت خاصیت فراکتال خود را از دست میدهد) یک نقطه به تنهایی نمیتواند یک توزیع پارتو باشد.
توزیع پارتو کاربردهای عملی زیادی در زندگی و برنامهنویسی دارد و در ادامهی کتاب باز هم آن را بررسی خواهیم کرد. اما به تجربهی من، متحولکنندهترین کاربرد آن این است که تبدیل به یک متفکر ۸۰/۲۰ شوید؛ یعنی مدام راههایی را پیدا کنید که با خیلی کمتر، کارهای بیشتری انجام دهید. دقت کنید که اعداد پارتو ممکن است در زندگی شما متفاوت باشند (۷۰/۳۰ ، ۸۰/۲۰ یا ۹۰/۱۰) اما میتوانید از خاصیت فراکتال توزیعهای سازندگی، ارزشهایی را به دست بیاورید. برای مثال، همیشه درست است که تعدادی از برنامهنویسها از تعدادی دیگر، درآمد بیشتری دارند و از بین این برنامهنویسهای پردرآمد، بازهم کسانی وجود دارند که از بقیه درآمد بیشتری دارند. این روند تنها موقعی متوقف میشود که داده خیلی پراکنده شود.
درآمد: ۲۰ درصد از ۲۰ درصد برتر برنامهنویسها، ۸۰ درصد از ۸۰ درصد درآمد را کسب میکنند. به عبارت دیگر، ۴ درصد از برنامهنویسها ۶۴ درصد از درآمد را کسب میکنند. این یعنی شما هیچوقت در شرایط اقتصادی فعلی خود باقی نمیمانید، حتی اگر جز ۲۰ درصد برتر برنامهنویسها باشید. (این مقاله صرفا یکی از چند مقالهای است که خاصیت فراکتال توزیع درآمد را نشان میدهد)
پیشرفت: مهم نیست که کجای توزیع پارتو حضور دارید، میتوانید خروجی خود را با حرکت به سمت چپ به صورت نمایی افزایش دهید. این کار را با عادتهای موفقیت و قدرت تمرکز میتوانید انجام دهید. تا جایی که به حالت بهینه دست پیدا نکردهاید، جا برای پیشرفت وجود دارد تا با انجام کارهای کمی به چیزهای زیادی برسید؛ حتی اگر در حال حاضر نیز یک شخص، شرکت یا اقتصاد باشید که به خوبی گسترش یافته است.
فعالیتهایی که شما را به بالای منحنی پارتو منتقل میکنند همیشه واضح نیستند اما هیچوقت هم تصادفی نیستند. بسیاری از افراد در جستجو برای یافتن معیارهای موفقیت در زمینهی خود، تسلیم میشوند چون میگویند که طبیعت تصادفی نتایج، موفقیت را تصادفی میکند. چه نتیجهگیری اشتباهی! نمیتوان با نوشتن تعداد کد کم در روز تبدیل به یک برنامهنویس ارشد شد. فاکتورهای دیگری نیز تاثیر گذار هستند اما باز هم موفق شدن را تبدیل به یک بازی شانسی نمیکنند. با تمرکز بر روی معیارهای موفقیت در صنعت خود، میتوانید احتمالها را به نفع خود تغییر دهید.
این فصل را با بیان ۹ نکته برای استفاده از اصل پارتو به اتمام میرسانیم.
معیارهای موفقیت خود را پیدا کنید
ابتدا صنعت خود را تعریف کنید. ببینید موفقترین حرفهایهای صنعت شما چه کارهایی را خارقالعاده انجام میدهند و شما با انجام روزانهی چه کارهایی میتوانید به ۲۰ درصد برتر نزدیکتر شوید. اگر برنامهنویس هستید، ممکن است معیار موفقیت شما تعداد کدهایی باشید که روزانه مینویسید. این را تبدیل به یک بازی برای خود بکنید و مدام از خود عبور کنید. یک آستانهی حداقلی تعیین کنید و تا زمانی که در روز به این آستانه نرسیدهاید، روز را تمام نکنید.
اهداف بزرگ خود را در زندگی مشخص کنید
آنها را بنویسید. بدون داشتن اهداف بزرگی که به خوبی تعریف نشدهاند، نمیتوانید برای مدت طولانی به یک چیز بچسبید. دیدید که استراتژی ضروری برای حرکت در منحنی پارتو، این است که مدت زمان طولانیای در بازی باشید و در بازیهای کمتری شرکت کنید.
به دنبال راههایی باشید که چیزهای مشابه را با منابع کمتری به دست بیاورید
چطور میتوانید ۸۰ درصد نتایج را در ۲۰ درصد زمان به دست بیاورید؟ آیا میتوانید فعالیتهای باقیمانده را که ۸۰ درصد زمان را میگیرند اما منجر به ۲۰ درصد نتایج میشوند، حذف کنید؟ اگر نه، آیا میتوانید انجام آن را به کس دیگری بسپارید؟
به موفقیتهای خود فکر کنید
چه کارهایی انجام دادید که منجر به نتایج عالی شد؟ چطور میتوانید این کارها را بیشتر انجام دهید؟
به شکستهای خود فکر کنید
چطور میتوانید کارهایی را که منجر به شکست شد، کمتر انجام دهید؟
کتابهای بیشتری مربوط به صنعت خود مطالعه کنید
با خواندن کتاب های بیشتر، تجربهی عملی را بدون سرمایهگذاری هنگفت زمان و انرژی برای تجربه واقعی آن، شبیه سازی می کنید. از تجربههای دیگران استفاده میکنید. دربارهی روشهای جدید انجام دادن کارها یاد میگیرید. مهارتهای بیشتری در زمینهی خود کسب میکنید. یک برنامهنویس با سطح سواد بالا، میتواند یک مسئله را ۱۰ تا ۱۰۰ برابر سریعتر از یک تازهکار حل کند. خواندن کتاب در زمینهی خود میتواند یکی از معیارهای موفقیت در زمینهی خود باشد که میتواند شما را به موفقیت برساند.
بیشتر زمان خود را صرف بهبود و تنظیم محصولات موجود کنید
به جای ساخت محصولات جدید، محصولات موجود را بهبود و تنظیم کنید. این از توزیع پارتو میآید. اگر یک محصول در کسبوکار خود دارید، میتوانید تمام انرژی خود را صرف بالا بردن این محصول در توزیع پارتو کنید. با این کار نتایج نمایی را برای خود و شرکت حاصل میکنید. اما اگر بدون بهبود و تنظیم محصولات قدیمی، محصولات جدید تولید کنید، همیشه محصولات با کیفیت زیر میانگین خواهید داشت. فراموش نکنید: نتایج بزرگ در سمت چپ توزیع پارتو یافت میشوند.
لبخند بزنید
تعجب آور است که برخی از پیامدها چقدر ساده هستند. اگر یک شخص مثبت هستید، خیلی از چیزها آسانتر خواهند بود. افراد بیشتری با شما همکاری خواهند کرد. مثبت بودن، پشتیبانی و خوشحالی بیشتری را تجربه خواهید کرد. لبخند زدن یک فعالیت کلیدی است که هزینهی کم و تاثیر بسیار زیادی دارد.
کارهایی که از ارزش کم میکنند، انجام ندهید
این چیزها میتوانند شامل سیگار کشیدن، کم خوابیدن، غذای ناسالم خوردن و ... باشد. اگر کارهایی را که به شما آسیب میرسانند انجام ندهید، سالمتر، خوشحالتر و موفقتر خواهید بود.