분류 전체보기
프론트엔드는 무엇을 테스트해야 하는가?
프론트엔드는 무엇을 테스트해야 하는가?
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.10.15지금, 이 순간 당신이 처음부터 다시 시작해서 개발자가 된다고 상상해보자. 열정이 넘치고 똑똑한 당신이라면 무엇부터 어떻게 시작할까? 평소 컴퓨터에 관심이 많고 관련 정보를 일부러 찾아 읽는 수준이라면, 프론트엔드는 React, 백엔드는 Spring이 대세라는 정도는 알고 있을 것이다. 물론 여전히 프레임워크가 무엇인지조차 정확히는 모르겠지만, 나름대로 깊이 고민한 끝에 프론트엔드 개발자로서의 길을 선택하고 React부터 차근차근 알아가 보기로 결심한다. React에 대한 첫인상은 그리 나쁘지 않다. 파이썬으로 기본적인 알고리즘을 몇 번 공부해본게 전부라 두려움도 있었지만, 그러나 프레임워크 자체는 생각보다 복잡하지 않다. 무엇보다 개발한 결과물이 즉시 화면에 표시되면서 개발하는 맛을 느낀다. 개발이 재..
소프트웨어 개발의 본질에 대하여
소프트웨어 개발의 본질에 대하여
2023.09.29소프트웨어 개발이 창조의 영역이라면 도로시 세이어즈의 관점에 따라 (1) 개념적 구조의 형성 (2) 실제 표현 수단으로 구현 (3) 실사용자와의 상호작용으로 이뤄질 것이다. 이 중 소프트웨어 개발자의 주된 업무는 (1)에 해당하는 현실 세계 문제를 해결하기 위해 소프트웨어 차원의 개념적 구조를 모델링하는 일과 (2)에 해당하는 프로그래밍 언어, 프레임워크, 인프라와 같은 기술적 요소를 사용해 모델링한 개념적 구조를 컴퓨터 시스템으로 구현하는 일이다. 나는 (1)에 해당하는 개념적 구조의 모델링을 소프트웨어 개발의 본질적인 부분으로 (2)에 해당하는 개념적 구조의 구현을 소프트웨어 개발의 부수적인 부분으로 나누고, 소프트웨어 개발이 어려운 이유는 본질적인 부분 때문임을 명확하게 하고자 한다. 개념적 구조의..
[개발자의 서재] 만들면서 배우는 클린 아키텍처
[개발자의 서재] 만들면서 배우는 클린 아키텍처
2023.09.28로버트 마틴의 를 읽었는가? 도메인 주도 설계에 흥미가 생겼는가? 헥사고날 아키텍처를 프로젝트에 적용해 보고 싶은가? 그렇다면 이 책이 도움이 될 것이다. 톰 홈버그의 는 조금은 추상적인 개념일 수 있는 클린 아키텍처(혹은 헥사고날 아키텍처)를 어떻게 구현해야 할지에 대한 구체적인 방법들을 제안한다. 단순히 구현 코드 예제를 제시할 뿐만 아니라 구현하면서 고민해 봐야 할 지점들을 공유하고 저자의 경험에서 도출한 의견을 피력한다. 이러한 내용은 실제로 클린 아키텍처를 도입해 보고 싶은 사람들에게 많은 도움이 될 것이라 확신한다. 와 다른점은? 로버트 마틴의 가 클린 아키텍처에 대한 개요를 설명한다면 이 책은 클린 아키텍처의 디테일 적 측면을다룬다고 볼 수 있다. 조금 재밌는 점은 저자가 를 완전히 받아들이..
[개발자의 서재] 현대 물리학과 동양사상 - 경계를 넘어선 의미 찾기
[개발자의 서재] 현대 물리학과 동양사상 - 경계를 넘어선 의미 찾기
2023.09.20이번 작품은 프리초프 카프라의 이다. 정말 하나도 관계없어 보이는 현대 물리학과 동양사상이 왜 하나의 제목에서 만났을까? 그리고 개발자인 나는 왜 이 책을 읽었을까? 현대 물리학은 무엇인가? 책이 출판된 1975년 기준으로 보면 상대성 이론과 양자역학 2가지로 설명할 수 있으며 주로 서구사회에서 발전했다. 동양사상은 무엇인가? 도교, 불교, 힌두교 등으로 대표되며 다소 종교적이며 철학적인 학문으로 동양 사회에서 발전했다. 실제로도 둘은 관계가 전혀 없으며 오히려 극단 점에 있다고 해도 과언이 아닐 것이다. 그렇다면 개발은 어떠한가? 둘과 유사성이 있는가? 당연하게도 없어 보인다. 이쯤에서 책 앞부분에 등장하는 하이젠베르크의 말을 경청해 보자. 인류의 사상사에 있어서 , 두개의 다른 사상의 조류가 만나는 ..
[개발자의 서재] 객체지향의 사실과 오해 - 이제는 객체지향을 알아야 할 때
[개발자의 서재] 객체지향의 사실과 오해 - 이제는 객체지향을 알아야 할 때
2023.09.20객체지향 프로그래밍이란 도대체 뭘까? 우리 분야에서 이만큼 정의가 갈리는 주제도 없다. 실제로 주변 동료들에게 객체지향 프로그래밍이 무엇인지 한번 물어봐 봐라. 정말 다양한 답이 나올 것이다. 그리고 그중 대부분은 우리가 흔히 알고 있는 객체지향의 오해로부터 나온다. 우리 중 더 이상 객체지향을 하지 않는 사람은 없지만, 객체지향에 대해서 제대로 알고 있는 사람은 과연 얼마나 될까? 그렇다면 책 를 읽으면 객체지향이 무엇인지 제대로 알 수 있는가? 안타깝게도 그렇지 않다. 그렇지만 적어도 객체지향에 대한 많은 오해들, 잘못된 부분들을 바로잡고, 객체지향이 무엇인지 올바르게 생각할 수 있는 토대를 마련할 수 있다. 먼저 이야기하지만, 국내 도서 중 이만한 책이 없다. 이 책은 정말 누구나 읽을 수 있을 정..
[개발자의 서재] 싯다르타 - 영원한 방랑자
[개발자의 서재] 싯다르타 - 영원한 방랑자
2023.09.14이번 작품은 으로 유명한 헤르만 헤세의 다. 헤르만 헤세의 작품에 가장 큰 특징은 그의 작품에서 일관적으로 등장하는 ‘단일성(Einheit)’이다. 인간의 다양성, 갈등, 양면성이 ‘단일성’으로 귀결되는 그의 독특한 깨달음은 그의 작품에서 일관적으로 등장하며 핵심을 이룬다. 1919년에 출간된 에서는 단일성의 인지를, 1922년에 출간된 에게서는 단일성의 완성을, 이후 그의 후기 작품인 1943년에 출간된 에서는 단일성의 해체를 작품에 담았다. 이러한 변화는 자신과 세상의 갈등 속에서 평화를 찾고자 하는 헤세의 끊임없는 시도라고 볼 수 있다. 단일성 그렇다면 단일성은 무엇일까? 내 나름의 해답을 적어보겠다. 세상의 모든 것은 다양성, 양면성을 가지고 있다. 쉽게 인간은 나쁜 것도 생각할 수 있고, 좋은 ..