소프트웨어 개발의 어려움은 늘 경계에 있다. 아니라고 생각한다면 우리가 자주 겪는 문제를 떠올려보자. 어느 날 기능이 안된다는 보고가 들어왔다. 급하게 코드와 확인했지만 바뀐 것은 없고 테스트도 다 통과했다. 급하게 로그를 열고 원인을 추적해보니…
코덱스를 활용한 바이브한 개발이 무엇인지 궁금하다면 바로 이 책에서 정답을 얻으세요 이 책은 골든래빗 출판사의 요청으로 추천평을 쓰게 되면서 읽게 됐다. 사실 내가 쓴 추천평의 원문은 다음과 같다. LLM과 바이브 코딩이 등장하며 소프트웨어 개발…
들어가며 웹이나 앱을 사용하다 보면 자연스럽게 눈길을 끄는 애니메이션을 마주할 때가 있다. 애니메이션은 재미를 더할 뿐 아니라 사용자의 이해를 돕고 인터랙션의 결과를 명확히 전달하며 브랜드의 개성을 표현하는 등 중요한 역할을 한다. 그런데 이런…
들어가며 비즈니스에 있어 시간은 매우 중요한 요소다. 사람들은 예측 가능한 것을 원하며 시간은 비즈니스적 관점에서 '특정한 시간에 무언가를 한다'라는 중요한 계약로서 작용한다. 예를 들어, 예약 시작 시간이나 무언가에 대한 만료일, 기한 같은…
들어가며 소프트웨어는 다양한 데이터를 다루는 복잡한 시스템이다. 이러한 데이터는 단순히 숫자나 문자열로 표현되는 것이 아니라, 그 자체로 의미를 가지며, 이를 잘 이해하고 활용하는 것이 소프트웨어 개발의 핵심이다. 이번 글에서는 이러한 데이터의…
많은 회사가 개발자 생산성을 높이기 위해 DX(개발자 경험)에 투자합니다. 하지만 가끔은 '멋진 것'만 하려 하거나, 규칙을 만드는 데 집중하다가 DX의 본질을 놓치기도 합니다. 저는 DX의 본질은 "모르는 것을 모르도록, 아는 것을 알 수 있도록…
오늘은 에이전트 이야기를 해보려고 합니다. 모두가 항상 말하듯 개발자의 역할은 '소프트웨어로 문제를 해결하는 것'입니다. 소프트웨어가 빠르게 발전하고, 산업도 커지며 많은 문제가 해결됐지만 여전히 해결해야 할 문제는 많습니다. 최근에는 AI가…
우리는 함수형, 객체지향, 명령형 패러다임을 제공하는 멀티패러다임 언어를 효율적으로 활용하는 법을 배워야 한다. - 마이크 루키데스 좋은 계기로 마플코퍼레이션 CTO 유인동님이 집필하신 멀티패러다임 프로그래밍을 먼저 읽어보고 추천사까지 남길 수…
들어가며 고객이 장바구니에 상품 X를 담고 있을 때 첫 구매자거나 최근 한 달 내 구매 금액이 10만 원 이상이면서 등급이 VIP라면 쿠폰을 노출해주세요 위와 같이 복잡한 조건을 평가해야 한다면 어떻게 구현 해야할까? 요구사항이 많지 않을 때는…
들어가며 모델링 시리즈의 첫 번째 주제는 뷰모델(ViewModel)이다. 흔히 모델링이라 한다면 도메인 정보를 추상화하거나 데이터베이스 스키마를 설계하는 것을 떠올리기 쉽다. 하지만 모델링이란 방법은 다양한 곳에서 사용할 수 있다. 이러한 사실을…
들어가며 개발자는 다양한 업무를 수행한다. 하지만 그중에서 가장 중요한 일은 무엇일까? 필자는 모델링이라 생각한다. 필자는 꽤 다양한 서비스와 시스템을 설계해왔고, 그 과정에서 많은 문제를 겪기도 했다. 개발자가 많은 시간을 소요하는 문제는 어떤…
항상 떠들썩한 IT 업계에서 최근 가장 뜨거운 화두는 단연코 MCP(Model Context Protocol)라고 할 수 있습니다. 이 MCP에 대해서는 놀랍다, 재밌다 같은 감상부터 생산성 증대, 새로운 방식의 툴링 등 긍정적인 의견과 그냥…
요즘은 정말 AI 열풍 그 자체입니다. 저 또한 최근에는 코딩, 학습, 글쓰기, 리서치 등 다양한 영역에서 AI를 적극적으로 이용하고 있습니다. 지금 이 시점의 GPT, Claude와 같은 툴은 정말 대단합니다. 오랫동안 자료 조사가 필요했던 내용을…
좋은 기회로 지난 달 출판된 대규모 리액트 웹 앱 개발에 인생 첫 추천사를 남길 수 있었습니다. 개발자에게 있어 대규모라는 키워드는 굉장히 자극적입니다. 그리고 리액트에 대한 깊은 이해, 잘 사용할 수 있는 방법을 제시하는 책은 많지만 리액트…
취업이나 이직을 준비하는 개발자에게 코딩 테스트는 언제나 마음 한 구석에 남아있는 고민거리라 할 수 있다. 많은 이들이 코딩 테스트 무용론을 이야기하지만 안타깝게도 많은 회사가 아직까지도 코딩 테스트를 통해 개발자를 선별한다. 향후 코딩 테스트의…
저는 패러다임에 대한 이야기를 좋아합니다. 같은 문제를 두고 여러 사상을 통한 해결 방법을 비교하고, 그 중에서 가장 적합한 방법을 찾아내는 것이 재미있기 때문입니다. 그런 관점에서 데이터 지향 프로그래밍이라는 책이 출판됐을 때 굉장히…
현대적인 언어 중 하나인 Kotlin은 JetBrains에서 만든 언어로, Java와 100% 호환되는 언어이다. 그렇기 때문에 Kotlin은 Android 개발에서도 사용되고 있으며, 서버 개발에서도 사용되고 있다. JVM 생태계 뿐만 아니라…
컴퓨터 과학의 모든 문제는 다른 수준의 간접 계층으로 해결할 수 있다 - David J. Wheeler ... 그러나 그러면 또 다른 문제가 생기는 것이 일반적이다. - Butler W. Lampson 개발자는 추상과 구조에 대한 이야기를 많이 할수…
미래 학자이자 SF 소설의 거장 아서 C. 클라크는 충분히 발달한 과학 기술은 마법과 구별할 수 없다라는 유명한 말을 남겼다. 이 말이 사실임을 증명하듯 현대 사회의 기술은 다양한 놀라움을 선사한다. 그 중에서도 Shazam이나 Soundhound와…
새는 알에서 나오기 위해 투쟁한다. 알은 세계이다. 태어나려고 하는 자는 누구든 하나의 세계를 파괴하지 않으면 안된다. - 헤르만 헤세, 데미안 소프트웨어 개발은 많은 부분이 애매모호하다는 생각을 해본 적이 있는가? 무엇을 만들어야 하는지, 어떤…
글 잘 쓰고 싶은 사람이라면 무조건 읽어 봤다는 바로 그 책. 최근 들어 많은 글을 쓰고 있습니다. 글 쓰는 것이 재밌기도 하고 어느 정도 익숙해지니 쓰는 속도도 빨라졌습니다. 그러다 보니 잘 쓰고 싶다는 욕심이 생기기 시작합니다. 그래서 이번…
이 책은... 매우 얇다. 그것이 장점이자 단점이다. 장점은 빠르게 읽을 수 있다는 것이고, 단점은 내용이 얕다는 것이다. 이 책을 집필한 켄트 백은 의심할 여지 없이 소프트웨어 업계에선 유명한 인물이다. 그의 저서인 익스트림 프로그래밍과 테스트…
연구에 따르면 우리의 몸은 새로운 정보를 받아들일 때 도파민을 생성한다고 합니다. 맛있는 음식을 먹거나 여행지에 갔을 때처럼 내가 모르는 무언가를 알게 됐을 때 또한 쾌락을 느낀다는 것이죠. 과거엔 흔히 지식욕이라고도 불렀던 이 현상은 정보를 쉽게…
프롬프트 엔지니어링은 더 많은 사람이 프로그래머가 될 수 있는 세상이 온 것을 의미합니다. "이제는 AI가 가치있다는 것을 인정하지 않을 수 없다. 실제로 ChatGPT와 Copilot을 사용하면서 AI가 얼마나 빠르게 발전하고 있는지를 느낄 수…
“남해의 임금을 숙이라 하고, 북해의 임금을 홀이라 하며, 중앙의 임금을 혼돈(渾沌)이라 한다. 숙과 홀이 때마침 혼돈의 땅에서 만났는데, 혼돈이 매우 융숭하게 그들을 대접했으므로, 숙과 홀은 혼돈의 은혜에 보답할 것을 논의해 말하기를, 사람은 모두…
일에 대한 많은 방법론과 프레임워크가 피드백 루프를 강조합니다. 피드백 루프란 한 이터레이션을 거친 후 회고를 통해 고쳐야 할 점을 찾고 다음엔 더 잘해보자 같은 거라 볼 수 있습니다. 개선할 수 있는 기회를 만들어준다는 측면에서 피드백 루프는…
많은 개발자가 코드에 주석을 남기는 걸 좋아하지 않습니다. 개발자 사이에서 “주석이 아닌 코드로 설명할 수 있어야 제대로 된 코드다”라는 믿음은 살짝 과할 정도로 강합니다. 어쩌면 이 글의 제목에서부터 불편하신 분도 있을 것 같습니다. 저는 주석을…
개발자들이 삽질한다는 얘기를 들어보셨나요? 실제로 보면 열심히 뭔가를 하는데 왜 ‘삽질’이라고 부를까요? 제가 느끼기에 개발자는 전반적으로 자조적인 성향이 짙습니다. 아마 출시한 제품에 대한 책임감 때문이 아닐까 싶습니다. 기능에 문제가 생기면 결국…
유명 소설 ‘플랜더스의 개’ 주인공 네로는 마지막 순간 그토록 좋아했던 루벤스의 그림 앞에서 숨을 거둡니다. 이야기에서 언급되는 루벤스는 살짝 신성시 될 정도로 거장인 화가입니다. 재밌는 사실은 루벤스가 반박의 여지가 없는 거장이지만 대량 생산으로도…
Ruby에서는 Boolean을 반환하는 메서드를 작성할 때 empty?처럼 이름 마지막에 ?를 붙이는 암묵적인 규칙이 있습니다. 아무래도 다른 언어에선 볼 수 없는 특이한 규칙이라 할 수 있습니다. 만약 다른 언어를 주로 사용하다가 이런 규칙을…
개발자의 체력과 건강 저하는 나이보다는 얼마나 일했는가에 더 큰 영향을 받는 것 같습니다. 오랫동안 앉아서 일하기에 허리, 목 건강이 안 좋아지는 것도 있지만 커리어가 깊어질수록 커지는 욕심 때문인지 최근에는 집중력을 많이 잃었다고 느낍니다. 주변…
말(言)이라는 한자를 풀어내면 머리(亠)로 두 번(二) 생각하고 입(口)으로 내보내라는 뜻이라고 합니다. 글을 쓰는 것 또한 말처럼 조심해야 한다고 생각합니다.나의 잘못된 지식이 전파되는 것은 많은 사람에게 피해를 입힐 수 있고 바로잡는 것은 더…
아무것도 몰라도 타입 검사를 그냥 '사용'할 수는 있다. 하지만 타입 검사를 제대로 '활용'하는 것은 전혀 다른 문제다. 왜 타입이 중요한가? 아무래도 타입은 프로그래밍을 할 때 가장 많이 고려하는 요소라고 할 수 있다. 우리는 프로그래밍 언어가…
정교하게 구성된 생명체도 기계가 될 수 있고, 체계적으로 작동하는 소프트웨어도 기계가 될 수 있으며, 이 책에서도 언급하듯이 인간으로 구성된 소셜 플랫폼조차 기계가 될 수 있다. 지능은 인간의 전유물이 아니다 지능이란 무엇인가? 인간을 제외한 동물은…
최근 몇 년 사이에 브라우저 혹은 OS에서 제공하는 비밀 관리 시스템을 이용하는 사람이 많아졌다. 혹은 1Password 같은 애플리케이션을 이용하는 사람도 적지 않다. 이런 제품을 사용한다면 한 번쯤 정말 안전한 게 맞을까?라는 의심을 해본 적이…
디버깅, 개발자라면 누구라도 한 번쯤 겪었고 앞으로도 꾸준히 겪어야 할 피할 수 없는 숙명이다. 우리는 간단한 논리적 실수부터, 도저히 원인을 알 수 없어 며칠 동안 머리를 싸매는 버그를 해결해왔다. 도대체 우리는 왜 계속해서 디버깅을 해야 하는…
필자는 쓸데없지만 재밌는 프로그램을 만들면서 공부하는 것을 좋아한다. 최근에 정신적으로 에너지가 바닥나고 있다는 것을 느껴 작년에 재미로 만들었던 Jazzlang과 같이 정신적 에너지를 채워줄만한 재미를 느끼고 싶었다. 그래서 무언가 할만한 것을…
이전에 Polymorphic한 React 컴포넌트 만들기라는 글을 통해 컴포넌트에 다형성을 적용하는 방법을 소개했었다. 해당 글에서는 as 속성을 이용하여 컴포넌트를 변형시키는 것을 소개하는 데 이를 이용하면 하나의 컴포넌트로 여러…
타입은 개발자에게 친숙하면서도 어색할 수 있는 개념이다. 특히 정적 타입 언어를 사용한다면 타입은 땔래야 땔 수 없는 존재다. 타입은 가끔씩 귀찮게 굴 때도 있지만 개발자에게 막강한 무기가 될 수 있다. 타입은 함수와 데이터가 준수해야 하는 엄격한…
🚨 이 자료는 개발자의 소프트 스킬이 아닌 하드 스킬을 이야기합니다. 또한, 성장을 강요하는 자료도 아닙니다. 이 자료는 개발자가 성장하기 위한 방법론을 이야기합니다. 기술을 다루는 다른 직업과 마찬가지로 개발자 또한 끊임없는 학습을 해야 한다.…
Beauty is mute deception. - Theophrastos 기원전, 테오프라스토스라는 사람은 '아름다움은 말 없는 속임수'라는 말을 했다. 언뜻보면 아름다움이란 사람들마다 비슷하게 생각하는 것 같으면서도 각자 생각하는 기준이 다르다.…
자료구조란 전기 신호의 나열로 이루어진 컴퓨터 세계의 데이터를 다차원으로 표현하는 것이라 볼 수 있다. 우리는 보통 전산화를 할 때 현상을 표현하기 위한 데이터 구조를 정의하고 이를 이용해 알고리즘을 구현한다. 그렇지만 우리가 일반적으로 학생 때…
프로그램을 개발함에 있어 에러와 사이드 이펙트(부수 효과)를 처리하는 것은 필연적이다. 아무리 꼼꼼하게 코드를 작성해도 생각하지 못한 문제는 존재하며 특히나 지속해서 발전하는 프로그램은 기술 부채와 함께 끊임없이 새로운 문제가 발생한다. 문제가…
현대인의 삶은 너무나도 힘들다. 알아야할 정보는 너무나도 많고 항상 새로운 도전을 요구받는다. 그렇게 끝이 보이지 않는 일과 막막한 미래를 보면 쉽게 무력감에 휩싸인다. 필자도 마찬가지다. 미래에 대한 불확실성과 언제까지 노력을 해야할까를 생각하면…
흔히 훌륭한 아키텍처는 개발자와 소프트웨어 품질에 많은 도움을 준다고 한다. 대체 아키텍처란 뭘까? 많은 개발자가 아키텍처란 그저 개발자가 일을 하는 방법이라고 말하고 필자 또한 이 말에 동의한다. 다시 한 번 일을 하는 방법이란 말에 대해…
잉여 코딩이라는 말을 들어본 적 있는가? 잉여 코딩은 돈 버는데엔 쓸모없지만 취미로 즐겁게 코딩하는 것을 의미한다. 최근 몇 년 사이엔 대부분 업무와 연관이 있는 코딩만 했는데 마침 비는 시간이 생겨 정말 오랜만에 업무와 전혀 무관한 잉여 코딩을…
소프트웨어 장인 정신은 소프트웨어 개발의 프로페셔널리즘에 대한 것이다. 굉장한 책이다. 내가 처음 일을 시작할 때 듣고싶었던 말, 일을 시작하는 누군가에게 해주고 싶은 말, 내가 겪었던 일, 지금 겪고있는 일 모든 것이 이 책에 담겨있다. 아마도…
The Nature of Software Development라는 책은 애자일 소프트웨어 개발 선언에 참여하고 익스트림 프로그래밍 방법론 창시에 기여한 론 제프리스가 집필한 책이다. 특이하게도 제목이 번역되지 않은 상태로 출판되었는데 그냥 소프트웨어…
들어가기에 앞서 Polymorphism은 한국어로 다형성이라고 부르는데, 여러 개의 형태를 가진다라는 의미를 가진 그리스어에서 유래된 단어다. 그럼 이 글의 제목에 포함된 Polymorphic은 다형의 혹은 다양한 형태의 등으로 표현할 수 있을…
코드 잘짜기 위해서 뇌 과학까지 알아야하다니!! 평소 이 책에 대해서 극찬하는 글을 자주봤는데 기대했던 것 이상으로 좋은 책이었다. 평소에 올바른 코드란 무엇인지에 대해서 정말 많은 고민을 했는데 이 책을 접한건 큰 행운이라 생각된다. 읽기 전엔…
글로벌 서비를 개발할 때 제일 중요한 것은 시간을 관리하는 것이라 말해도 무방하다. 그만큼 시간을 잘 다루는 것이 중요한 능력이며, 시간을 잘못 다루면 큰 문제가 발생할 수 있다. 그렇기에 이번 기회에 시간을 제대로 다루는 방법에 대해 알아보고자…
소프트웨어 개발 중 설계에서 가장 중요한 것은 모듈화와 추상화 두 가지라고 할 수 있다. 웹 프론트엔드 업계는 이미 React, Vue.js, Angular와 같은 오픈소스 프레임워크를 통해 끝을 달리는 추상화와 모듈화를 보여주고 있다. 특히 모듈화…
이번 포스팅에선 아주 중요하지만 프로그래밍 교육 과정에서 크게 다루지 않는 보안에 대해 이야기 해보려고 한다. 최근엔 프레임워크나 라이브러리 차원에서 잘 막아주기 때문에 큰 언급없이 넘어가는 경우가 많지만 소프트웨어 개발자는 꼭 보안 전문가가…
사내에서 MongoDB를 잘 쓰기위한 스터디를 하게되어 이번 기회에 관련 자료를 정리하기로 했다. MongoDB가 왜 필요한지, 더 잘사용하기 위해서 무엇이 필요한지를 중심으로 처음 MongoDB를 사용할 때 도움이 될 만한 내용으로 정리했다.…
나는 매사 불성실하고 게으름이 많은 성격이다. 하지 않아도 된다면 안 하는 귀찮음이 몸에 배어있는 모범적이지 못한 성격이다. 이 성격으로 인해 얼마나 많은 것을 놓치고 살았는지 이제 와선 아쉽고 씁쓸하지만, 끝끝내 못 고치는 걸 보니 이것이 내…