본문 바로가기

(38)
Optimality 만큼이나, Approximation 이 중요하다. Computer Science 에서 알고리즘 문제를 푸는 방법 중 하나로 Approximation algorithm이 있다. 계산해야할 것이 너무나 많아서, 주어진 시간 안에 Solution 을 찾지 못 하는 경우에 사용할 수 있는 미봉책이다. 가령 해결책을 찾기 위해서 10^8! (1억 팩토리얼)번 순회해야 한다고 해보자. 일반적인 Computing power 로는 완료할 수 없는 연산이다. 그럴 때, Optimal Solution 을 찾으려고 하는 것이 아니라, Approximation 을 통해서 근사적으로, Optimal 과 가까운 결과를 얻으려고 할 수 있다. 그렇게 함으로써 현실적인 시간 안에 답을 구하지 못하는 문제를, 차선의 답을 구할 수 있도록 바꿔낸다. 이 CS 이론이 너무나 현실적이고,..
왜 사람마다 생각의 양과 질에서 차이가 나는가? 사람들을 만나고 얘기하다 보면 드는 생각이 있다. 사람마다 생각의 양과 질의 관점에서 차이가 있다는 것이다. 이를테면 특정 현상을 보고 어떤 이는 A라는 것을 느낄 수 있지만, 어떤 이는 A를 아예 생각조차 할 수 없다. 그리고 특정 현상을 보고 어떤 이는 피상적인 생각을 떠올리고, 어떤 이는 구체적이고 깊은 생각을 할 수 있다. 이 격차는 사실 모든 차이를 결정한다. 직업의 차이, 봉급의 차이, 풍요로움의 차이, 의사결정의 차이, 현명함의 차이 등. 생각의 격차가 태어나면서 모두 결정되는 것은 당연히 아니다. 후천적으로 충분히 개발될 수 있는 영역이다. 이 글에서는 어떻게 생각의 격차가 발생하게 되는지 고찰해본다. 나는 21살에 내가 무시받는게 상당히 싫었다. 그때의 나는 (어리석을 수 있지만) 이미 ..
2024-1 Self-integrity report 서언 이 글은 나라는 사람의 Integrity 를 점검하는 글이다. Integrity 는 “진실성” 이라는 의미로 번역된다. 즉, Self Integrity 라는 이름으로 내가 나에게 얼마나 진실한가? 얼마나 나다움을 실현하고 있는가? 에 대해 이야기해보려고 한다. 앞으로 주기적으로 작성해볼 것이다. 왜 작성하는지 먼저 짚고 넘어가보자. 이는 삶의 근본적인 부분을 주기적으로 고민하기 위함이다. 내가 의식하지 못 한 채 나이가 들어버리고, 과거를 후회하는 삶을 방어해주는 장치이다. 이것도 회고의 일종이지만, 단순히 일정 시간동안 잘한 점/아쉬운 점/개선할 점 을 분석하는 것이 아니다. 현재의 시간을 초월하여, 내가 현재 가진 직업과 생각, 모든 것을 초월하여, 근본부터 생각하고 나를 점검해가는 시간이다. ..
세상을 보는 창 "아는 만큼 보인다" 라는 격언이 있다. 같은 현상을 보더라도, 무엇을 / 얼마나 아느냐에 따라서 관점이 달라진다. 즉, 지식이 세상을 보는 창이다. 어떤 이는 과학으로, 어떤 이는 역사로, 어떤 이는 철학으로, 어떤 이는 사회학으로, 어떤 이는 경제학으로, 어떤 이는 경영으로 세상을 바라본다. 예시를 들어보자. 산업 혁명이라는 하나의 사건을 다양한 시각에서 바라볼 수 있다. 철학으로는 데카르트의 합리론, 법학으로는 특허법, 역사로는 인클로저 운동, 등을 가지고 바라볼 수 있다. 각 분야는 각기 다른 관점을 가지고, 다른 배울 점을 제공한다. 우리의 일상도 같다. 사람의 행동을 이해하려면 많은 도구가 필요하다. 이를테면 심리학에 대한 이해가 필요하다. 이 중에서도 자기방어, 열등감 등에 대한 심도있는 이..
토스에서의 1년을 돌아보며 서언 토스에서 Frontend Developer로 일한 지 1년이 지났다. 정말 밀도 높은 한 해를 보냈다. 매일을 살아가는 것도 중요하지만, 과거를 숙고하는 것이 기반이 되어야 한다. 내가 지금 어디에 있고 앞으로 어디로 가야 할지를 생각해야 한다. 이게 내 삶에서 자정 역할을 해왔다. 오늘도 잠깐 멈춰서서 1년을 돌아보고, 나아갈 길을 정의해볼 생각이다. 글 형식은 토스에서 인상 깊었던 요소를 써내려가며 느낀점을 쓰는 형식으로 해보겠다. 목적조직 토스는 목적조직 문화를 가진다. 목적조직은 직무와 상관없이 목표를 이루기 위해 팀원이 모이는 조직형태를 의미한다. 이게 토스에서 일하는 것이 즐거운 이유 중 하나라고 생각한다. 내가 토스에 합류한 이유이기도 하다. 그래서 대개 한팀에 직무 별로 1명씩 배치된..
나는 왜 개발자가 되었는가 프로그래머 저는 온전한 자기 의지로 프로그래밍을 시작했다고 생각합니다. 나라는 사람은 어떤 사람인지, 무엇을 좋아하는지, 무엇을 잘하는지, 수년간 고민한 결과로 내린 결론이기 때문입니다. 선한 영향력 지금의 시점에서 과거를 충분히 반추한 후 내린 결론입니다만, 저는 어릴 적부터 제가 가진 능력으로 남을 도와주는 것에서 아주 큰 보람을 느꼈습니다. 이는 어떠한 보상 없이도 스스로를 움직이게 하는 원동력이었습니다. 가령, 게임에서 퀘스트를 깨는 방법에 대한 블로그 글을 쓰기도 하고, 네이버 지식인에서 모르는 이들에게 답글을 달아주기도 하였습니다. 그리고 진로를 고민해봐야 할 나이가 되었을 때에는 정치인이 되리라 다짐했었습니다. 그 당시에는 공적인 일만이 사람들에게 선한 영향력을 줄 수 있는 일이라고 생각했기..
토스 입사 후 7주간의 생활과 생각정리 그간의 회사생활 입사하고 7주가 지났다. 7주동안 54개의 PR을 올렸다. 진짜 시간 가는 줄 모르고 하루종일 문제를 풀었다. 현재 신규회원을 모으기 위한 서비스를 만들고 있다. 도메인은 정해져 있지 않고, 신규 회원을 모을 수 있다면 어떤 일이든 한다. 그러다보니 아이디에이션에도 많이 참여한다. 스타트업에서 일하는 기분이다. 토스는 수백개의 스타트업이 모인 조직이라고 들었는데, 진짜다. 각각의 팀이 스타트업 형태로 일한다. 그러면서 공동의 목표를 공유한다. 승건님이 말씀하시는 피자 두판의 법칙이란게 있는데, 한 팀의 인원이 8명이 넘으면 비효율, 불통이 생긴다는 것이다. 토스는 이런 가치를 지키기 위해서 조직을 나누고 나눠서, 소규모 스타트업 형태로 운영한다. 매력적이다. 데이터 기반 사고가 재밌다. ..
토스 & 우아한형제들 합격, 회사 선택 이유와 앞으로의 목표 서언 안녕하세요. 이번에 신입 프론트엔드 개발자 채용을 거쳐 토스(코어)와 우아한형제들에 합격했습니다. 프론트엔드 개발자로서 두 회사 모두 객관적으로 너무나 좋은 회사들이고, 저에게 과분한 기회가 찾아왔다고 생각합니다. 둘 다 엄청나게 가고 싶은 회사였기 때문에, 하나를 놓는다는게 여간 어려운 일이 아니었습니다. 이 글은 회사의 우열을 따지지 않으며, 저의 주관적인 선택 과정을 담습니다. 내적으로 이미 정했지만, 스스로 합리화하지 않으면 아쉬움이 떠나가지 않을 것 같아 명문화해 봅니다. 외부적인 기준을 비교하는 과정 저는 회사에 다녀본 적이 없었기 때문에 선택이 특히나 어려웠습니다. 처음에 두 회사를 두고 외부적인 기준을 비교했습니다. 지인들에게서 이 회사는 이래서 좋더라, 저 회사는 저래서 좋더라 하는..
[주간회고] 우아한테크코스 Level2 6주차 - 절망의 계곡 극복하기 내가 정의한 절망의 계곡은, A라는 개념을 모르는데, A를 공부해도, A를 알 수 없는 상태를 말했다. A가 검색해도 나오지 않는다거나, 여러 개념이 얽혀있어서 읽어도 이해할 수 없었다. 크루들과 대화하면서 이를 극복할 수 있었다. 내가 정확히 무엇을 모르는지 메타인지 할 수 있었다. A를 이해하려면 사실 B, C, D를 이해해야 하는데, A만 주구장창 파고든다고 A를 이해할 수 없었던 것이다. B, C, D를 이해했다고 착각했던 것이다. 이에 대하여 다음에 길게 글을 쓰겠다. Plus 월화수목 11시까지, 목요일 10시반까지 공부했다. 가방을 우테코에 두고다녔다. 집갈때에는 공부에 대한 짐을 벗어던질 수 있어, 마음이 편안함 다음날 일찍 가게 됨. 씻고 바로 자게 됨. 근로 회의를 4번이나 했다. 목적..
크루들과 나눈 우아한 대화 #1 (React rendering, commit phase, memo) 크루들과 나눈 우아한 대화 #1 아놀드, 병민, 앨버와 아주 재밌는 대화를 나누었고, 많이 배웠다. 대화의 시작은 이러했다. "Props로 item 정보가 담긴 객체와 아이템을 삭제하는 함수 (deleteItem)을 넘겨준다고 했을 때, useCallback과 memo로 초기화 하는 것이 의미가 있을까?" return ( itemList.map(item => ) ) 이 상황에서 하나의 item이 업데이트 되면, 모든 Item이 리렌더링 될 것이다. 내가 가진 의문은, 연관없는 Item 컴포넌트가 다시 그려질지언정, Item이 같은 것을 그리고 있다면 diff 알고리즘이 바뀌었다고 인식하지 않기 때문에, 리렌더링 하지 않을까? 하는 것이었다. 내가 잘못 알거나 / 얕게 알고있었던 것은 - 렌더링이란 (함수..