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.
1997년 여름, 나사가 화성의 표면에 패스파인더 우주선을 착륙시켰고 놀라운 사진들을 지구로 전송하기 시작했습니다. 하지만 며칠 만에 무언가가 심각하게 잘못되었습니다. 사진 전송이 멈춘 겁니다. 패스파인더가 일을 지체시킨 겁니다. 다시 말해서, 가장 중요한 작업을 빼고 일을 한 겁니다.
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.
모든 운영 체제에는 스케줄러가 있어서 전환하기 전에, 각 작업을 처리하는데 얼마나 걸릴지, 혹은 무엇을 전환할지 중앙처리장치에 전달합니다. 이 작업이 제대로 처리되면, 컴퓨터는 매우 유동적으로 다양한 일을 합니다. 그것은 마치 모든 것이 동시에 작동하는 것 처럼 보이죠. 하지만 문제가 생기면 바로 알아챕니다.
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.
리눅스 운영 체제의 프로그래머들이 2003년에 비슷한 문제를 겪었습니다. 리눅스는 모든 일을 중요도에 따라 순서를 매겨놓았고, 가끔 일을 하는 시간보다 순서를 매기는 데에 더 많은 시간을 쏟기도 했습니다. 이에 프로그래머들이 내놓은 반 직관적인 해결책은 제한된 수의 우선순위 "바구니"였습니다. 이 시스템은 정확한 순서보다는 작업을 진행하는 데에 더 많은 시간을 쏟았습니다.
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.
이메일의 중요도만 가지고 우선순위를 따져서 일을 한다면 오류가 발생할 수도 있습니다. 평소보다 세 배 더 많은 수신함을 보는 것은 9배의 시간이 더 걸린다는 것이니까요. 시간 순서대로, 혹은 무작위로 답장하는 방법이 더 나을 수도 있습니다. 놀랍게도, 가끔 일을 완벽한 순서대로 처리하지 않는 것이 일을 끝낼 수 있는 열쇠가 되기도 합니다.
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.
컴퓨터 공학에서는 이를 인터럽트 병합이라 합니다. 이들이 오길 기다리는 것보다는 오, 마우스가 움직였군요? 키가 눌렸네요? 좀더 많은 파일이 다운로드 되었나요? 시스템은 대기 시간을 얼마나 쓸 수 있는지에 따라 인터럽트를 함께 묶습니다. 2013년, 인터럽트 병합이
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.
컴퓨터가 그렇듯이 우리도 마찬가지입니다. 비슷한 방법을 선택하면 우리 사용자들이 주의집중을 되돌려서 현대 생활에 아주 희귀한 것인 "휴식"을 가질 겁니다.