In the summer of 1997, NASA's Pathfinder spacecraft landed on the surface of Mars, and began transmitting incredible, iconic images back to Earth. But several days in, something went terribly wrong. The transmissions stopped. Pathfinder was, in effect, procrastinating: keeping itself fully occupied but failing to do its most important work.
در تابستان ۱۹۹۷، فضاپیمای راه یاب ناسا روی سطح ماه فرود آمد و شروع به فرستادن تصاویر خارق العاده ای از سطح ماه به زمین کرد. اما چند روز بعد، اتفاق بدی افتاد. مخابره عکسها متوقف شد راه یاب داشت کارش را به تعویق میانداخت: خودش را کاملا مشغول نگه داشته بود اما کار اصلی و مهمش را انجام نمیداد.
What was going on? There was a bug, it turned out, in its scheduler.
چه اتفاقی افتاده بود؟ متوجه شدند که اختلالی در برنامه اش وجود دارد،
Every operating system has something called the scheduler that tells the CPU how long to work on each task before switching, and what to switch to. Done right, computers move so fluidly between their various responsibilities, they give the illusion of doing everything simultaneously. But we all know what happens when things go wrong.
هر سیستم اجرایی دارای یک برنامهریز است که به CPU میگوید قبل از شروع وظیفه دیگر چقدر روی هر وظیفه کار کند و چه وظیفهای را شروع کند. اگر درست کارش را انجام بدهد، کامپیوتر به خوبی وظایف مختلفش را انجام میدهد، گویی همه کارهایش را همزمان انجام میدهد. ولی همه میدانیم چه پیش میآید اگر اشتباهی رخ دهد.
This should give us, if nothing else, some measure of consolation. Even computers get overwhelmed sometimes.
این باید به ما کمی تسلی دهد. حتی کامپیوتر ها هم گاهی در هم شکسته میشوند.
Maybe learning about the computer science of scheduling can give us some ideas about our own human struggles with time.
شاید یاد گرفتن علم کامپیوتر درباره برنامه ریزی، به ما نشان دهد که انسانها چگونه با زمان دست و پنجه نرم میکنند.
One of the first insights is that all the time you spend prioritizing your work is time you aren't spending doing it. For instance, let's say when you check your inbox, you scan all the messages, choosing which is the most important. Once you've dealt with that one, you repeat. Seems sensible, but there's a problem here.
اولین ایده میتواند این باشد که زمانی که شما برای برنامه ریزی میگذرانید زمانی است که آن کار را انجام نمیدهید. به طور مثال، وقتی ایمیل خود را چک میکنید، به همه پیامها نگاه میکنید، تا ببینید که کدام مهمتر است. کارتان که با آن پیام تمام شد، به سراغ بعدی میروید به نظر ملموس میآید اما اینجا مشکلی وجود دارد.
This is what's known as a quadratic-time algorithm. With an inbox that's twice as full, these passes will take twice as long and you'll need to do twice as many of them! This means four times the work.
این چیزی است که به نام الگوریتم درجه چهارم شناخته میشود. با صندوقی که دوبرابر پرتر از این باشد، این کارها دوبرابر زمان بیشتری میگیرد. و شما باید دوبرابر این کار را انجام دهید! یعنی ۴ برابر از شما زمان میگیرد.
The programmers of the operating system Linux encountered a similar problem in 2003. Linux would rank every single one of its tasks in order of importance, and sometimes spent more time ranking tasks than doing them. The programmers’ counterintuitive solution was to replace this full ranking with a limited number of priority “buckets.” The system was less precise about what to do next but more than made up for it by spending more time making progress.
برنامهریزان سیستم لینوکس با مشکلی مانند این در سال ۲۰۰۳ مواجه شدند. لینوکس بر اساس اهمیت وظایفش را رتبه بندی میکرد، و بعضی اوقات زمان بیشتری برای اولویت دادن به آنها صرف میکرد تا تمام کردن آنها. برنامه کاملا متفاوتی قرار بود که جای این اولویت بندی را بگیرد با گنجایش محدودی از اولویتها. سیستم در انتخاب کار بعدی دقت کمتری داشت اما برای پیشبرد آن با صرف زمان بیشتر از آنچه لازم داشت آمادهتر بود.
So with your emails, insisting on always doing the very most important thing first could lead to a meltdown. Waking up to an inbox three times fuller than normal could take nine times longer to clear. You’d be better off replying in chronological order, or even at random! Surprisingly, sometimes giving up on doing things in the perfect order may be the key to getting them done.
پس با داشتن ایمیلهایی که اصرار داریم همیشه مهمترینشان را بخوانیم، شاید به نتیجه نرسیم. مواجه شدن با ایمیلی سه برابر پرتر، می تواند ۹ برابر وقت مارا بیشتر بگیرد. بهتر است در ترتیبی بر اساس زمان رسیدن آنها یا حتی با ترتیب اتفاقی به آنها جواب دهید! در کمال ناباوری، بعضی اوقات انجام ندادن یک کار با ترتیب خوب میتواند کلید انجام دادن آن باشد.
Another insight that emerges from computer scheduling has to do with one of the most prevalent features of modern life: interruptions.
یکی دیگر از مثالهای برنامهریزی کامپیوتری یکی از شایعترین شکلهای زندگی مدرن است: وقفهاندازی.
When a computer goes from one task to another, it has to do what's called a context switch, bookmarking its place in one task, moving old data out of its memory and new data in. Each of these actions comes at a cost.
وقتی کامپیوتری از وظیفهای به وظیفه دیگر میرود، باید کاری به نام تعویض پیچیده انجام دهد، نشانه گذاری جایی که بوده در یک وظیفه، بیرون انداختن اطلاعات قدیمی و گرفتن اطلاعات جدید. هر کدام از این کارها هزینهای دارد.
The insight here is that there’s a fundamental tradeoff between productivity and responsiveness. Getting serious work done means minimizing context switches. But being responsive means reacting anytime something comes up. These two principles are fundamentally in tension.
در این جا یک سبک و سنگین کردن اساسی وجود دارد بین بهرهوری و پاسخگویی. انجام دادن کارهای جدی به معنای به کمترین حد رساندن تعویضهای پیچیده است. ولی پاسخگو بودن به معنای واکنش نشان دادن به هرکاری است که پیش می آید. این دو کاملاً با هم در تضادند.
Recognizing this tension allows us to decide where we want to strike that balance.
شناسایی این تضاد به ما اجازه میدهد تصمیم بگیریم کجا این تعادل را بشکنیم.
The obvious solution is to minimize interruptions. The less obvious one is to group them. If no notification or email requires a response more urgently than once an hour, say, then that’s exactly how often you should check them. No more.
راه حل واضح آن این است که وقفهها را به کمترین حد برسانیم. اما راهحل غیر واضحتر آن این است که آنها را دسته بندی کنیم. اگر هیچ پیغام یا ایمیلی نیاز به پاسخی مثلا ضروریتر از ساعتی یک بار ندارد، دقیقاً باید با این فاصله زمانی آنها را بررسی کنید. نه بیشتر.
In computer science, this idea goes by the name of interrupt coalescing. Rather than dealing with things as they come up – Oh, the mouse was moved? A key was pressed? More of that file downloaded? – the system groups these interruptions together based on how long they can afford to wait.
در علم کامپیوتر به این ایده به تعویق انداختن تلفیق میگویند. به جای سر و کار داشتن با مسائلی که پیش میآید -- اوه، موس تکون خورد؟ وای یه دکمه فشرده شد؟ بیشتر اون فایل دانلود شد؟ -- سیستم این وقفهها را با توجه به اینکه چقدر میتوانند صبر کنند تا به آنها رسیدگی شود دسته بندی میکند.
In 2013, interrupt coalescing triggered a massive improvement in laptop battery life. This is because deferring interruptions lets a system check everything at once, then quickly re-enter a low-power state.
در سال ۲۰۱۳، به تعویق انداختن تلفیقها باعث پیشرفت شگفت انگیزی در عمر باتری شد. چون متفاوت بودن وقفهها، به سیستم اجازه میدهد همه چیز را یک جا چک کند. و بعد به سرعت وارد حالت کم مصرف بشود.
As with computers, so it is with us. Perhaps adopting a similar approach might allow us users to reclaim our own attention, and give us back one of the things that feels so rare in modern life: rest.
مثل کامپیوترها، برای ما هم میتواند همین طور باشد. مطمئناً داشتن رویکردی مشابه با این میتواند به ما مصرف کنندهها اجازه بدهد تا توجه خود را باز بیابیم، و چیزی را به ما بازگرداند که در زندگی مدرن بسیار کمیاب است: آسایش.