나는 왜 항상 준비되지 않은 상태에서 시작했을까
·
카테고리 없음
돌이켜보면 내가 무언가를 시작할 때, 충분히 준비되어 있었던 적은 거의 없었다.크롤링을 무료 강의로 조금 배웠을 때는 무턱대고 크몽에 서비스를 올렸다. 돈을 받고 일을 맡을 만큼 잘한다고 생각했던 건 아니다.그런데 실제 의뢰가 들어오고 나니 어떻게든 결과물을 만들어야 했다.돈을 받았으니 모르는 건 찾아보고, 막히면 다시 공부하고, 이틀간 밤을 새기도 하면서 어떻게든 결과물을 전달했다.컴퓨터 동아리에 들어간 뒤에는 파이썬 초보자 세션 강의까지 맡았다.누군가를 가르칠 만큼 내가 잘 알고 있는지 확신은 없었다.그래도 맡고 나니 어설프게 알고 있던 내용들을 다시 공부하게 됐고, 내가 설명하지 못하는 부분이 곧 내가 제대로 모르고 있던 부분이라는 것도 알게 됐다.혼자 여행조차 해본 적이 없으면서 한 달 동안 남미..
[TypeScript] 인덱스 접근 타입
·
프론트엔드/Language
들어가며 별것도 아닌 문법 하나에 꽤 오랫동안 붙잡혀 있었다.ViewportParkingLotDetailResponse['dailyOperations'][number] 처음에는 dailyOperations가 배열이라는 것까지는 이해했다. 그런데 뒤에 붙은 [number]가 왜 배열 안 객체 하나의 타입이 되는지는 쉽게 납득되지 않았다.number는 내가 알고 있던 숫자 타입인데, 여기서는 실제 숫자 값일까? 배열의 인덱스일까? 아니면 다른 의미가 있을까?알고 보니 이 문법은 JavaScript에서 실제 값을 꺼내는 인덱싱이 아니라, TypeScript에서 이미 정의된 타입의 프로퍼티 타입과 배열 원소 타입을 가져오는 문법이었다.별것 아닌 문법처럼 보였지만, 알고 있던 JavaScript 인덱싱과 Type..
[주차의 민족] SDD로 진행해본 MVP개발
·
프로젝트/주차의 민족
우리 팀의 2주 차 목표는 명확했다.AI를 적극적으로 활용해 MVP를 빠르게 만들고, 우리가 세운 가설을 실제 사용자에게 검증해 보는 것이었다.마침 레벨 3 마지막 주 테코톡 발표가 내 차례였다. 어떤 주제를 이야기할지 고민하다가 SDD, 즉 스펙 주도 개발을 선택했다.AI를 활용한 개발이 자연스러워진 지금, 개발자가 무엇을 준비해야 AI가 제대로 일할 수 있는지 이야기해보고 싶었다.다만 마음에 걸리는 점이 하나 있었다. 실제로 적용해보지도 않은 개발 방식을 발표하는 건 어딘가 껄끄러웠다.문서에서 읽은 내용을 정리하는 것과 직접 부딪혀본 경험을 이야기하는 것은 다르기 때문이다.그래서 이번 MVP 개발에 SDD를 직접 적용해보기로 했다. 내가 해온 AI 코딩의 문제 내가 처음 AI에게 코드를 맡긴 것은 우..
[주차의 민족] 프론트엔드 개발환경 세팅
·
프로젝트/주차의 민족
우테코의 꽃, 팀 프로젝트가 시작되었다.내가 합류한 팀 프로젝트의 이름은 ‘주차의 민족’이다.플젝에 관한 글은 추후에 자세히 다룰 예정이다. 첫 주에 맡은 과업은 프론트엔드 개발 환경을 세팅하는 일이었다.React와 TypeScript를 설치하고, 실행 명령어 몇 개를 추가하면 끝나는 일이라고 생각했다.그런데 제약 사항으로 Vite나 Next.js를 사용할 수 없었고, Webpack 기반으로 환경 세팅을 해야 했다. 그리고 이 개발 환경 세팅에 대해서 새로 합류한 팀원에게 보여줄 수 있는 기술 요구사항 문서를 작성해야 한다.단순히 내 컴퓨터에서 화면을 띄우는 것만으로는 부족했다.새로운 팀원이 프로젝트를 내려받아 같은 버전의 패키지를 설치하고, 같은 명령으로 개발 서버를 실행하고, 같은 기준으로 코드를 검..
[TypeScript] 타입 확장
·
프론트엔드/Language
우테코는 정말 이상적인 환경이다.때와 장소를 가리지 않고 누군가가 개발에 대한 대화거리를 던지면 2명이서 시작한 대화에서 점점 거대한 토론의 장이 펼쳐진다.레벨 3을 시작하고 나서 다들 본인 아이디어 검증과 팀빌딩 때문에 코드를 안친 지 오래된 상태였다.그러다 팀빌딩이 어느정도 마무리된 이번 주 금요일, 어김없이 작은 강의실에서 프론트엔드 크루들이 타입스크립트의 타입 확장에 대해 이야기를 나누고 있었다.무슨 대화를 하고 있었을까? `interface A extends B`라면 B는 A의 부모집합이어야 한다.여기서 부모집합은 속성 기준이 아니라 값 기준으로 판단해야 한다.그런데 다음과 같은 상황이라면 어떻게 해야 할까.interface A { age: number; // ... 그 외 수많은 속성} A..
[회고] 레벨 3 시작 - 두 개의 프로토타입을 만들며 배운 가설 검증
·
회고
들어가며 레벨 2가 끝나고 2주간의 방학도 순식간에 지나갔다.그래도 이번 방학은 나름 알차게 보낸 것 같다.TanStack Query 써보기레벨 2 미션에 컴포넌트 합성 적용해보기레벨 2 미션에 합성 컴포넌트 패턴 적용해보기fe-sprint 챌린지완벽하게 내 것으로 만들지는 못했다. 그래도 레벨 2에서는 무섭게만 느껴져 시도하지 못했던 것들을 직접 사용해봤다.한 번이라도 부딪혀보니 막연한 두려움이 줄었다.스스로의 허들을 낮췄다는 점에서 좋은 학습이었다. 그렇게 레벨 3에 들어왔다.드디어 팀 프로젝트를 시작한다고 생각했는데, 웬걸 바로 팀을 정하는 것이 아니었다.약 3주 동안 각자 자신의 아이디어로 프로토타입을 만들고, 가설을 세우고, 실제 사용자를 모아 검증해야 했다.이후 검증한 아이디어를 바탕으로 팀을..