왜 우리는 항상 바쁜데 프로젝트는 느릴까? (JavaScript로 생각해보기)

김민찬·2026년 3월 7일

기타

목록 보기
13/14
post-thumbnail

개발은 컨텍스트 스위칭의 연속

개발을 하다 보면 이런 상황을 자주 겪는다.

  1. 작업 A를 진행하다가 버그가 생겨서 멈추고
  2. 버그를 수정하다가 다시 요청이 들어와 또 멈춘다
  3. 결국 여러 일을 동시에 건드리게 되고, 어느 것 하나 제대로 끝나지 않은 상태가 된다

이 과정이 반복된다.

이렇게 일하면 항상 바쁘다.
하지만 이상하게도 프로젝트는 잘 진행되지 않는다.

우리는 JS보다 효율적으로 일하는가?

많은 팀이 일을 이벤트가 발생하면 바로 처리하는 방식으로 한다.

문제가 생기면 바로 대응하고 요청이 들어오면 바로 처리한다.
겉으로 보기에는 굉장히 빠르게 움직이는 것처럼 보인다.

하지만 이 방식에는 문제가 있다.

  1. 작업 흐름이 계속 끊긴다
  2. 컨텍스트 스위칭이 많아진다
  3. 프로젝트 전체 진행 상황이 보이지 않는다

결국 팀은 항상 바쁘지만 전체적인 진도는 느려진다. 프로젝트 전체 진행도 자꾸 미궁속으로 빠지게 된다.


여기서 JavaScript의 동작 방식을 떠올려보면 재미있는 점이 있다.
JavaScript도 기본적으로 싱글 스레드다. 한 번에 하나의 작업만 실행할 수 있다.
그래서 만약 JavaScript가 우리가 일하는 방식처럼 동작한다면, 프로그램은 이런 식으로 돌아갈 것이다.

작업 A 실행
↓
이벤트 발생
↓
작업 A 중단
↓
이벤트 처리
↓
다시 작업 A
↓
또 다른 이벤트 발생
↓
다시 작업 중단

만약 JavaScript가 정말 이렇게 동작했다면 웹 애플리케이션은 거의 사용할 수 없을 것이다.
그래서 JavaScript에는 Event LoopQueue라는 구조가 있다.

새로운 이벤트가 발생하면, 지금 실행 중인 작업을 계속 중단시키는 것이 아니라 Queue에 넣어둔다.
그리고 현재 작업이 끝나면 Queue에 있는 작업을 하나씩 처리한다.

이 구조 덕분에 프로그램의 흐름이 유지된다.

많은 개발팀이 JavaScript보다 비효율적으로 일한다.
우리는 새로운 일이 생길 때마다 지금 하던 일을 멈춘다.

하지만 JavaScript는 그렇지 않다. 새로운 일을 Queue에 넣는다.

답은 기록과 공유이다.

그래서 팀에서도 비슷한 방식을 만들 수 있다.
새로운 일이 생길 때마다 바로 처리하지 않고 기록해 두는 것이다.

예를 들면 프로젝트 README에 TODO를 남기는 식이다.

- [ ] 대시보드 > 실시간 위치 현황 (Front : 50%, Back : 25%) - 디자인 적용 필요, 백엔드 Excel API 03/08 오전에 완료예정

중요한 것은 도구가 아니라 흐름을 관리하는 방식이다.


JavaScript가 빠른 이유는 이벤트가 발생할 때마다 프로그램을 멈추지 않기 때문이다.
그리고 팀의 생산성도 같은 방식으로 바뀔 수 있다.

우리는 싱글 스레드로 일할 필요는 없다.

profile
두려움 없이

2개의 댓글

comment-user-thumbnail
2026년 4월 14일

유익한 글이네요

답글 달기
comment-user-thumbnail
2026년 4월 14일

시대가 놓친 인재의 글

답글 달기