본문 바로가기

분류 전체보기

(66)
왜 사람마다 생각의 양과 질에서 차이가 나는가? 사람들을 만나고 얘기하다 보면 드는 생각이 있다. 사람마다 생각의 양과 질의 관점에서 차이가 있다는 것이다. 이를테면 특정 현상을 보고 어떤 이는 A라는 것을 느낄 수 있지만, 어떤 이는 A를 아예 생각조차 할 수 없다. 그리고 특정 현상을 보고 어떤 이는 피상적인 생각을 떠올리고, 어떤 이는 구체적이고 깊은 생각을 할 수 있다. 이 격차는 사실 모든 차이를 결정한다. 직업의 차이, 봉급의 차이, 풍요로움의 차이, 의사결정의 차이, 현명함의 차이 등. 생각의 격차가 태어나면서 모두 결정되는 것은 당연히 아니다. 후천적으로 충분히 개발될 수 있는 영역이다. 이 글에서는 어떻게 생각의 격차가 발생하게 되는지 고찰해본다. 나는 21살에 내가 무시받는게 상당히 싫었다. 그때의 나는 (어리석을 수 있지만) 이미 ..
React CleanCode #2. UI Variation에 유연하게 대응하기 서언 안녕하세요. React CleanCode 2번째 시리즈로 찾아왔습니다. 저는 토스 공동구매 팀에서 약 1년간 커머스 제품을 운영해왔는데요. 제품이 디벨롭 되면서, 상품 컴포넌트는 더욱 복잡해지고, 많은 Variation 이 생겼어요. 그러면서 일명 스파게티 코드를 만들게 되었어요. 사용처에서 유연하게 사용이 어렵고, 장애 확률이 높고, 새로운 기능 추가가 어려웠어요. 이를 유지보수하기 쉬운 코드로 리팩터링한 경험을 공유하려고 해요. UI Variation에 고통 받고 계신 분들이 읽으면 도움이 될 것입니다. 목차 컴포넌트가 스파게티가 되어가는 과정 개선 방향성 개선 언제 사용하면 좋은가요? 마치며 부록 : Compound component pattern 인가요? 컴포넌트가 스파게티가 되어가는 과정 ..
2024-1 Self-integrity report 서언 이 글은 나라는 사람의 Integrity 를 점검하는 글이다. Integrity 는 “진실성” 이라는 의미로 번역된다. 즉, Self Integrity 라는 이름으로 내가 나에게 얼마나 진실한가? 얼마나 나다움을 실현하고 있는가? 에 대해 이야기해보려고 한다. 앞으로 주기적으로 작성해볼 것이다. 왜 작성하는지 먼저 짚고 넘어가보자. 이는 삶의 근본적인 부분을 주기적으로 고민하기 위함이다. 내가 의식하지 못 한 채 나이가 들어버리고, 과거를 후회하는 삶을 방어해주는 장치이다. 이것도 회고의 일종이지만, 단순히 일정 시간동안 잘한 점/아쉬운 점/개선할 점 을 분석하는 것이 아니다. 현재의 시간을 초월하여, 내가 현재 가진 직업과 생각, 모든 것을 초월하여, 근본부터 생각하고 나를 점검해가는 시간이다. ..
세상을 보는 창 "아는 만큼 보인다" 라는 격언이 있다. 같은 현상을 보더라도, 무엇을 / 얼마나 아느냐에 따라서 관점이 달라진다. 즉, 지식이 세상을 보는 창이다. 어떤 이는 과학으로, 어떤 이는 역사로, 어떤 이는 철학으로, 어떤 이는 사회학으로, 어떤 이는 경제학으로, 어떤 이는 경영으로 세상을 바라본다. 예시를 들어보자. 산업 혁명이라는 하나의 사건을 다양한 시각에서 바라볼 수 있다. 철학으로는 데카르트의 합리론, 법학으로는 특허법, 역사로는 인클로저 운동, 등을 가지고 바라볼 수 있다. 각 분야는 각기 다른 관점을 가지고, 다른 배울 점을 제공한다. 우리의 일상도 같다. 사람의 행동을 이해하려면 많은 도구가 필요하다. 이를테면 심리학에 대한 이해가 필요하다. 이 중에서도 자기방어, 열등감 등에 대한 심도있는 이..
토스에서의 1년을 돌아보며 서언 토스에서 Frontend Developer로 일한 지 1년이 지났다. 정말 밀도 높은 한 해를 보냈다. 매일을 살아가는 것도 중요하지만, 과거를 숙고하는 것이 기반이 되어야 한다. 내가 지금 어디에 있고 앞으로 어디로 가야 할지를 생각해야 한다. 이게 내 삶에서 자정 역할을 해왔다. 오늘도 잠깐 멈춰서서 1년을 돌아보고, 나아갈 길을 정의해볼 생각이다. 글 형식은 토스에서 인상 깊었던 요소를 써내려가며 느낀점을 쓰는 형식으로 해보겠다. 목적조직 토스는 목적조직 문화를 가진다. 목적조직은 직무와 상관없이 목표를 이루기 위해 팀원이 모이는 조직형태를 의미한다. 이게 토스에서 일하는 것이 즐거운 이유 중 하나라고 생각한다. 내가 토스에 합류한 이유이기도 하다. 그래서 대개 한팀에 직무 별로 1명씩 배치된..
ErrorBoundary 가 포착할 수 없는 에러와 그 이론적 원리 분석 서언 ErrorBoundary 는 하위 컴포넌트에서 발생하는 자바스크립트 에러를 잡아서 fallback UI를 보여주는 React 컴포넌트 입니다. 하지만 하위에 존재하는 컴포넌트에서 에러가 발생한다고 하여, 모든 에러를 잡아주는 것은 아닙니다. React 공식문서에는 다음과 같은 에러는 ErrorBoundary가 포착할 수 없다고 합니다. 과연 저것은 암기해야하는 것들일까요? 그렇지 않습니다. JavaScript 와 React를 잘 이해하고 있다면 당연한 현상입니다. 이 글에서는 에러바운더리가 특정 에러를 포착하지 못 하는 원리를 설명해보려고 합니다. 목차 [사전지식] 실행 컨텍스트와 예외처리 Case1. 이벤트 핸들러 Case2. 비동기적 코드 Case3. 서버 사이드 렌더링 Case4. 자식에서가 ..
나는 왜 개발자가 되었는가 프로그래머 저는 온전한 자기 의지로 프로그래밍을 시작했다고 생각합니다. 나라는 사람은 어떤 사람인지, 무엇을 좋아하는지, 무엇을 잘하는지, 수년간 고민한 결과로 내린 결론이기 때문입니다. 선한 영향력 지금의 시점에서 과거를 충분히 반추한 후 내린 결론입니다만, 저는 어릴 적부터 제가 가진 능력으로 남을 도와주는 것에서 아주 큰 보람을 느꼈습니다. 이는 어떠한 보상 없이도 스스로를 움직이게 하는 원동력이었습니다. 가령, 게임에서 퀘스트를 깨는 방법에 대한 블로그 글을 쓰기도 하고, 네이버 지식인에서 모르는 이들에게 답글을 달아주기도 하였습니다. 그리고 진로를 고민해봐야 할 나이가 되었을 때에는 정치인이 되리라 다짐했었습니다. 그 당시에는 공적인 일만이 사람들에게 선한 영향력을 줄 수 있는 일이라고 생각했기..
[공지사항] 프론트엔드 직무 관련 무료 멘토링 진행해요 Ver.2 2024.02.05 바빠져서 멘토링 쉬어갑니다. 안녕하세요. 이전에 아래와 같이, 멘토링을 하는 글을 썼는데요. https://happysisyphe.tistory.com/61 [공지사항] 프론트엔드 직무 관련 무료 멘토링 진행해요 23.06.01 업무가 바쁜 관계로 잠깐 중단합니다. 안녕하세요. 블로그 주인 행복한 시지프 라고 합니다. 멘토링 활동에 관심이 많이 생겨서, 일단 무료 멘토링을 진행해보려고 합니다. 부족한 점이 happysisyphe.tistory.com 1인당 한시간씩 열명 정도 멘토링을 진행했어요. 즐겁고 보람찬 시간이었습니다만, 사람들의 고민이 비슷하다는 생각이 들었어요. 똑같은 말을 되풀이 하게 되었을 때, 방식의 아쉬움을 많이 느꼈어요. 그래서 조금씩 흥미가 떨어지고, 바쁜 일이 ..
프론트엔드 개발자가 서버를 공부하는 이유 / 학습 방법에 관한 글 서언안녕하세요. 최근에 서버 개발 공부의 필요성을 많이 느껴서, 그 필요성을 공유하고, 서버 기술 스택 채택 과정과 학습 방법을 정리하고자 글을 씁니다. 오늘은 가벼운 마음으로, 가볍게 글을 씁니다. 서버를 공부하는 이유프론트엔드 엔지니어를 넘어서, 소프트웨어 엔지니어가 되기 위해서 소프트웨어 엔지니어가 되고 싶은 이유 나는 비즈니스 문제를 푸는 사람이 되고 싶다. 그러려면 시야를 넓혀야 한다. 문제를 프론트엔드 기술로만 푸는게 아니라, 서버/데이터/기획/디자인 무엇으로든 풀 수 있어야 한다. 그 관점에서, 먼저 프론트엔드 개발자에서 벗어나서 소프트웨어 엔지니어가 되어야 한다. DB 에 대한 이해가 없으니, 팀의 DB 설계 토론에 참여하지 못 하니, 비즈니스 적으로 적절한 제안을 할 수 없다. 그냥 팔로..
React CleanCode #1, 합성으로 관심사를 분리하기 서언 안녕하세요. React CleanCode 첫 번째 주제로 Composition(합성)을 다룹니다. 최근에 회사에서 많은 코드를 작성하면서 느끼는 것이 있었는데요. 바로 프론트엔드가 다루어야할 관심사가 너무나 많다는 것입니다. 크게는 UI 로직(단순 UI, 애니메이션 로직, 하드코딩적인 요소), 서버 로직(데이터 패칭, 업데이트 로직, 유저 인증인가 로직, 로딩처리, 에러처리), 로그 등 이 있습니다. React를 사용하며 이러한 관심사를 잘 분리하지 않는다면, 스파게티 코드가 된다는 것을 체감했습니다. 그러면 어떻게 관심사의 지옥에서 벗어날 수 있을까요? 즉 관심사를 어떻게 잘 분리해야 할까요? 관심사 분리는 보통 함수(클래스) 분리를 통해 이루어집니다. React에서 함수의 실체는 훅, 컴포넌트,..