분류 전체보기
나는 왜 개발자가 되었는가?(2) - 뛰어난 집념과 끈기로 문제를 해결하는 개발자가 되다
나는 왜 개발자가 되었는가?(2) - 뛰어난 집념과 끈기로 문제를 해결하는 개발자가 되다
2024.06.21어떻게 이렇게 지금 이 글을 쓰게 되었는지 잘 모르겠다. 오늘도 평소와 다를 것 없는 일상적인 하루였기 때문이다. 오늘도 진행 중인 프로젝트를 계속하고, 늦은 새벽 꾸준히 실천하고 있는 '매일 배포'를 완료한 후 잠시 기지개를 켜고 있었던 중이었다. 그러다 문득 지금 내가 느끼고 있는 감정을 돌아보게 되었고 '내가 이 일을 좋아하고 있구나'라는 생각이 들었다. 몸은 확실히 피로했지만, 분명 나는 즐기고 있었고 만족감과 보람을 느꼈다. 서비스 출시를 앞두고 잦은 밤샘과 강한 스트레스를 받고 있는 상황을 고려하면, 이는 비정상적인 일이었다. 어떻게 된 일일까? 대학교에 입학하여 프로그래밍을 접한 후, 대학교를 4년 동안 졸업하고 군 전역을 앞두고 있으니 이 일을 시작한 지 약 6~7년이 지났다. 누군가 보기..
나는 왜 개발자가 되었는가?(1) - 직업의 의미와 성장에 대한 열망
나는 왜 개발자가 되었는가?(1) - 직업의 의미와 성장에 대한 열망
2024.06.21어떻게 이렇게 지금 이 글을 쓰게 되었는지 잘 모르겠다. 오늘도 평소와 다를 것 없는 일상적인 하루였기 때문이다. 오늘도 진행 중인 프로젝트를 계속하고, 늦은 새벽 꾸준히 실천하고 있는 '매일 배포'를 완료한 후 잠시 기지개를 켜고 있었던 중이었다. 그러다 문득 지금 내가 느끼고 있는 감정을 돌아보게 되었고 '내가 이 일을 좋아하고 있구나'라는 생각이 들었다. 몸은 확실히 피로했지만, 분명 나는 즐기고 있었고 만족감과 보람을 느꼈다. 서비스 출시를 앞두고 잦은 밤샘과 강한 스트레스를 받고 있는 상황을 고려하면, 이는 비정상적인 일이었다. 어떻게 된 일일까? 대학교에 입학하여 프로그래밍을 접한 후, 대학교를 4년 동안 졸업하고 군 전역을 앞두고 있으니 이 일을 시작한 지 약 6~7년이 지났다. 누군가 보기..
지속 가능하고 효율적인 코드 리뷰를 하는 방법
지속 가능하고 효율적인 코드 리뷰를 하는 방법
2024.06.17아마도 팀 단위의 프로젝트를 경험해본 개발자라면 코드 리뷰를 해본 경험이 있을 것이다. 코드 리뷰는 개발자가 작성한 코드를 다른 동료 개발자들이 검토하는 과정이다. 코드 리뷰는 잘 이루어진다면 코드의 품질을 향상시키고, 예기치 않은 에러를 방지하며, 팀원 간 지식 공유를 활성화하는 아주 유용한 문화가 될 수 있다. 그러나 코드 리뷰 문화를 잘 유지하는 것은 생각보다 쉽지 않다. 코드 리뷰는 시간과 자원이 많이 들 뿐만 아니라, 막상 어떤 부분을 리뷰해야 할지 막연할 수 있기 때문이다. 이런 상황이 계속된다면, 코드 리뷰는 서로 "수고하셨습니다"라는 댓글만 남기는 아무런 의미 없는 피상적인 행동으로 남게 된다. 이번 포스팅에서는 효율적이고 유용한 코드 리뷰 문화를 유지하기 위한 리뷰어와 리뷰이의 역할에 대..
Cypress로 E2E 테스트 작성하기(ft. App action vs Page object model)
Cypress로 E2E 테스트 작성하기(ft. App action vs Page object model)
2024.06.12저번 포스트인 프론트엔드는 무엇을 테스트해야 하는가?에서는 프론트엔드에서의 유닛 테스트와 통합 테스트에 대해 집중적으로 다루었다. 이번 포스트에서는 프론트엔드의 또 다른 테스트 유형인 E2E 테스트에 대해 알아보고, E2E 테스트 도구인 Cypress를 활용하여 필자가 실제 진행 중인 사이드 프로젝트에서 E2E 테스트를 작성해 봄으로써, 이를 통해 E2E 테스트 작성 방법까지 다루어 보려고 한다. 1. 왜 E2E 테스트를 해야 하는가?E2E(End-to-End) 테스트는 애플리케이션의 흐름을 처음부터 끝까지 검증하는 것으로, 앞서 언급한 유닛 테스트와 통합 테스트와는 또 다른 의미를 가진다. 유닛 테스트와 통합 테스트가 개발자 관점에서 개발한 모듈이 정상적으로 작동하는지를 검증하는 반면, E2E 테스트..
프론트엔드에서 로깅은 왜 필요할까?(ft. 의존성 주입과 선언형 프로그래밍)
프론트엔드에서 로깅은 왜 필요할까?(ft. 의존성 주입과 선언형 프로그래밍)
2024.06.04모든 소프트웨어는 비즈니스를 위해 존재한다. 특히, 프론트엔드는 사용자와 가장 밀접하게 연결되어 있으므로, 비즈니스 로직 외에도 비즈니스 관련 요구사항을 처리해야 하는 경우가 많다. 이 중에서 대표적인 것이 바로 로깅이다. 로깅이 필요한 이유는 간단하다. 더 나은 비즈니스 결정을 내리기 위함이다. 비즈니스를 구체화하면서, 추상적인 개념들이 구체화되어 특정 기준을 정해야 하는 경우가 많다. 초기에는 사람의 감각에 의존할 수밖에 없지만, 비즈니스가 계속되면서 감각에만 의존하는 것은 위험성이 매우 크다. 따라서, 의사결정에 도움이 될 데이터를 수집하기 위해 로깅이 필요한 것이다. 따라서 로깅은 직접적인 비즈니스 로직은 아닐지라도, 비즈니스 성공과 직결된 매우 중요한 요소이다. 로깅에는 다양한 종류가 있지만, ..
프론트엔드는 무엇을 테스트해야 하는가?
프론트엔드는 무엇을 테스트해야 하는가?
2024.05.28"프론트엔드에서도 테스트를 해야 하는가?"라는 짧은 질문에 대한 답은 분명하게 "예"이다. 그러나 내 경험에 따르면, 테스트 코드를 작성하는 프론트엔드 개발자는 아직도 소수이다. 내가 진행하는 프로젝트에서는 테스트가 작성되지 않은 코드를 '순살 코드'라고 부른다. 이는 최근 화제가 되었던 철근이 빠진 '순살 아파트'에 비유하여 부르는 말이다. 순살 아파트와 순살 코드의 공통점은 언제 무너져도 이상하지 않다는 것이다. 오직 잘 짜인 테스트 코드 만이 변경으로부터 소프트웨어가 안전하게 원하는 의도대로 동작할 수 있음을 보장할 수 있다. 부끄럽지만 나도 몇 년 전까지는 테스트 코드의 중요성을 잘 알지 못했다. 특히 프론트엔드와는 무관한 이야기라고 생각했다. 하지만 기능이 안전하게 의도대로 작동함을 보장해야 하..
Turborepo로 모노레포에 엔진을 달아보자
Turborepo로 모노레포에 엔진을 달아보자
2024.05.20최근 개발 업계에서는 모노레포에 대한 관심이 높아지고 있으며, 이는 특히 프론트엔드 분야에서 두드러지게 나타나고 있다. 이는 아마도 폴리레포 방식보다 모노레포 방식이 프로젝트 관리에 있어 여러 가지 이점이 있기 때문일 것이다. 필자 역시 현재 프로젝트에서 모노레포 방식을 채택하고 있다. 그러나 필자의 경험에 따르면, 앞서 언급한 모노레포의 장점은 반정도 만 맞는 말이다. 실제로 모노레포 방식을 기본적으로 채택하면, 프로젝트 관리는 폴리레포보다 더 어려워진다. 그러므로, 모노레포를 통해 프로젝트 관리의 이점을 얻으려면, 모노레포를 효율적으로 사용할 수 있는 도구와의 결합이 필수적이다. 오늘 소개할 Turborepo는 이러한 도구 중 하나로, 모노레포의 이점을 극대화시킬 수 있는 강력한 기술이다. 이번 포스..
실제 사례로 보는 개발자가 좋은 코드를 작성해야 하는 이유
실제 사례로 보는 개발자가 좋은 코드를 작성해야 하는 이유
2024.05.02소프트웨어에서 변하지 않는 유일한 것은 모든 것이 변한다는 사실뿐이다. 고객의 니즈와 요구사항이 변하는 것은 물론, 우리의 문제에 대한 이해도도 변한다. 그리고 이러한 변화는 필연적으로 소프트웨어의 변화를 초래한다. 따라서, 개발자는 변화에 대응해야 하며, 이것이 바로 개발자의 존재 이유이다. 하지만 현실은 어떠한가? 2001년 애자일 매니페스토 이후 20년이 넘었지만, 변화에 대응할 수 있는 역량을 갖춘 개발자는 여전히 매우 소수에 불과하다. 그리고 나는 이러한 이유가 변화에 대응하는 것의 중요성에도 불구하고, 많은 개발자들이 가장 성장하는 초기 단계에서 변화에 대응하는 것을 직접 경험하고 훈련하지 않기 때문이라고 생각한다. 개발을 시작할 때, 많은 개발자들이 프로젝트를 학교 과제나 부트캠프를 통해 접..
좋은 리더란 무엇인가?: 우리는 다르기 때문에 협력한다
좋은 리더란 무엇인가?: 우리는 다르기 때문에 협력한다
2024.04.16개발자는 프로그래밍이라는 현대의 훌륭한 문제 해결 도구를 가지고 있기에, 주도적으로 문제를 해결할 수 있는 기회가 많다. 이러한 이유로 개발자는 종종 리더 역할을 맡게 되는데, 나 또한 개발자로서 내 주위의 여러 문제를 해결하기 위해 다양한 프로젝트를 주도하면서 자연스럽게 리더 역할을 맡게 되는 경우가 많았다. 그러나 누구나 리더가 될 수는 있지만 위대하고 훌륭한 리더가 되는 것은 결코 쉬운 일이 아니다. 오랜 시간 동안 나는 "좋은 리더란 무엇인가?"라는 질문에 대한 답을 찾으려 노력했다. 아직도 이 질문에 대한 완전한 답을 찾기는 어렵지만, 경험이 쌓이면서 이 질문에 대한 아주 작은 통찰을 얻었다는 느낌이 들어 이를 글로 적어보려 한다. 추후에 더 많은 경험을 통해 더 많은 것을 알게 되면 이 글에 ..
개발자가 독서로 10배 이상 성장하는 방법
개발자가 독서로 10배 이상 성장하는 방법
2024.03.29의 저자 프레더릭 브룩스는 1986년에 "은 탄환은 없다 - 소프트웨어 공학에 있어 본질과 부수성" 라는 논문에서, 앞으로 10년 동안 프로그래밍 생산성을 10배 이상 향상시키는 발전은 없을 것이라고 예견했고, 이 예측은 현대에 이르러도 사실인 것으로 보인다. 브룩스가 주장한 핵심은, 모든 발전이 프로그래밍의 부수적 문제만을 해결할 뿐, 본질적인 문제는 해결하지 않으므로 본질적으로 빠른 발전이 불가능하다는 것 이다. 나는 개발자가 올바른 독서 습관을 가지면 이로 인해 소프트웨어 개발의 본질적인 문제인 문제 해결 능력이 향상되어 개발자의 생산성을 10배 이상 높일 수 있다고 생각한다. 즉 현대 사회의 “은 탄환”은 “독서”인 것이다. 당신의 취미는 무엇인가? 아마 음악이나 운동, 넷플릭스나 유튜브 시청 등..
아마추어 개발자가 풀스택 개발자가 되어야 하는 이유(ft. 제너럴리스트)
아마추어 개발자가 풀스택 개발자가 되어야 하는 이유(ft. 제너럴리스트)
2024.03.22개발 분야는 애플리케이션의 계층에 따라 여러 부분으로 나뉩니다. 일반적으로 클라이언트와 직접 연결되는 계층을 담당하는 개발자를 프론트엔드 개발자라고 하며, 서버 계층을 개발하는 개발자를 백엔드 개발자라고 합니다. 이 외에도 데브옵스 엔지니어, 플랫폼 엔지니어 등 다양한 분야가 존재합니다. 우리 분야에서는 모든 계층을 다루는 개발자를 풀스택 개발자—넓게는 '제너럴리스트'—라고 부릅니다. (이 글에서는 개발자들이 더 많이 사용하는 '풀스택 개발자'라는 용어를 사용하겠습니다.) 모든 계층을 다룬다는 것이 상위 호환처럼 보일 수 있지만, 반드시 그렇지는 않습니다. 현대 애플리케이션의 각 계층은 충분히 복잡해서 하나의 계층에만 집중해도 공부할 내용이 넘쳐날 뿐 아니라, 개발 분야는 매우 빠르게 변화하기 때문에 매..
다가오는 새로운 시대와 개발자의 역할
다가오는 새로운 시대와 개발자의 역할
2023.11.18요즘 해외 뉴스레터나 기사를 읽다 보면 정말 내가 알던 세상이 맞나 라는 생각이 자주 든다. 그만큼 기존의 상식과 질서가 빠르게 변하는 것이 눈에 보인다. 아직 내 삶에 직접적으로 영향을 미치지는 않지만, 우리 사회가 거대한 변화를 앞두고 있음을 온몸으로 느낄 수 있다. 잘 알려진 바와 같이, 그 시작은 챗GPT로 대변되는 생성형 AI의 등장이다. 사실 AI는 우리 사회에서 이미 꽤 익숙한 존재이다. 우리는 AI가 설계한 알고리즘에 의해 어떤 영화와 영상을 이어서 볼지, 어떤 물건을 추가 구매할지를 결정한다. 챗GPT와 같은 생성형 AI가 특별한 점은 그전에는 AI가 ‘소비’를 위한 추천 부분에 집중되어 있었다면, 생성형 AI는 ‘생산’ 분야를 중점적으로 다룬다는 것이다. 기존에 AI로 인해 우리의 소비..