전체 글
-
디자인 시스템 사용 현황을 정량화한 이야기(feat: AST)디자인시스템 2026. 3. 11. 19:07
팀에 합류하자마자 이런 말을 들었다."기존 디자인 시스템이 잘 안 쓰이는 것 같아요. 새로 만들어야 할 것 같아요."그 말에 고개를 끄덕이면서도 속으로 의문이 들었다. '잘 안 쓰인다'는 게 정확히 어떤 의미인가? 얼마나 안 쓰이는 걸까? 어디서 안 쓰이는 걸까? 새로 만든다면 뭘 기준으로 만들어야 하는 걸까?느낌은 있는데, 근거가 없었다."잘 안 쓰인다"는 말을 어떻게 증명할 수 있을까?나는 sopt-makers 조직의 디자인 시스템 팀에 새로 합류했다.마침 팀은 기존 makers-design-system을 대체할 디자인 시스템 2.0 구축을 앞두고 있었다.문제는 방향 설정의 근거가 빈약하다는 것이었다.어떤 컴포넌트가 많이 쓰이고 있는지 모른다.어떤 컴포넌트는 있는데도 안 쓰고 직접 구현하는지 모른다...
-
Claude와 일할 때 놓치는 30분을 0분으로 만든 방법(Cluade Code와 Slack 연결)AI 2026. 2. 11. 16:45
서론"이쯤 끝났겠지?"Claude에게 작업을 맡기고 다른 일을 하다가 돌아올 때마다 하는 생각이에요.하지만 현실은 달랐죠. 창을 전환하면 권한 요청이 와있거나, 이미 작업이 끝난 지 한참 지난 경우가 대부분이었어요.1시간이면 끝날 작업이 1시간 30분, 심하면 2시간씩 걸렸죠.문제 상황Claude에게 작업을 요청하고 다른 작업을 진행하다 보면, 타이밍을 놓치는 일이 잦았어요."지금쯤 권한 요청이 왔을까?" "작업이 끝났을까?" 계속 창을 전환하며 확인하는 건 비효율적이었죠.그렇다고 Claude 창만 보고 있을 수는 없었어요. 멀티태스킹이 필수인 환경이었거든요.문제는 명확했어요:권한 요청을 놓치면 → Claude는 대기 상태 - 작업 완료를 늦게 확인하면 → 다음 단계 지연결과: 1시간 작업이 1.5~2시..
-
“이쯤에서 뛰자”를 그만두게 만든 배틀그라운드 낙하산 시뮬레이션 서비스개발일기 2025. 12. 16. 11:57
배틀그라운드 낙하산 좌표 계산 서비스 개발기서비스:https://battle-ship-mu.vercel.app/ 감에 의존하던 플레이를, 계산 가능한 문제로 바꾸다 배틀그라운드에서 항상 낙하산이 늦었던 이유 친구들과 배틀그라운드를 하면 이상할 정도로 항상 같은 일이 반복됐다.게임 시작 후 “여기 가자!”라고 외치고 뛰었는데,막상 목표 지점에 도착해보면 이미 다른 팀이 총을 다 쓸어 담고 있었다. 우리는 늘 낙하산 도착이 늦었다.총도 제대로 줍지 못한 채 교전이 시작됐고, 결과는 대부분 허무한 죽음이었다.게임이 끝나면 자연스럽게 이런 말이 나왔다. “왜 항상 우리만 늦냐…?” ‘감’이 아니라 ‘계산’의 문제라는 걸 깨닫다 답을 찾기 위해 유튜브를 찾아봤다.프로게이머와 방송 스트리머들의 낙하산 영상을 ..
-
[FE] 그놈의 인터페이스 (토스 모의고사 1회 후기)React 2025. 11. 26. 19:49
토스 프론트엔드 모의고사 1회차 후기 개발을 하다 보면 한 번쯤은 이런 말을 듣는다. “인터페이스 설계를 잘해야 해요.”“효율적인 인터페이스가 중요합니다.”“결국 좋은 인터페이스가 유지보수를 좌우합니다.” 그렇다면 인터페이스가 대체 뭐길래 이렇게까지 강조되는 걸까?얼마 전 토스 프론트엔드 모의고사 1회차에 참여하면서, 이 질문이 머릿속을 떠나질 않았다.문제를 푸는 내내 선택의 순간마다 “인터페이스”라는 단어가 등장했고, 그때마다 혼란스러웠다. 인터페이스? 그게 정확히 뭔데? 우리는 흔히 TypeScript에서 interface를 정의할 때 이런 식으로 이해한다.interface Product { id: number; name: string; price: number;}어떤 객체의 shape(형태)..
-
자기소개서를 작성하는 나는 과연 나에 대해 잘 알고 있을까?개발일기 2025. 9. 21. 20:19
거울 앞에 선 기분요즘 매일 같이 자기소개서를 쓰고 있다. 매번 느끼는 거지만, 자기소개서는 단순한 글쓰기가 아니다.누군가에게 나를 설명하는 글을 쓰다 보면, 마치 낯선 사람 앞에 거울을 들이대고 “이게 나야”라고 말하는 기분이 든다.그런데 그 순간, 불현듯 이런 의문이 찾아온다. “나는 과연 나에 대해 잘 알고 있을까?”자기소개서가 어려운 이유자기소개서가 어려운 이유는 분명하다. 본질적으로 ‘남에게 보여주기 위한 글쓰기’ 이기 때문이다. 그러다 보니 진짜 나보다 ‘보여주고 싶은 나’를 더 고민하게 된다. 실패는 적절히 포장하고, 경험은 조금 더 화려하게 꾸민다.그러다 보면 헷갈린다. “지금 나는 나를 소개하고 있는 걸까, 아니면 누군가가 좋아할 법한 나를 연출하고 있는 걸까?”자기소개서는 그래서 늘 모..
-
[React] 늘어나는 props, 합성으로 해결해보자React 2025. 5. 4. 19:45
이번 우테코 미션은 바로 React Module 이다. 이 미션의 학습 목표는,모달을 만들고 npm에 배포해보는 것. 미션에서 얻어야 할 여러 경험이 있겠지만,그 중에서 나는 해결해야 할 문제를 아래와 같이 정의했다. 1. 사용자에게 모달 구조에 대한 자율성을 넘겨줄 수 있다.2. 사용자가 사용하기에 편리한 모달이어야 한다. 아래는 실제 미션 LMS 파일에 나와있는 예시이다. 생각해보자. 재사용에 용이한 모달 라이브러리를 만들어야 하는데, 저런 구조는 무조건 props가 늘어날 것 같다. 하지만 페어프로그래밍 특성 상, 일단 빠르게 구현해야했다. 초기 우리의 모달은 아래와 같은 인터페이스를 가졌다. export interface ModalProps extends PropsWithChild..
-
[JS] JavaScript 메서드를 설계 관점에서 파헤쳐보자.Javascript 2025. 4. 7. 21:29
Object.keys()는 되는데, 왜 obj.keys()는 안 되는 걸까? 우아한테크코스에서는 레벨이 끝날 때마다 레벨 인터뷰라는 시스템을 진행합니다.일종의 회고이자 모의 면접 같은 시간인데, 이 과정에서 시지프 코치가 제게 흥미로운 질문을 하나 던졌습니다.“조금 심화적인 질문일 수 있는데요. Object.keys()나 Object.create()는 바로 호출하는데, 왜 Array 관련 메서드는 Array.prototype.filter처럼 호출할까요? Object 메서드들은 static 메서드인 걸까요? JS의 설계 관점에서 생각해보면 좋을 것 같아요.”이 질문에 선뜻 대답하지 못했고, 저는 그 순간 JavaScript에 대한 깊은 이해가 부족하다는 걸 느꼈습니다. 그래서 이 글을 통해 그 이유를 스..
-
[JS] 바닐라 js로 useState를 만들어 보자Javascript 2025. 3. 23. 21:00
우테코에서 한달이 조금 넘는 동안 미션을 쭉 진행해오면서, JS로 상태를 어떻게 관리해야할지 고민이 많았다.그러던 중, 자연스레 왜 요즘 FE 개발자들은 React를 채택했고,그 안에서 왜 React는 useState라는 훅을 만들어 상태를 관리하게 했을까 궁금해졌다. '내가 직접 구현해보면 이해할 수 있지 않을까?' 생각했고, 자료를 찾던 중 평소 즐겨 읽던 '황준일님의 블로그(글 맨 아래 출처)'를 보게 되었다. 공부해보며 정말 많은 공부가 되었던 것 같다. 기존 미션이었던 자동차 경주나, 로또 추첨기에서의 상태 관리는 다음과 같았다. constructor 안에 상태를 담아두고, get으로 꺼내오는 관리었다. 미션의 규모가 작기도 했고, 복잡한 상태 관리는 없었다. 그렇지만 과연 이러한 방식이 최선일..