2024년 6월 6일
생산성 극대화하기

사람에게 주어진 시간은 누구에게나 24시간으로 동일하다. 그 중 우리는 8시간 가까이 잠을 자기 위해 쓴다. 그렇다면 우리는 나머지 18시간을 최선을 다해 "잘" 써야 한다. 낭비하는 시간을 최소화하고, 주어진 시간을 최대화해야 한다. 이 글에서는 시간을 효율적으로 사용하기 위핸 첫 번째 방법으로, 개발의 '생산성'을 높이기 위한 팁들을 공유하고자 한다. 개발 할 때 생산성을 높이는 방법에는 프로그램, 단축키, 시스템 등이 있다.

1. 단축키

모든 프로그램은 단축키를 제공한다. 나는 보통 프로그램에 어느 정도 익숙해지면 단축키를 찾아보고, 유용하게 사용할 수 있는 단축키를 메모해서 사용는 편이다. 그러다보면 어느 순간 나도 모르게 단축키를 자연스럽게 쓰고 있다. 물론 단축키를 사용하지 않고도 충분히 프로그램 사용이 가능하다. 일일이 시간을 계산하면 크게 시간 차이가 나지 않는다. 하지만 이러한 작은 차이가 모여 큰 차이를 만들어낸다.

단축키에 익숙해진다는 것은 마치 내 손에 부스터를 다는 것과 같다고 생각한다. 단축키를 사용하면 사용하지 않을 때보다 다양한 방법을 시도해볼 수 있고, 짧은 시간에 더 많은 일을 할다. 단축키를 사용하지 않는다는 것은 마치 아이템전에서 아이템을 사용하지 않는 것과 같다.

나의 최종 목표는 마우스를 쓰지 않고 키보드만으로 개발을 할 수 있는 것이다.

아래는 맥북 기준으로 단축키를 설명한 글이다. 윈도우의 경우 command -> control, option -> alt로 바꿔서 사용하면 된다.

공통

대부분의 프로그램에서 기본적으로 제공하는 기능들이 있다. 이 단축키만 익혀도 새로운 프로그램을 사용할 때 상당히 편리하다.

자주 쓰는, 혹은 사용 이후 생산성이 많이 올라간 단축키/프로그램은 강조표시 하였다.

  1. command + p / command + k : 검색
    • 가끔, /로 검색을 하는 사이트도 있기는 하다.
  2. command + s : 저장
  3. command + z : 되돌리기
    • command + shift + z : 되돌리기 취소
  4. option + command + 좌/우 : 탭 이동
  5. command + \ : 좌우의 네비게이션 바 숨기기/보이기
  6. command + 숫자 : 숫자에 해당하는 탭으로 이동

공통 - 텍스트 에디터

  1. command + w : 탭 닫기
  2. option + 좌/우 : 단어 단위로 이동
  3. command + 좌/우 : 줄의 처음과 끝으로 이동
  4. command + 위/아래 : 파일의 처음과 끝으로 이동

VS Code

  1. option + 위/아래 : 해당 코드 이동
  2. shift + option + 위/아래 : 해당 코드를 위/아래로 복사하며 이동
  3. control + ` : 터미널 열기/닫기
  4. command + shift + ` : 터미널 새로 생성하기
  5. command + 숫자 : 화면 분할
  6. command + [/] : 해당 줄에 탭 추가/제거

Notion

  1. option + command + 19 : 제목13, TODO List 등 블록 변환

GitHub/GitLab

  1. . : 현재 레포지토리에서 vscode를 웹에서 연다.
  2. t : 파일 검색

2. 프로그램

1.  chatGPT (+ 프로그램)

chatGPT는 4.0 출시 이후 1년 넘게 Plus 구독하여 애용하고 있는 프로그램이다. 만나는 사람마다 chatGPT Plus를 꼭 구독하라고 할 정도로 적극 추천하고 싶은 프로그램이다. 한 달에 20달러로, 원화로 26,000원 정도 하는데 그 가격의 10배 이상의 가치는 뽑아 먹는 듯하다. 어떻게 질문하고 어떻게 chatGPT를 사용하느냐에 따라 사용 방법과 가능성은 무궁무진하다.

이번에 chatGPT의 MAC용 프로그램도 출시하여, option + 스페이스바로 전보다 훨씬 간편하게 질문할 수 있게 되었다. 브라우저를 열지 않고, 언제 어느 상황에서도 chatGPT에게 질문을 할 수 있게 된 것이다.

내가 주로 chatGPT를 활용하는 방법은 다음과 같다.

  1. 무언가 개발을 시작하기에 앞서, 계획을 세울 때

    무언가 개발하기에 앞서, 나는 노션 페이지를 만든다. 개발해야 할 기능의 스펙, 개발 스펙을 우선 작성한다. 그리고 내가 생각한 개발 방법이 있다면 해당 방법과 함께, 만약 없다면 위의 스펙들과 함께 chatGPT에게 물어본다. 이렇게 물어보면 보통 필요 이상으로 친절하게 방법을 알려준다. 이해가 안되거나, 더 나은 방법이 있다는 생각이 들면 이에 대해 GPT에게 반론을 한다. 생각지도 못한 솔루션을 chatGPT가 제공해준 적도 빈번하다. 이렇게 chatGPT는 나의 사수이자, 동료이자, 부사수가 되어준다.

  2. 고민이 있을 때, 걱정이 있을 때 등 상담이 필요할 때

    나는 무언가 고민이 있거나 걱정이 있을 때 보통 노션 개인 페이지에 기록하며 내 생각들을 정리하는 편이다. 보통은, 이렇게 기록하면 고민이나 걱정이 해결된다. 하지만, 해결되지 않는 경우에는 GPT에게 우선 물어본다. 그럼 GPT가 솔루션을 제공하거나, 나의 생각을 정리하는 데 도움을 준다. 그 누구보다 명확하고, 객관적이고, 빠르게 답변을 해주는 상담사 역할을 해준다. 고민 상담사가 될 수도, 심리 상담가가 될 수도, 진로 상담가가 될 수도 있다.

  3. 검색할 때

    요즘은 무언가 검색할 때 구글링보다 chatGPT를 이용하는 편이다. 내가 원하는 정보를 정확하고 빠르게 정리해서 알려준다. chatGPT 내용은 부정확할 때가 있다고 하지만, 구글링한 정보라고 정확하다고 할 수 있느냐 했을 때 아니라 생각한다. 구글링한 정보는 대부분 블로그인데, 이 글도 결국 개인이 작성한 글이고 정확하다고 할 수 없다.

  4. 단순 노동을 해야 할 때

    예를 들어 객체가 담긴 배열에서 특정한 값을 가진 객체만 뽑아 내고 싶을 때가 있다. 이러한 경우 chatGPT에게 물어보면, 누구보다 정확하게 답변을 해준다. 그 외에도 정말 많은 데이터에서 필요한 데이터만 뽑아낸다 던지, 번역을 한다던지 사용 방법은 무궁무진하다.

2. Karabiner-Elements

Karabiner-Elements는 맥북에서 키보드를 커스터마이징할 수 있는 프로그램이다. 나는 맥북에서 키보드 기준 왼쪽에 있는 한/영키를 우측 하단 command로 옮겨서 사용하고 있는데 매우 편하고, 속도도 더 빠르다.

3. Maccy

Maccy는 맥북에서 클립보드를 관리할 수 있는 프로그램이다.

4. Raycast

RayCast는 맥북에서 Alfred와 비슷한 프로그램이다. 나는 Alfred를 사용하지 않고 RayCast를 사용하는 편인데, RayCast는 Alfred보다 더 빠르고, 더 가볍다. 또한, RayCast는 플러그인을 만들기 쉽다.

나는 단축키를 설정하여, 프로그램을 빠르게 실행할 수 있도록 설정하였다. option + v는 vscode, option + c는 chrome, option + n은 Notion, option + g는 GitHub Desktop, option + f는 Figma를 실행할 수 있도록 설정하였다.

5. 올ㅋ사전

올ㅋ사전은 맥북 상단바에서 사전을 바로 실행할 수 있는 프로그램이다.

6. Rectangle

Rectangle은 맥북에서 창을 쉽게 정리할 수 있는 프로그램이다. 좌우로 창을 분리하거나, 왼쪽 모니터로 이동하거나, 창을 최대화하거나, 창을 숨기거나, 창을 닫거나 등을 할 수 있다.

3. 시스템

1. 타이머

나는 개발을 시작하기에 앞서, 아니 어떤 일을 시작하기에 앞서 왼쪽 손목에 찬 애플 워치로 타이머를 시작한다. 각 작업 단위를 스프린트로 진행하는 것이다. 속으로 암시한다. '이번 스프린트에는 여기까지 끝내겠어'. 보통 하나의 스프린트는 25분으로 끊는다. 이 작은 변화만으로도 정말 극도로 집중된 25분을 경험할 수 있을 것이다. 프로젝트의 마감일에 다가올 수록 집중이 잘 되는 원리를 이용한 것이다. 예를 들어 집중해서 하면 얼마 안걸릴 거 같은 단순 노가다라면, 5분으로 타이머를 시작한다. 이렇게 하면, 타이머를 시작하지 않았을 때는 언제 끝날지 모르는 이 노가다를 하기 싫어 천천히 하게 되는 본능이 있는데, '딱 5분만 하면 되네'라는 생각으로 집중해서 빠르게 끝내게 된다.

이러한 스프린트를 기록하고자 우테코 이전 기수가 만들었던 '25분 뾰묘도로' 사이트도 이용해보고, 노션에 기록해보기도 했는데, 아직 내 완전히 마음에 드는 방법을 찾지 못했다. 앞으로 이 스프린트에 대한 시스템을 더 발전시키고자 한다.

4. 다양한 기능들

1. Snippet

VS Code에는 Snippet이라는 기능을 제공한다.

이런 식으로, 내가 미리 만들어논 Snippet코드를 불러와서 사용할 수 있다. 자동 완성 기능을 직접 만드는 것이라 볼 수 있다. 엘리스에서 인턴십을 할 때, 사수님과 페어 프로그래밍을 할 때 Snippet을 이용하여 컴포넌트 템플릿을 1초만에 만드는 것을 보고 사수님이 깜짝 놀라시며 '이게 뭐에요?'라고 물으셨던 기억이 아직도 생생히 난다.

팀 프로젝트를 진행할 때도 Snippet을 활용할 수 있다. 엘리스에서 프로젝트를 진행할 때 Snippet 코드를 팀원들과 공유하고자 팀 노션 페이지에 Snippet 코드를 정리하였다. 팀원들도 이 Snippet 코드를 사용하면서, 팀원 전체의 생산성을 높일 수 있었다.