들어가며
나는 생산성에 진심이다. 더 높은 생산성을 추구하고, 항상 ‘어떻게 하면 이 작업을 더 빨리할 수 있을까’,’더 효율적으로 할 수 있을까’ 고민을 하고, 실제로 실천을 하고는 한다. 집에가면서, 운동하면서, 퇴근하면서 ‘오늘 작업을 다시 한다면 어떻게 더 빨리할 수 있었을까?’, 집에 와서는 ‘오늘 가장 큰 병목이 뭐였고, 이 병목을 없애려면 어떻게 하면될까?’를 고민하고는 한다.
내가 생산성에 높은 가치를 두는 이유는 다음과 같다. 생산성이 높아지면 일을 더 빠르게 끝낼 수 있다(물론 퀄리티는 기본이다). 그럼 시간이 남고, 남는 시간 동안 생산성을 더 높일 여유가 생긴다. 그렇게 높아진 생산성으로 다음 일을 더 빠르게 해내면, 또 시간이 남는다. 선순환 구조인 것이다. 이 선순환은 신뢰로 이어진다. 회사/팀 내에서 신뢰가 쌓이고, 더 어려운 일을 맡게 된다. 생산성이 높아진 덕분에 어려운 일을 할 때도 조금 더 여유를 가지고, 학습도 하고 트러블 슈팅도 하며 차분하게 문제에 임할 수 있다. 더 많은 시도를 해볼 수도 있다. 그렇게 어려운 일도 해내며 성장한다.
나는 이 여유가 결국 내가 원하는 방향으로 일하게 만들어준다고 생각한다. 앞에서는 오로지 ‘일을 잘한다’는 관점에서만 이야기했지만, 생산성이 높아진 만큼 일을 빨리 끝내고 남는 시간에 휴식을 취할 수도 있다.
앞서 이야기한 ‘생산성을 높인다’는 건, 일을 하면서 느낀 불편한 점을 해소하는 것을 말한다. 이를 위해서는 불편함을 해소할 서비스를 찾아서 사용할 수도 있고, 혹은 직접 만들어 사용할 수 있다. 그리고 일을 하며 비효율적이라 느껴졌던 점을 하나씩 개선해보는 것이다. 이를 위해서는 일을 하며 느낀 불편한 점, 비효율적인 것, 병목 지점들을 잊지 않기 위해 기록해두는 것이 중요하다. 다 지나고 나면 잊혀지기 마련이니깐.
이번 글에서는 내가 생산성을 높이려고 직접 만든 서비스들과 애용하는 서비스를 소개하고자 한다.
내가 직접 만든 것들
집중
생산성의 기본은 집중이라 생각한다. 오로지 지금 하고 있는 것에 집중을 해야 그 시간에 몰입을 할 수가 있고, 이 때 내 최대의 효율이 나온다. 그래서 나는 이 ‘집중’을 굉장히 중요하게 생각한다.
Focus Timer
나는 뽀모도로 공부법을 애용한다. 뽀모도로 공부법이란, 25분 집중하고 5분 쉬며 짧지만 명확한 집중을 유지하는 공부법을 말한다. 뽀모도로 공부법을 실천하기 위해 정말 수도없이 많은 서비스를 이용해봤다. 수많은 뽀모도로 앱, 웹, 애플워치나 PC/휴대폰의 타이머로 직접 25분 > 5분 타이머를 맞춰서 해보기도 했다. 내 마음에 드는 서비스를 끝내 찾지 못했다. 그래서 직접 만들어보기로 했다. 내가 느끼는 온갖 불편함을 해결하는 올인원 서비스를.
기존에 내가 느끼던 불편함은 다음과 같다.
- 직접 25분 설정하는 것이 귀찮다. 자동으로 설정이 되면 좋겠다.
- 깜빡하고 집중 시작을 누르지 않고 업무를 할 때가 있다. 이럴 때 나에게 제발 누군가가 알려주면 좋겠다.
- 25분 집중을 하기에 앞서, 그 시간 동안 뭘 할지 목표를 설정할 수 있으면 좋겠다.
- 내가 설정한 목표들과 집중한 시간들을 통계로 일 단위로 볼 수 있으면 좋겠다.
- 내가 설정한 목표가 항상 최상단에 떠서, 이를 항상 볼 수 있으면 좋겠다.
그래서 만들었다, Focus Timer. Tauri와 React로, 항상 화면 위에 띄워두는 플로팅 데스크톱 앱이다.
이 글을 작성하는 지금도 쓰고 있다.

위와 같이 이번 뽀모도로에서 남은 집중 시간과 목표를 보여주는 것이 핵심 기능이고, 아래는 필요에 따라 추가로 만든 기능들이다.
매일매일 얼마나 집중했는지 통계도 볼 수 있다.
오늘 시간 단위로 무엇에 집중했는지도 볼 수 있다.
무엇을 하는 데에 시간을 썼는지도 볼 수 있다. 아직 정밀하게 분석해주지는 못하는 듯하다 😅
집중하기에 앞서 앞으로 25분 동안 무엇에 집중할지 작성할 수도 있다.
그리고, 집중 시작을 누르지 않은 채로 마우스를 움직이고 있으면 5초 간격으로 알림을 준다. 시작 버튼을 안 누르고는 못 배기게 하려고 일부러 짧은 주기로 알려주도록 설정했다. ‘집중을 시작할까요?’ 이 문구만 보면 안되던 집중력이 갑자기 생기기도 한다.
Focus Timer는 근래 내 몰입에 가장 큰 도움이 되는 서비스이다.
Tab Focus
활성화된 앱만 100% 선명도로 보여주고, 나머지 앱은 딤 처리(어둑하게) 하여 보여주는 서비스이다. 이와 유사한 서비스들이 앱스토어에 많다. 실제로 결제해서 써보기도 했다. 그런데 서비스를 이용하는 중 이런 불편함이 있는 것이다.
- 가장 상단에 플로팅되는 앱은 딤 처리가 안 된다.
그래서 직접 만들었다, Tab Focus.
‘고작 위 하나의 불편함 때문에?’라고 생각할 수 있지만, 특정 앱 포커싱이 핵심인 Tab Focus 앱이기도 하고, 상당히 거슬리는 부분이어서 꼭 해결을 하고 싶었다.
-
예시 화면

오른쪽 창 : 활성화된 화면
현재 작업하고 있는 창만 밝게 남다 보니, 이전보다 지금 하고 있는 일에 더 집중이 되는 걸 체감 중이다.
실수 방지
PR Checklist Extension
실수를 줄이는 가장 좋은 방법은 의지가 아니라 시스템을 만드는 것이다. 많은 시스템 중 나는 체크리스트를 가장 많이 애용한다. PR을 올릴 때에도 나만의 체크리스트가 있다. 이 체크리스트를 자동화하고 싶었다. 그래서 여러 방법을 시도해봤다. 전부 오래가지 못했다. 나만의 투두리스트에 PR을 올릴 때마다 매번 PR 체크리스트를 복사-붙여넣기해서 하나씩 체크했다. 처음에는 잘 되는 것 같았지만, 매번 복사-붙여넣기를 해야 한다는 번거로움이 상당히 컸다. 그 다음으로는 PR 본문에 나만의 체크리스트를 작성했는데, 나 혼자만 체크하기 위한 것들을 다른 사람들이 읽는 PR 본문에 작성하기에 적합하지 않기도 했고, 결국 복사-붙여넣기 해야 한다는 번거로움이 존재했다.
그래서 만들었다, PR Checklist Extension. 이는 사내에 공유하고자 스토어에도 출시도 되어있다.!
PR 페이지에 접속하면 우측 하단에 아래와 같은 UI가 나타난다. 나는 항상 처음에는 Draft 모드로 PR을 올리고, 직접 코드를 검토한 후 Ready for Review 상태로 변경하는 방식으로 일을 한다. 그래서 이런 일 방식을 활용해, 직접 설정한 체크리스트의 모든 항목을 체크하면 그 때가 되어서야 Ready for Review 버튼이 활성화되는 시스템을 만들었다.
실제로 체크리스트를 전부 체크하기 전까지는 PR 본문의 Ready for Review 버튼도 비활성화가 되어있다.
이렇게 내가 PR을 검토 요청하기 전에, 체크해야 할 것들을 체크해야 요청할 수 있도록 ‘강제화’를 해두었다. 체크리스트 항목은 옵션 페이지에서 설정할 수 있다.
처음에는 이런 체크리스트를 체크하는 것이 핵심 기능으로 시작했지만 점점 필요한 것들이 늘어나며 기능이 추가가 되었다. 그 중에서 가장 마음에 드는 건, ‘작업 카드 ID 누락 실수 방지’ 기능이다. 우리 팀은 작업을 노션으로 관리하며, 각 작업에 해당하는 PR과 연결을 해둔다. 이 때 필요한 것이, 노션 작업 카드의 ID를 PR 제목 앞에 작성을 하는 것이다. 그럼 자동으로 해당 PR과 작업 카드가 연결이 되어, 노션 작업 카드에서 해당 PR을 확인할 수 있게 된다.
이 방식이 중요한 이유는 분명하다. ‘작업을 추적하고 머지 누락을 방지하기 위해서’. 실제로 이와 관련한 실수를 한 적이 있다. 레포지토리 4개에서 코드를 수정한 작업이었다. QA 과정에서 1개의 레포지토리에 수정이 필요하다는 걸 알게되었고, 수정 후 PR 리뷰까지 마쳤다. 그런데 배포 과정에서, 많은 레포지토리를 정신없이 머지하며 해당 PR을 깜빡한 것이다. 이 사실을 뒤늦게 알게되었고, 기획팀과 개발팀에 공유 후 배포를 추가로 해서 해결하고는 했었다.
배포를 누락했다는, 상용에 영향을 미치기에 영향력이 작지 않은 실수라 생각했다. 작업 카드에서 작업한 PR들이 추적된다면 발생하지 않을 실수였던 것이다. 사람이 실수를 할 수 있는 부분은 PR에 작업 카드 ID를 누락하는 부분이라 판단했고, 이를 방지할 기능을 확장 프로그램에 추가했다. 기능은 단순하다. main 브랜치를 target으로 하고 있는 PR인데, PR 제목에 [DB-123] 등의 작업 ID가 없다면 경고창을 띄우는 것이다. 이 확장 프로그램을 사용한 이후로 PR제목을 놓치는 경우는 단 한 번도 없었다. 그리고 내 실수와 확장 프로그램을 사내에 공유해서 전파하고는 했다.
물론 위 해결책 외에도 다른 방법들도 존재했다. AI를 이용해서 PR을 업로드한다면, /pr 스킬에 프롬프팅을 해두면 되는 것이다. “PR 올릴 때 작업 카드가 누락되면 올리지마”같은 식으로 말이다. 하지만 이 방식에도 실수가 존재할 가능성이 충분히 존재한다. AI는 비결정론이기 때문이다. AI도 사람처럼 실수를 할 수 있다. 배포 누락은 중대한 실수이고, 이를 방지하기 위한 확실한 방법이 필요했기에 코드(확장 프로그램이라는)로 문제를 해결하는 결정론적인 방식을 택했다.
탐색
Pipeline Dashboard
내가 업무를 하면서 크롬의 ‘탭 고정’ 기능으로 항상 띄워놓을 정도로 유용하게 사용하고 있는 Next.js 웹 서비스이다. 우리 팀에서 관리 중인 프로젝트는 16개 정도 된다. 각각의 배포 파이프라인, 노션 페이지, 슬랙 채널, 레포지토리를 가지고 있다. 입사하고 나서 가장 헷갈리고 불편한 점 중 하나였다. 여러 프로젝트에서 작업을 하여 배포를 동시에 하는 경우가 종종 있다. 그러할 때에는 배포 파이프라인을 각 탭마다 띄어놓고, 상황을 주기적으로 지켜보고, 배포 승인을 직접 들어가서 누르고는 했다. 그 시간에는 이 배포 하나에만 온 신경을 써야 했던 것이다.
따라서 나는 이런 니즈가 필요했다.
-
배포 상태를 한 눈에 보고 싶다.
-
다른 프로젝트로 이동을 편하게 하고 싶다.
-
영어로 된 레포지토리 이름이 아니라, 한글 서비스명으로 찾고 싶다.
- e.g. 레포지토리명 : xxx-live-web → 서비스명 : OO 라이브
-
데모
이전에는 팀 노션 내 프로젝트에 들어가서, 해당하는 프로젝트를 찾아서, 파이프라인 URL을 눌러서 확인을 해야 했다면, 이제는 키보드 두 번과 마우스 한 번이면 가능하다. 크롬 여는 단축키, 탭 이동 단축키, 그리고 해당 프로젝트의 파이프라인 링크 클릭.
더 나아가, AWS CodePipeline의 상태를 20초 간격으로 조회해서 배포 시작/어프루브(approve) 필요/배포 완료 상태를 푸시 알림으로 알려준다. 이 덕분에 매 번 AWS 파이프라인을 새로고침하며 계속 들여다보는 번거로움과 집중력 분산을 줄일 수 있게 되었다.
Usage Scope
AI 사용량을 추적하는 서비스이다. 이런 서비스도 앱스토어에 많은 것이다. 여러가지를 써봤지만, 아쉬운 점이 여전히 존재해서 직접 만들어 쓰고 있다.
내가 느낀 아쉬운 점들은 다음과 같다.
- 세션 사용량 / 주간 사용량을 나눠서 보고싶다.
- 색으로 임계치에 얼마나 도달했는지 알고 싶다.
- 일정 임계치에 도달하면 나에게 알림을 하고 싶다.
서비스는 다음과 같다. 이렇게 메뉴바에 항상 떠있다.
위 메뉴바를 누르면 창이 열리는데, 이 창에서는 메뉴바에서 세션 사용량만 보여줄 지, 주간 사용량만 보여줄 지 선택할 수 있다.
그리고 최근에 추가한 기능이 하나 더 있다!
내 맥북에 있는 스킬을 정리해서 보여주고, 각 스킬을 얼마나 사용하고 있는지도 함께 보여준다.
이 기능이 필요했던 이유는, 스킬이 추적이 안되는게 너무 아쉬웠다. 스킬을 이것저것 정말 많이 만든 거 같은데, 어느새 잊어버리는 거다. 스킬을 만든 기억이 나더라도 스킬명을 까먹는 경우도 종종 존재했다. 스킬을 관리할 필요성을 크게 느끼고 이 기능도 함께 만들었다. “호출순”으로 정렬해서 어떤 스킬을 내가 잘 호출하지 않는지, “추가순”으로 정렬해서 어떤 스킬을 최근에 추가했는지도 확인할 수 있다.
잡일 제거
Cookie Cleaner
정말 많은 쿠키 제거 확장 프로그램을 써봤다. 그런데, 어떤 확장 프로그램은 쿠키 제거 후 새로고침은 직접 해야 하고, 어떤 확장 프로그램은 아이콘을 누르고, 제거 버튼을 한 번 눌러야 제거가 되고, 어떤 확장 프로그램은 모든 웹사이트의 쿠키를 지우는 거다.
그래서 직접 만들었다, Cookie Cleaner. 기능은 단순하다. 아이콘을 누르면 해당 웹사이트의 쿠키가 비워지고 새로고침이 된다.
-
데모
이 앱은 하루에 평균적으로 2-3번, 많으면 5번까지 쓰는 거 같다.
OCR Capture
이전에 TextSniper라는 앱을 정말 유용하게 사용했다. 당시 무료 이벤트를 해서 개인 맥북에서 무료로 이용할 수 있었다. 그런데 회사 맥북에서는 돈을 내고 써야 하는 거다. 그래서 직접 만들었다, OCR Capture.
기능은 상당히 단순하다. Command + Shift + 6을 누르면 캡처 모드가 시작되고, 캡처를 하면 해당 이미지에 있는 글씨를 클립보드에 복사한다.
구현 방법은 맥의 내장 OCR(Vision 프레임워크)을 사용했다.
-
데모
이 앱은 하루에 평균 2-3번 정도 쓰는 거 같다. 없어도 사는 데에는 무방하지만, 있다가 없으면 정말 큰 불편함을 체감할 수 있을 것이다.
Sticky Notes
메모를 어디에 적을지 고민하는 시간이 아까웠다. 노션을 열자니 로딩이 있고, 슬랙 나에게 보내기는 나중에 찾기가 어렵고, 맥 기본 메모 앱은 창을 찾아 들어가야 한다. 정작 내가 원한 건 지금 보고 있는 화면 위에 바로 한 줄 적어두는 것이었음에도 말이다. 물론 맥북에는 기본적으로 “스티커” 앱을 제공한다. 이 앱은 내가 원하는 서비스인 ‘항상 떠있는 메모’에는 적합했지만 사용성 면에서 아쉬웠다. 상단 네비게이션 영역이 너무 좁아서 누르기가 어렵고, 메모를 한 곳에서 관리하기 어렵다는 점이었다.
내가 느끼던 불편함을 먼저 정리했다.
- 메모를 하려고 다른 앱으로 넘어가는 순간 하던 작업의 맥락이 끊긴다.
- 적어둔 메모가 창 뒤로 숨어서, 적어놓고도 안 보게 된다.
- 임시로 적은 메모가 계속 쌓여서 나중에 지우는 일이 또 일이 된다.
그래서 만들었다, Sticky Notes.
단축키를 누르면 새 메모가 떠서 작성을 할 수가 있다. 사이즈 조절, 메모 추가도 물론 가능하다.
또한 이러한 메모들을 한 곳에서 관리도 할 수 있다.
내가 애용하는 도구와 설정들
alias
-
c: Claude Code를 dangerously-skip-permissions 모드로 연다. -
ip: 내 ip를 보여준다.ip-copy: 내 ip를 복사한다.
-
o: Cursor와 GitKraken을 동시에 연다. -
md: merge-to-develop 스크립트를 실행한다.- merge-to-develop 스크립트는 develop 브랜치로 이동해 기존 브랜치를 머지하고, 다시 기존 브랜치로 이동하는 명령어이다. develop브랜치는 테섭 브랜치이기 때문에, 테섭에 바로 배포하는 스크립트라고 보면 된다.
-
r: npm run dev의 alias이다. -
pj: 우리 팀에서 관리 중인 16개의 레포지토리 중 선택해서 이동할 수 있다.
프로젝트를 선택한 이후에는 cd로 이동 뿐 아니라 IDE로 열기, 레포지토리로 이동하기 등 다양한 기능을 제공한다.
-
als: 내가 만든 alias 목록을 전부 볼 수 있다.fzf로 직접 선택해 실행할 수 있다.
Raycast
- Get TOTP : OTP를 클립보드에 복사 / 붙여넣기 할 수 있는 Raycast 익스텐션
- 내가 정말 유용하게 사용하고 있는 익스텐션이다.
- 이전에 OTP를 복사하기 위해서 거쳐야 하는 프로세스는 다음과 같았다.
- 휴대폰 잠금을 해제한다.
- Google Authenticator 등 OTP 앱을 연다.
- 원하는 서비스를 눌러 복사한다.
- 맥북에서 붙여넣기를 한다.
- 이는 애플 기기끼리 제공하는 유니버설 클립보드를 사용한 것이다.
- 지금은 Get TOTP 덕분에 Raycast에서 엔터 한 번이면 복사까지 끝난다. 1초도 채 걸리지 않는다.
- View 2FA Codes : 내 gmail / 문자로 전송된 코드를 즉시 확인할 수 있는 Raycast 익스텐션
- Snippets : 내가 미리 생성한 스니펫을 즉시 붙여넣을 수 있는 Raycast 내장 기능
- Create Note : 즉시 플로팅 노트를 만들 수 있는 Raycast 내장 기능(Raycast Notes)
Claude Code - Skills
/full-review: 아래 /convention-review와 /deep-review를 동시에 실행한다.- /convention-review : 현재 PR 내에서 우리팀 컨벤션에 위반되는 사항이 있는지 코드 리뷰
- /deep-review : 구조/설계, 정확성, 유지보수 등 다방면으로 깊게 코드리뷰
/pr: 현재까지의 작업 내용을 바탕으로 PR을 올려준다.- 이 때, 우리 팀의 브랜치 작업 방식에 따라 PR을 올린다.
- e.g. 만약 master 브랜치에서 작업을 했다면, 새로운 브랜치를 만든다.
- 이 때, 우리 팀의 브랜치 작업 방식에 따라 PR을 올린다.
- 만약 커밋을 아직 하지 않았다면 먼저 커밋을 수행한다.
- PR을 올리고 나서는
/full-review를 진행한다.
/commit: 커밋되지 않은 작업을 각 작업 단위로 커밋을 수행한다./polish: 첨부한 초안을 슬랙 컨벤션에 맞추어 정갈하게 다듬어준다.- 만약 슬랙 스레드 URL도 함께 첨부하면, 해당 스레드에 Draft로 글을 올려준다.
/update-project-file: 노션 프로젝트 문서에 맞게 프로젝트 관리 파일을 업데이트해준다.- 이 프로젝트 관리 파일은 pj스크립트와 Pipeline Dashboard에서 쓰인다.
/spec-build: 우리 팀 작업 방식에 맞게 작업을 진행한다.- 전달한 기획서와 슬랙 링크, 노션 링크를 바탕으로 PLAN.md 문서를 작성한다. 그리고 PLAN.md 문서의 스텝에 따라 작업을 수행한다. 각 작업을 마치고 작업물에 해당하는 기획서 페이지, 테스트 방법을 나에게 공유한다. ‘ㄱㄱ’라고 입력하면 커밋 후 다음 작업을 수행한다.
위 커맨드에서 가장 중요한 건 우리 팀 컨벤션과 내 작업 방식에 맞게 커맨드를 만들고, 교쳐나가야한다는 점이다. 그렇기에 내 /pr이 나에게는 유용하지만, 다른 회사 동료는 물론이고 내 옆자리 동료에게도 유용함보다는 불편함 혹은 생소함이 더 크게 다가올 수 있다.
최근에는 QA 루프 등을 포함한 하네스로 만들어 AI를 활용 중인데, 이는 다음 글에서 다뤄보도록 하겠다.
맺으며
내가 업무 생산성을 높이기 위해서 직접 만든 서비스와, 애용하는 서비스들을 소개했다. 나는 정말로 유용하게 사용하고 있다. 어떤 서비스는 없이 일하는 걸 상상하기 싫을 정도로 업무 방식을 바꿔놓았다. 나와 같은 불편함과 니즈를 느낀 사용자가 있을 것이라 생각하며, 여유가 되면 조만간 꼭 출시를 해보고 싶다.
다음 번에는 이런 업무 생산성을 높여주는 도구들을 활용해 어떤 방식으로 일을 하는지에 대해서 소개해보고 싶다.
아직 부족함이 많지만, 업무 생산성에는 진심인 한 주니어 개발자의 이야기가 누군가에게 도움이 되었기를.