[회고] 우아한테크코스 8기 FE 레벨 2 회고
·
회고
레벨 2를 마치며 나는 주변 사람에게 관심이 많다.그렇다 보니 남의 눈치도 많이 보게 되고, 남들의 시선을 과하게 의식하기도 한다.우테코 와서 느낀 가장 큰 단점은 남과 나를 비교하는 점이었다.이미 들어올 때부터 내가 제일 뒤처지겠거니 생각하고 들어왔다. 막상 현실을 마주하고, 나보다 이미 잘하는 분들이 나보다 더 열정적으로 앞으로 치고 나가는 모습을 보고 자신감이 낮아졌었다.그래서 레벨 1 때 잘하는 크루들의 대화에 괜히 끼기가 어려웠다.어처구니없는 로우한 질문으로 흐름을 깰까봐, 나의 무지가 드러날까봐 쉽사리 끼지 못했다. 그러던 와중 연극조 크루들의 격려와 조언으로 의식적으로 더 끼고자 레벨 1을 마무리하면서 "매력적인 바보가 되자"는 선언을 했다.레벨 2는 그 선언을 실행하는 시간이었다. 그래..
[회고] NOAI 회고글 - 때로는 똥인지 된장인지 먹어봐야 안다.
·
회고
NOAI 챌린지가 뭔데 우테코 크루들끼리 만든 AI 사용 금지 모임이다.NOAI 선언문 왜 시작했나 시작은 시지프와 원온원에서였다.모르겠으면 AI 써버리고, 나중에 자기 합리화하고, 혼자서 해결하는 근육이 안 생긴다는 걸 알면서도 계속 그러고 있었다."이대로 프로 개발자가 될 수 있을까"라는 생각이 머릿속에 맴돌았다.한심하고 나약하다는 생각이 쌓여서 시지프에게 원온원을 신청했다. 시지프는 유혹이 심한 무언가를 단절하기 위해 벌칙 모임을 자주 쓴다고 했다.예를 들어 핸드폰을 덜 만지고 싶어서 만든 핸드폰 근절 모임에서는 하루 스크린타임 시간으로 인증을 하고, 정한 시간을 넘어간 사람은 범칙금을 내야 한다.혼자서 끊어낼 수 없다면, 외부 장치를 만들라는 조언을 해주셨다.그 말에 바로 시지프의 도움을 받아 ..
효율에 집착할수록 효율에서 멀어진다 - DMN으로 깨달은 진짜 휴식
·
etc
들어가며 나는 효율성을 엄청 강조하는 사람이다.밥을 먹을 때도, "어떻게 하면 밥 먹는 시간을 줄일 수 있을까?"캠퍼스에 올 때도, "버스 이동시간이 3시간인데 이 시간을 어떻게 활용할 수 있을까?"휴식을 할 때도, "어떻게 하면 효과적으로 피로도와 스트레스를 낮출 수 있을까?"그래서 요즘 우테코 생활을 하며 가장 관심이 많은 게 바로 휴식이다.깨어있을 때 최대 효율이 나와야 학습시간에 효과적으로 몰입할 수 있으니, 쉴 때 최대한 큰 효과를 보고 싶은 마음이 있다. 어른들이 어렸을 때부터 강조하시던 게 있다."티비 많이 보면 눈 나빠져.""잘 때 핸드폰 보지 마라.""일찍 자라." 성인이 되고 나서는 이런 잔소리를 해주는 사람이 없으니, 맨날 영상 보고 밤늦게까지 핸드폰 보다가 잠드는 일상에 익숙해졌다...
[회고] 레벨 2 중간 회고 - React, 도식화, 멘탈관리
·
회고
들어가며레벨 2 첫 미션인 '페이먼츠'가 끝난 후 많은 변화가 있었다.상승한 미션 난이도와, 원정대 그리고 미션이 머지되는 시기가 늦어지면서 마지막 step3을 할 시간이 다들 하루 정도밖에 없었다.급기야 밤을 새는 크루들도 생겼고, 테코톡까지 겹쳤던 안톨리니는 거의 좀비상태였다 ㅋㅋ...그래서 코치님들과 긴급 회의를 가졌고, 장바구니 미션부터는 개인 원정대로 엄청 부담을 줄여서 진행하도록 변경했다.아, 그리고 예전에 친구와 같이 만들었던 "틀딱 퀴즈" 를 리뉴얼했다.바닐라 js와 html, css로 개발한 프론트를 리액트로 구현했고, fastAPI로 구현했던 백엔드와 mySql로 연결했던 DB는 다 떼버렸다.추후에 supabase로 간단하게 백엔드를 구현해서, 관리자 페이지에 접근하면 문제 추가가 가능..
Toss Frontend Fundamentals 실전 적용 - 반환값 18개짜리 훅 해체하기
·
프론트엔드
실전에 적용해보기첫 실전 코드로 페이먼츠 미션의 `useCardRegisterForm`을 들고 갔다.import { useState } from "react"; import { getCardBrand } from "../utils/getCardBrand"; import { getCardNumberErrorMessage } from "../utils/getCardNumberErrorMessage"; import { getExpNumberErrorMessage } from "../utils/getExpNumberErrorMessage"; import { getCvcNumberErrorMessage } from "../utils/getCvcNumberErrorMessage"; import { g..
내 손으로 만든 Toss Frontend Fundamentals 코치
·
프론트엔드
기준이 없었다레벨2 들어가면서 코드리뷰가 달라졌다.레벨1은 "작동하냐"였다면, 레벨2부터는 "왜 이렇게 짰어"가 따라온다.처음엔 그 질문이 막막했다. 작동하는데 뭐가 문제야? 싶었다가, 피드백이 쌓이면서 알게 됐다.작동하는 코드와 읽히는 코드는 다르다. 페이먼츠 2단계 PR 리뷰에서 리뷰어인 루트가 한 줄 남겼다."동작하는 것에만 집중해 코드 퀄리티가 아쉽다." 틀린 말이 아니었다. Wrapper 네이밍이 너무 포괄적이었고, 어떤 `InputWrapper`는 `useInputGroup`을 쓰고 어떤 건 직접 관리하고 있었다. 왜 그랬냐고 물어보면 대답 못했을 것 같다. 기준 자체가 없었다.3단계에서는 루트가 다른 말을 했다. "추출이지 추상화가 아니다." 코드를 옮겼을 뿐, 왜 분리해야 하는지 이유가 없..