[Tak, jak przeżywamy każdy dzień, tak przeżywamy życie. - Annie Dillard]
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.
Latem 1997 roku zbudowany przez NASA łazik Pathfinder wylądował na powierzchni Marsa i zaczął przesyłać na Ziemię niesamowite zdjęcia. Ale kilka dni później coś poszło nie tak. Sygnał radiowy zamilkł. Okazało się, że Pathfinder prokrastynował. Chociaż był cały czas zajęty, nie wykonywał najważniejszego zadania.
What was going on? There was a bug, it turned out, in its scheduler.
Co było nie tak? Okazało się, że w jego programie szeregującym znalazł się błąd.
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.
Każdy system operacyjny posiada tak zwany program szeregujący, który mówi procesorowi, jakim zadaniem ma się zajmować i jak długo. Jeśli wszystko gra, komputer płynnie przełącza zadania i można ulec złudzeniu, iż wszystko dzieje się jednocześnie. Jednak wszyscy wiemy, co się stanie, gdy coś pójdzie nie tak. Potraktujmy to jako swego rodzaju pocieszenie.
This should give us, if nothing else, some measure of consolation. Even computers get overwhelmed sometimes.
Nawet komputery są czasami przeciążone. Wiedza, jak komputery zarządzają zadaniami,
Maybe learning about the computer science of scheduling can give us some ideas about our own human struggles with time.
może nam, ludziom, pomóc zrozumieć własne zmagania z czasem. Po pierwsze, cały czas poświęcony na zaplanowanie pracy,
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.
to czas niewykorzystany na jej wykonanie. Na przykład, gdy sprawdzasz pocztę, przeglądasz wszystkie wiadomości i wybierasz najważniejszą. Gdy się z nią uporasz, powtarzasz czynność dla reszty. Wydaje się rozsądne, ale rodzi pewien problem. Chodzi o algorytm o kwadratowym rzędzie złożoności obliczeniowej.
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.
Posegregowanie dwukrotnie większej skrzynki wymaga dwukrotnie dłuższego czasu a do uporządkowania będzie dwukrotnie więcej wiadomości. Oznacza to czterokrotnie więcej pracy.
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.
Twórcy systemu operacyjnego Linux w 2003 roku natknęli się na podobny problem. Linux szeregował zadania zgodnie ze stopniem ważności i czasami poświęcał więcej czasu na szeregowanie niż wykonywanie. Programiści wymyślili, że zamiast szeregować zadania, lepiej wrzucać je do "kubełków" o różnych priorytetach. System nie wiedział dokładnie, jakim kolejnym zadaniem się zająć, mógł za to poświęcić więcej czasu na osiąganie postępów w pracy.
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.
Jeśli zawsze zaczynasz od szukania najważniejszej wiadomości to możesz doprowadzić do katastrofy. Uporządkowanie trzykrotnie większej liczby wiadomości może zająć dziewięciokrotnie więcej czasu. Lepiej odpisuj na wiadomości po kolei, a nawet losowo! Co zaskakujące, jeśli czasem zrezygnujesz z wykonywania zadań według ścisłego planu, zyskasz więcej czasu na ich realizację.
Another insight that emerges from computer scheduling has to do with one of the most prevalent features of modern life: interruptions.
Komputery mogą nam też pomóc radzić sobie z powszechnym obecnie problemem, którym są rozpraszacze uwagi.
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.
Gdy komputer przełącza się pomiędzy zadaniami, musi wykonać przełączenie kontekstu. Zachowuje stan procesora dla bieżącego zadania i przydziela procesorowi kolejne zadanie. Każde takie działanie pochłania zasoby.
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.
Komputer musi zachować kompromis pomiędzy wydajnością, a czasem reakcji. Wykonanie dużych zadań wymaga ograniczenia przełączeń kontekstu. Jednak krótki czas reakcji wymaga reagowania na wszystkie nowe dane. Oba te cele stoją ze sobą w sprzeczności.
Recognizing this tension allows us to decide where we want to strike that balance.
Rozpoznanie tej sprzeczności pozwala osiągnąć równowagę.
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.
Oczywiste rozwiązanie to zmniejszenie liczby przerwań. Mniej oczywiste, to pogrupowanie ich. Jeśli nie musisz reagować na powiadomienie lub wiadomość częściej niż raz na godzinę, sprawdzaj skrzynkę dokładnie co godzinę. Nie częściej.
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.
W informatyce takie postępowanie nazywa się wstrzymywaniem przerwań. Zamiast reagować na dane, gdy tylko się pojawią. Och, poruszono myszą? Naciśnięto klawisz? Pobrano kolejną porcję pliku? System operacyjny grupuje przerwania na podstawie tego, jak długo mogą poczekać.
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.
W 2013 roku wstrzymywanie przerwań znacząco wydłużyło żywotność baterii w laptopach. System wstrzymuje zadnia do momentu, w którym sprawdza wszystkie jednocześnie i wraca do stanu niskiego zużycia energii.
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.
Podobnie jak w przypadku komputerów, tak samo jest z nami. Być może stosowanie podobnego podejścia pozwoli nam, użytkownikom, odzyskać skupienie oraz upragniony odpoczynek.