전체 글 91

모든 것이 가능한 시대, "Be Authentic"

최근에 영화를 다시 보았다. 핵심 어젠다는, “모든 가능성이 열린 세상에서 어떻게 살아갈 것인가”이다. 가능성 탐색을 좋아하는 나로서, 처음 보았을 때 매우 공감되었다. 다시 보니 AI 시대에 더욱 주목해야 할 영화라는 생각이 들었다. 주인공 조부 투파키는 수많은 가능성 속에서 길을 잃고 허무주의에 빠진다. 현대 사회에서 정보가 늘어남에 따라서, 이런 경향성은 더 심화했다. 인터넷의 보급으로, 스마트폰의 보급으로, LLM의 보급으로 정보의 접근성이 좋아졌다. 누구나 소프트웨어 개발을 할 수 있다고 한다. 누구나 디자인을 할 수 있다고 한다. 누구나 창업을 할 수 있다고 한다. 이때 우리는 무엇을 해야 할까? 가능의 세계가 무한대로 열렸을 때, 무엇을 선택해야 할까? 현대인은 조부 투파키의 감정에 공감할..

애자일(Agile)에 대한 찬가

나는 애자일이 너무 좋다. 내가 IT 업계에 남아있고 싶은 이유는 바로 애자일 때문이다. 애자일(Agile)은 보통 기민한 제품 개발 방법론을 칭한다. 나는 이것을 삶의 개념으로 확장하곤 했다. 이후에 김창준님의 함께 자라기 책을 읽었다. 그는 애자일을 단순히 제품 개발 방법론으로 보지 않고, 삶에 대한 자세와 사고방식 그 자체로 바라보았다. 불확실한 세계에서, 기민하게 대응해나가는 과정 자체를 애자일로 보았다. 나는 지금 애자일을 삶의 자세로 받아들이고 있다. 애자일을 이해하면, 삶의 많은 부분이 쉬워지기 때문이다. 그것은 바로 애자일의 본질이, 삶을 반영하고 있기 때문이라고 생각한다. 이제 내가 왜 애자일을 사랑하는지 5가지 이유로 적어보려고 한다. 1. 인생을 불확실하기 때문이다. 애자일의 전제는 ..

나의 인생 교과서 연대기

여러분들의 인생 교과서는 무엇인가요? 지금 당신에게 가장 많은 배움을 주는 책은 무엇인가요? 저에게는 “이기적 유전자” 입니다. 문득 제 인생의 교과서 이력을 돌아보았습니다. 한때는 “여덟단어” 였다가, “데미안” 이었다가, “인간의 굴레에서” 였다가, “시지프 신화” 였다가, “이기적 유전자” 까지 왔습니다. 학창 시절에 한 학기마다 교과서가 바뀌듯, 인생의 교과서가 바뀌는 것은 자연스럽다는 생각이 듭니다. 오히려 바뀌는 것이 참 의미 있다고 느껴지기도 합니다. 누군가 계속해서 중학교 1학년 교과서만 보고 있다면, 그것대로 경직된 인생일 것입니다. 이 이야기를 하는 이유는, 제가 말한 과거의 발언이 의심되었기 때문입니다. 제가 과거에 연애의 교과서라고 하며 즐겨 추천해 왔던 책이 “왜 나는 너를 사랑하..

철학이 아니라 철학함을 배워라

“철학이 아니라 철학함을 배워라” 칸트가 한 유명한 말이다. 여기에서 “철학”은 지식의 습득을 말하고, “철학함” 은 비판적으로 스스로 생각하는 태도를 말한다. 지식에 일방적으로 의존하는 학습자가 되는게 아니라, 자율적인 사유자가 되길 칸트는 바랐다. 철학은 알지만 철학함은 모르는 사람이 많다. 다른 말로 하면, 지식을 잘 알고 시험은 잘 치지만, 그것의 본질을 놓치는 경우가 많다. 애자일(Agile) 방법론은 알지만, 애자일의 본질을 놓치는 경우가 많다. 이는 외부적 지식을 내면화하지 못했기 때문이다. 나의 바깥에 있는 지식을 단지 하나의 지식으로 받아들일 뿐, 그 지식까지 온 과정을 보지 않거나, 비판적으로 수용하지 않거나, 내 삶과의 연결성을 고민하지 않기 때문이다. 예시를 들어보자. 르네 데카르트..

토스팀에서 배운 것 : 3. 성장의 핵심은 피드백이다.

토스에 입사하고 나서, 팀원들에게 어떤 회사에서 왔냐고 자주 질문 받았다. 나에게 첫 회사인데 말이다. 직급이 없으니 내가 말하지 않으면 내 연차를 몰랐다. 채용할 때부터, 그 일을 수행할 수 있는지가 중요할 뿐, 연차는 중요하지 않았다. 실제로 1년차와 10년차가 같은 일을 하기도 한다. 이처럼 토스는 역량 중심 회사이다. 토스 내에서 일반 사원 출신이 임원이 된 경우가 허다하다. 일반 PO 에서 계열사 CEO가 되거나, 일반 개발자에서 Head 가 되거나. 토스에서 자주 쓰이는 말 중 하나가, “역량에 따른 역할 확장”이다. 연차와 직급에 따른 역량 확장이 아니라, 역량이 핵심이다. 그 일을 할 역량이 있고, 그 일을 하고자 한다면, 기회를 쥐어주었다. 역량 중심 문화에 따라오는 키워드는 Feedba..

토스팀에서 배운 것 : 2. 토스의 성공은 8번의 실패에서 왔다.

토스가 대기업 사이에서도 두각을 드러내고 있는 이유는 가히 8번의 실패 때문이라고 말하고 싶다. 승건님의 8전 9기 이야기는 매우 유명하다. 창업에서 8번 실패하고, 9번 아이템이 토스였고 이때 드디어 많은 유저를 모을 수 있었다. 만약 토스가 첫 번째 창업 아이템이었다면, 토스가 지금까지 성공을 이어오지 못했을 것이라고 확신한다. 간편송금이라는 아이템 자체도 훌륭했지만, 사실 그 아이디어로 토스가 성공했다고 말할 수 없다. 곧바로 경쟁자가 달라붙었기 때문이다. 토스의 진짜 성공은, 단지 아이디어에서 온 것이 아니라, 계속된 경쟁 속에서 이겨나가고 있는 데서 온 것이다. 그렇다면 왜 8번의 실패가 지금의 토스를 만든 것인지, 토스의 3가지 문화로 이야기해 보려고 한다. 첫 번째는 수평적 문화이다. 승건님..

토스팀에서 배운 것 : 1. 나는 토스에서 주인의식을 배웠다.

나는 토스에서 주인이 되는 법을 배웠다. 신입 개발자로 입사해, 입사 두 달 만에 하나의 서비스를 온전히 혼자 개발하며 빠르게 성장할 수 있었다. 이는 토스가 주인의식을 강조하는 문화이기에 가능했다. 아마존의 제프 베조스는 "피자 두 판의 법칙"을 말했다. 한 팀은 피자 두 판을 배부르게 먹을 수 있을 정도의 인원이어야 한다는 것이다. 그 이상이 모이면 의사소통에 비효율이 생기고, 속도가 느려지며, 책임감이 약해진다는 의미다. 토스의 승건님도 유사한 문화를 지향한다. 토스에는 수백 개의 작은 스타트업이 있다고 말한다. 각 팀은 4~6명 정도로 구성되며, 하나의 서비스나 기능을 이 인원만으로 개발한다. 그 과정에서 모든 의사결정은 팀이 직접 내린다. 단순 산술로 보아도 한 명이 하나의 서비스에 약 20%를..

소년등과 부득호사(少年登科 不得好死)

3년 공부 끝에 공무원 시험에 합격한 친구에게 물어보았다. 1년 만에 시험에 합격했다면 어땠겠냐고. 친구는 스스로가 너무 꼴 보기 싫을 것이라고 말했다. 내가 나이를 먹어감에 따라 어느 정도 정설이라 믿게 된 고사성어가 있다. 바로 소년등과 부득호사(少年登科 不得好死)이다. 어릴 적 과거에 급제하면 결국 비참한 죽음을 맞이한다는 의미이다. 다소 의역하면, 조속한 성공은 불행을 낳는다는 것이다. 격언을 진리로 치부하길 꺼리지만, 이 격언은 굉장히 설득력 있게 느껴진다. 살아가면서 이 가설의 검정력을 올리는 귀납적 근거를 많이 발견했다. 왜 소년등과 하면, 부득호사 할까. 이 인과관계는 왜 일리 있을까. 여러 근거가 있을 것이다. 주변의 시기 질투를 받는다거나, 성숙도에 맞지 않는 지위를 누려 힘에 부친다거..

AI 시대, MVP 에 대한 생각

제가 개발을 처음 시작하고, 1달여 지났을 때 만든 사이트가 있습니다. 발표시간 계산기 라는 사이트입니다. 대본을 넣으면, 발표시간을 예측해주는 간단한 기능을 가졌습니다. 약 4년간 꾸준히 이용되며, DAU 1,000 가량을 기록하고 있어요. 저의 생애 첫 프로젝트 치고는 훌륭한 성과를 내고 있네요. 한 1년간 관심을 끄고 살다가, 오랜만에 구글에 발표시간 계산기를 검색해보니, 십수개의 카피캣이 생겼더군요. 당연히 유일무이한 기능은 아닌지라 그러려니 하지만, 어떤 사이트는 co.kr 도메인을 kr 로만 바꿔서 퍼블리시 하고, “도움이 되셨다면 간단한 사용후기를 남겨주시겠어요?” 라고 하는 피드백 요청 멘트까지 동일하더군요. 자동으로 카피 하는 bot 이 있는걸까 하는 생각까지 드네요. 저의 사이트가 그만..

우테코 코치 생활 #1, 부분을 통해 전체를 가르친다

특정 주제를 1시간만 가르쳐야 한다면, 무엇을 가르쳐야 할까. 다시 말해, 주어진 강의 시간 안에 모든 진도를 뺄 수 없다면, 무엇을 선택해서 가르쳐야 할까. 의 저자 파커 J. 파머는 “부분을 통해 전체를 가르치기”를 강조한다. 소프트웨어 개발을 가르친다고 해보자. 그 중 웹 개발을 배운다고 하면, 세부적으로 다룰 내용이 너무나 많다. HTML, CSS, JavaScript, 네트워크 통신, 서버 등. 최대한 빠르게 모든 내용을 다루는 것이 맞을까? 아니면 끝까지 완수하지 못 하더라도, 처음부터 내용을 다루고, 이후는 알아서 학습하도록 하는게 맞을까? 부분을 통해 전체를 가르친다는 사고를 적용해보자. 먼저 소프트웨어의 본질이 무엇인지 생각해보아야 한다. 소프트웨어는 코드를 활용해, 세상의 문제를 해결..

Education 2025.08.05

실행과 그릿에 대한 찬가

내가 경외감을 느끼는 부류의 사람이 있다. 바로 삶의 그릇이 큰 사람이다. 창업하고, 해외로 유학을 가고, 책을 출판하는 등, 새로운 도전을 하는 사람에게 그런 감정을 느꼈다. 그 이후로 그릇이 크다는 것이 대체 무엇인지 몇 개월간 생각해 왔다. 이제야 실마리가 잡혔다. 내가 내린 결론은 두 가지이다. 실행력과 그릿(Grit)이다. 풀어쓰자면, 일단 행동하고 그것을 끝까지 하는 사람이 그릇이 큰 사람이다. 이에 대해 몇 가지 오해한 바를 밝혀보겠다. 먼저 실행력에 대한 오해를 해체해 보자. 나는 어떤 일이든 사전에 계획하는 것을 좋아했다. 즉흥적인 상황에 놓이는 것보다 준비된 것을 할 때, 내가 빛을 발한다고 생각했다. 이게 틀렸다는 것은 아니지만, 나는 종종 그것을 핑계로 삼아, 실행보다는 준비만을 해..

React OOP #2, 접근제어와 전역상태

서문안녕하세요. React OOP 시리즈 2번째 글을 작성합니다. 이번 글은 OOP 에서 중요한 개념인 접근제어(access control)에 대해서 알아보고, 이를 기반으로 전역상태 관리 라이브러리의 인터페이스를 분석하고, 사용 방향을 제안하려고 합니다. OOP 에서 접근제어(access control)우리는 왜 설계를 잘 하려고 할까요? 설계를 하는 이유는, 변경을 관리하기 위해서 입니다. 한번 쓰고 없어질 프로젝트라면, 객체지향이니, 함수형이니, 신경쓰지 않고, 동작하는 코드를 짜면 그만이겠죠. 그러나 유지보수 비용을 낮추기 위해 설계가 필요하며, 그 중 대표적인 패러다임으로 객체지향 프로그래밍이 있습니다. OOP 에서 변경을 제어하는 대표적인 방법론이 접근 제어(access control) 입니다..

Tech/Clean Code 2025.03.16

[광활한 세상에서 방황하는 이들에게] 브런치북 발행

안녕하세요.행복한 시지프 입니다.10편의 글을 담아서, 브런치북을 발행했어요.자아를 찾아 방황하는 이들을 위해 썼습니다. 저의 지난 세월과, 철학을 녹여보았어요.삶의 고민을 진전시키는 데 도움이 될거에요.한번 읽어보시고, 감상을 남겨주시면 감사하겠습니다궁금한 점 댓글로 달아주시면 답변 드릴게요. https://brunch.co.kr/brunchbook/wardering-20s [브런치북] 광활한 세상에서 방황하는 이들에게29살에 대학을 졸업합니다. 그동안 경제학, 소프트웨어 공학, 교육, 철학 등 다양한 학문을 공부하고, 업무해왔어요. 치열하게 자아를 탐구해왔어요. 그 과정을 소개드리며, 방황하는 학생들에게brunch.co.kr

React OOP #1, setState props 지양하기

서언안녕하세요. React OOP(Object-Oriented Programming) 시리즈 1번째 글을 씁니다. React 에 객체지향 원칙을 적용하는 과정을 쓸 것입니다. 객체지향은 객체들간의 역할, 책임, 협력을 잘 명시하여 유지보수를 높이는 방법론입니다. React 에서 함수 컴포넌트도 객체이고, 여러 도메인 로직도 모두 객체일 것입니다. 객체지향 프로그래밍 원칙을 지키면서, 각각의 컴포넌트가 어떤 역할과 책임을 갖고, 상호간에 어떻게 상호작용 할지 고민해보려고 합니다. 오늘은 React 로 OOP 원칙을 지키는 것에 익숙해지기 위해서, 익히 알려진 Anti-Pattern 에 대해 말하고자 합니다. 바로 “setState props 를 지양하기” 입니다. OOP 에서 setter 를 노출시키는 것..

Tech/Clean Code 2025.02.16

2024년 독서 회고

총 11권이기적 유전자, 리차드 도킨스데일 카네기 인간 관계론챗GPT가 쏘아올린 신직업 프롬프트 엔지니어, 서승완역행자, 자청운과 실력의 성공 방정식, 마이클 모부신타이탄의 도구들, 팀 페리스부의 추월차선, 엠제이 드마코욕망의 진화, 데이비드 버스나로 존재하는 법, 헤르만 헤세데미안, 헤르만 헤세불안, 알랭 드 보통 24년에 총 11권을 읽었다. 출퇴근길에만 읽은 것을 감안하면, 괜찮은 성과라고 생각한다. 그렇지만, 24년에 독서가 나에게 가져다 준 파급력을 생각해보았을 때, 더 읽었으면 좋았겠다 싶다. 책이 가장 성장하기 좋은 도구임을 다시금 느꼈다.  올해의 책 : 이기적 유전자24년의 모든 고민은 진화론/유전자론과 함께 했다고 해도 과언이 아니다. 세상을 이해하는 인식의 패러다임이 바뀌었다. 먼저 ..

Writing/회고 2025.01.03

2024-2 Self Integrity Report

Self Integrity Report 를 왜 쓰는가?Integrity 는 “진실성” 이라는 의미로 번역된다. 즉, Self Integrity 라는 이름으로 내가 나에게 얼마나 진실한가? 얼마나 나다움을 실현하고 있는가? 에 대해 고민해보는 글이다. 이를 작성하는 이유는, 삶의 근본적인 부분을 고민하기 위함이다. 내가 의식하지 못 한 채 나이가 들어버리고, 과거를 후회하는 것을 방어해주는 장치이다. 이것도 회고의 일종이지만, 단순히 일정 시간동안 잘한 점/아쉬운 점/개선할 점을 분석하는 것이 아니다. 현재의 시간을 초월하여, 내가 현재 가진 직업과 생각, 모든 것을 초월하여, 근본부터 생각하고 나를 점검해가는 시간이다. 그래서 1.1배 나아지는 것이 아니라, 방향 자체를 바꾸어 5배 나아지는 것을 목표로..

이득이라는 착각

인간은 높은 지능을 가지기 때문에, 자연스레 무엇이 이득인지 판단하고 그에 맞게 행동한다. 그 결정은 휴리스틱에 기반한 경우가 많다. 휴리스틱은 직관에 의한 결정을 말한다. 이것 덕분에 인간은 빠른 의사결정을 통해 위험을 피하고, 불필요한 의사결정 비용을 줄일 수 있다. 하지만, 나는 주변에서 이득을 잘못 판단하는 경우가 매우 많다고 생각한다. 그러니까, 경제학에서 정의하는 비용-편익 분석 모델로 분석해보면, 적절한 판단인지 의구심이 들 때가 많다. 군대에서 한 친구와 나눴던 대화가 기억난다. 내가 이렇게 말했다. “매일 공부를 5시간 하고 유명 대학에 가는 것과, 매일 공부를 10시간 하고 상대적으로 덜 유명한 대학교에 가는 것, 둘 중 하나를 택하라면 나는 후자를 택할거야” 이 말에 친구는 왜 둘 다..

오타니식 성장

자기계발을 좋아하는 이에게, 성장이라는 키워드는 매우 중요하다. 더 나은 인간이 되고자 하고, 자아를 실현하고자 하는 욕구는 굉장히 고상하다고 생각한다. 하지만, 종종 무분별하게 성장을 추구하는 이들을 마주한다. 성장을 어떻게 정의하고, 어떻게 측정할 것이냐에 따라서 성장의 진정한 의미가 사뭇 퇴색될 수 있다고 생각한다. 특히, 단기적인 선형적 성장을 추구하는 순간, 성장의 본질적 의미를 상실할 수 있다. 선형적 성장이란, input 한단위 증가에 따라, 일정한 output 이 보장되는 성장을 의미한다. 경제학을 잘하기 위해서, 경제학 책을 읽는 행위는, 선형적 성장에 가까울 것이다. 경제학 책 1권은, 1권 만큼의 지식을 가져다주고, 딱 그만큼 나는 성장해있을 것이다. 선형적 성장의 반대 개념은 다차원..

진부한 만큼 중요한 말 : Connecting the dots

진부한 말은 왜 진부해졌을까. 너무나 유명해서, 닳게 들으면 그 말은 진부하게 느껴진다. 하지만 역설적으로 진부한 만큼, 중요하다고 생각한다. 중요하지 않았다면 이야기가 들리지 않았을 터이고, 그 말은 새로이 느껴질 것이다. 오늘은 스티브 잡스가 스탠포드 대학교 졸업 연설에서 남긴 유명한 말, “Connecting the dots” 에 대해서 깊이 들여다보려 한다. 잡스가 이 말을 통해 무엇을 전달하고 싶었을까. Connecting the dots 는 경험의 연결을 의미하는데, 연설을 들어보면 잡스는 2가지를 강조하고 싶어하는 것으로 보인다. 경험의 예측 불가능성과, 내면의 소리는 따르는 것. 잡스의 생애를 통해, 이 말을 더 깊이 이해해볼 수 있다. 잡스는 남들이 볼 때, 일반적이지 않은 삶을 살아왔다..

Web Socket 으로 간단한 채팅앱 만들기 (Node.js, React)

Web Socket Protocol 이란?두 프로그램간 양방향으로 메시지를 교환하기 위한 통신규약을 말한다. IETF의 RFC6455 에서 표준 프로토콜로 정의하고, W3C에 의해서 웹 기술 표준으로 정의하고 있다.웹 소켓의 특징1. 양방향 통신클라이언트와 서버가, 서로 통신을 주고받을 수 있다. HTTP 프로토콜은 단방향 통신이 특징인 것과 차별점을 가진다. 2. 지속적인 연결HTTP 통신은 비연결성을 가진다. 한번 요청, 응답을 주고받으면 종료되는 것이 기본 특징이다. Web Socket은 한번 연결이 되면, close 할 때까지 지속적으로 서로 메시지를 주고받을 수 있다. 그러므로, 불필요한 handshake 과정이 없고, 불필요하게 큰 header 정보를 계속 주고받지 않아도 된다. 그래서 실시간..

학문을 대하는 바람직한 자세

최근 다시 대학에 돌아와서, 마지막 학기를 보내고 있다. 막학기인지라, 내가 원하는 과목들을 들으며 아주 즐겁게 학문을 하고 있다. 경제, 컴퓨터과학, 철학 과목들을 수강 중이다. 다양한 과목들을 근본부터 들으니, 어떻게 학문을 대해야 하는지, 좋은 생각이 솟구친다. 나의 현 상황을 서술하는 것이 이해에 도움이 되리라고 생각한다. 나는 현대 프로그래밍 언어는 잘 다룰 줄 아는데, 컴퓨터과학의 근간인 기계어, 어셈블리어, C언어 등은 잘 모른다. 나는 현대 철학인 실존주의에 대한 이해는 높은 편인데, 고전철학, 근대철학에는 그렇지 않다. 나는 SQL 은 다룰 줄 아는데, 데이타베이스 이론은 잘 모른다. 위 사례들이 잘못 되었음을 말하고자 하는 것은 절대 아니다. 나는 실용주의적, top-down 학습법이 ..

네 석공 이야기

탈무드에 나오는 세 석공 이야기가 있다. 어느 날, 세 석공이 공사장에서 열심히 돌을 다듬고 있었다. 지나가던 노인이 그들에게 왜 일을 하느냐고 물었다. 첫 번째 석공은 한숨을 내쉬며 죽지 못해 일한다고 하였다. 두 번째 석공은 가족의 생계를 위해 일한다고 하였다. 세 번째 석공은 웃으면서, 아름다운 성당을 짓기 위해 즐겁게 일한다고 하였다. 이 이야기는 일에 의미를 부여하는 것의 중요성을 시사하는 소재로 자주 사용된다. 하지만 과연 일에 의미를 부여하는 자가, 가장 일을 즐기는 사람일까? 나는 지극히 세 번째 석공 부류의 인간이다. 일에 큰 의미를 부여한다. 진로를 탐색할 때도 의미에 이끌려서 이리저리 찾아다녔다. 나에게 가장 큰 의미는 선한 영향력이었다. 그렇지만 내가 동료들 사이에서 가장 일을 즐기..

Optimality 만큼이나, Approximation 이 중요하다.

Computer Science 에서 알고리즘 문제를 푸는 방법 중 하나로 Approximation algorithm이 있다. 계산해야할 것이 너무나 많아서, 주어진 시간 안에 Solution 을 찾지 못 하는 경우에 사용할 수 있는 미봉책이다. 가령 해결책을 찾기 위해서 10^8! (1억 팩토리얼)번 순회해야 한다고 해보자. 일반적인 Computing power 로는 완료할 수 없는 연산이다. 그럴 때, Optimal Solution 을 찾으려고 하는 것이 아니라, Approximation 을 통해서 근사적으로, Optimal 과 가까운 결과를 얻으려고 할 수 있다. 그렇게 함으로써 현실적인 시간 안에 답을 구하지 못하는 문제를, 차선의 답을 구할 수 있도록 바꿔낸다. 이 CS 이론이 너무나 현실적이고,..

글또 9기를 돌아보며

이번에 6개월간 글또에 참여했고, 오늘 회고를 써보려고 한다. 글또 커뮤니티는 글쓰는 또라이 의 줄임말이다. 글쓰는 개발자 모임이고, 돈을 걸고 2주마다 하나의 글을 제출하려고 모인 집단이다.쓴 글 수6개월동안 총 14개의 글을 썼다. 기술글 3개와 비기술글 11개를 썼다. 프론트엔드 직무로 들어왔기 때문에, 비기술글은 쓰고도 제출하지 않은 글이 많다. 쓴글을 모아보자. 기술글ErrorBoundary 가 포착할 수 없는 에러와 그 이론적 원리 분석React CleanCode #2. UI Variation에 유연하게 대응하기React에서 중복호출(aka. 따닥)을 막는 완벽한 방법 비기술글토스에서의 1년을 돌아보며왜 사람마다 생각의 양과 질에서 차이가 나는가?2024-1 Self-integrity repo..

Writing/회고 2024.05.12

React에서 중복호출(aka. 따닥)을 막는 완벽한 방법

서언안녕하세요. 최근에 퀄리티 높은 프론트엔드 제품을 만드는 것에 관심이 많은데요. 사소해보이는 디테일을 얼마나 능숙히 처리하느냐가 프론트엔드 개발자의 실력 척도 중 하나라고 생각했어요. 저는 여러 원칙들을 세우고 있지만, 오늘은 중복호출 (aka 따닥)을 방지하는 완벽한 방법을 탐구해볼 것입니다.문제인식서비스를 개발하다가, 중복호출이 발생해서 여러 문제가 발생하는 경우가 있습니다. 결제 요청이 2번 들어갈 수도 있고, 게시물 작성이 2번 될 수도 있고, 댓글이 2번 써질 수도 있습니다. 이로 인해 비즈니스적으로도 영향을 미칠 수도 있습니다. 작게는 서버 에러 수가 많아져서, noisy 해질 수 있죠. 이만큼 중요도가 높고, 프론트엔드 퀄리티에 큰 역할을 한다고 생각했는데요. 실제로 저도 명확한 해결책을..

왜 사람마다 생각의 양과 질에서 차이가 나는가?

사람들을 만나고 얘기하다 보면 드는 생각이 있다. 사람마다 생각의 양과 질의 관점에서 차이가 있다는 것이다. 이를테면 특정 현상을 보고 어떤 이는 A라는 것을 느낄 수 있지만, 어떤 이는 A를 아예 생각조차 할 수 없다. 그리고 특정 현상을 보고 어떤 이는 피상적인 생각을 떠올리고, 어떤 이는 구체적이고 깊은 생각을 할 수 있다. 이 격차는 사실 모든 차이를 결정한다. 직업의 차이, 봉급의 차이, 풍요로움의 차이, 의사결정의 차이, 현명함의 차이 등. 생각의 격차가 태어나면서 모두 결정되는 것은 당연히 아니다. 후천적으로 충분히 개발될 수 있는 영역이다. 이 글에서는 어떻게 생각의 격차가 발생하게 되는지 고찰해본다. 나는 21살에 내가 무시받는게 상당히 싫었다. 그때의 나는 (어리석을 수 있지만) 이미 ..

React CleanCode #2. UI Variation에 유연하게 대응하기

서언안녕하세요. React CleanCode 2번째 시리즈로 찾아왔습니다. 저는 토스 공동구매 팀에서 약 1년간 커머스 제품을 운영해왔는데요. 제품이 디벨롭 되면서, 상품 컴포넌트는 더욱 복잡해지고, 많은 Variation 이 생겼어요. 그러면서 일명 스파게티 코드를 만들게 되었어요. 사용처에서 유연하게 사용이 어렵고, 장애 확률이 높고, 새로운 기능 추가가 어려웠어요. 이를 유지보수하기 쉬운 코드로 리팩터링한 경험을 공유하려고 해요. UI Variation에 고통 받고 계신 분들이 읽으면 도움이 될 것입니다.목차컴포넌트가 스파게티가 되어가는 과정개선 방향성개선언제 사용하면 좋은가요?마치며부록 : Compound component pattern 인가요?컴포넌트가 스파게티가 되어가는 과정컴포넌트가 망해가는..

Tech/Clean Code 2024.01.28

2023-2 Self Integrity Report

서언이 글은 나라는 사람의 Integrity 를 점검하는 글이다. Integrity 는 “진실성” 이라는 의미로 번역된다. 즉, Self Integrity 라는 이름으로 내가 나에게 얼마나 진실한가? 얼마나 나다움을 실현하고 있는가? 에 대해 이야기해보려고 한다. 앞으로 주기적으로 작성해볼 것이다. 왜 작성하는지 먼저 짚고 넘어가보자. 이는 삶의 근본적인 부분을 주기적으로 고민하기 위함이다. 내가 의식하지 못 한 채 나이가 들어버리고, 과거를 후회하는 삶을 방어해주는 장치이다. 이것도 회고의 일종이지만, 단순히 일정 시간동안 잘한 점/아쉬운 점/개선할 점 을 분석하는 것이 아니다. 현재의 시간을 초월하여, 내가 현재 가진 직업과 생각, 모든 것을 초월하여, 근본부터 생각하고 나를 점검해가는 시간이다. 나..

세상을 보는 창

"아는 만큼 보인다" 라는 격언이 있다. 같은 현상을 보더라도, 무엇을 / 얼마나 아느냐에 따라서 관점이 달라진다. 즉, 지식이 세상을 보는 창이다. 어떤 이는 과학으로, 어떤 이는 역사로, 어떤 이는 철학으로, 어떤 이는 사회학으로, 어떤 이는 경제학으로, 어떤 이는 경영으로 세상을 바라본다. 예시를 들어보자. 산업 혁명이라는 하나의 사건을 다양한 시각에서 바라볼 수 있다. 철학으로는 데카르트의 합리론, 법학으로는 특허법, 역사로는 인클로저 운동, 등을 가지고 바라볼 수 있다. 각 분야는 각기 다른 관점을 가지고, 다른 배울 점을 제공한다. 우리의 일상도 같다. 사람의 행동을 이해하려면 많은 도구가 필요하다. 이를테면 심리학에 대한 이해가 필요하다. 이 중에서도 자기방어, 열등감 등에 대한 심도있는 이..

토스에서의 1년을 돌아보며

서언 토스에서 Frontend Developer로 일한 지 1년이 지났다. 정말 밀도 높은 한 해를 보냈다. 매일을 살아가는 것도 중요하지만, 과거를 숙고하는 것이 기반이 되어야 한다. 내가 지금 어디에 있고 앞으로 어디로 가야 할지를 생각해야 한다. 이게 내 삶에서 자정 역할을 해왔다. 오늘도 잠깐 멈춰서서 1년을 돌아보고, 나아갈 길을 정의해볼 생각이다. 글 형식은 토스에서 인상 깊었던 요소를 써내려가며 느낀점을 쓰는 형식으로 해보겠다. 목적조직 토스는 목적조직 문화를 가진다. 목적조직은 직무와 상관없이 목표를 이루기 위해 팀원이 모이는 조직형태를 의미한다. 이게 토스에서 일하는 것이 즐거운 이유 중 하나라고 생각한다. 내가 토스에 합류한 이유이기도 하다. 그래서 대개 한팀에 직무 별로 1명씩 배치된..

Writing/회고 2024.01.07