오류를 재현할 수 없나요?

“제 컴퓨터에서는 동작하는데요?”라는 것은 웃음거리가 될 수 있지만, 개발자 세계에서 많이 퍼진 태도를 의미하기도 한다. 우리는 책임을 지고 문제를 찾아야 한다. 그렇다면 버그가 발생하면 어떻게 해야 할까? 일반적으로는 두 가지 접근 방식이 있다. 처음에는 문제가 발생하는 환경을 복제해야 한다. 운영 스테이지가 아닌 QA, Dev 등 비슷한 환경이 구성되어 있어야 한다. 아니면 원격 디버깅을 사용해야 한다. 프로젝트를 진행하면서 사용자가 보고한 버그를 재현하려고 했던 경험이 있다. 환경을 비슷하게 맞췄지만 버그가 재현되지 않았다. 결국에는 사용자와 커뮤니케이션을 하면서 네트워크 환경이 다르다는 것을 인지하고 네...

더보기

RabbitMQ와 Kafka를 사용하는 경우

어제 테크 미팅 때, RabbitMQ와 Kafka에 대한 이야기가 나왔다. 본 글에서는 두 가지 기술을 더 광범위한 관점에서 생각해보고, 두 시스템이 제공하는 기능에 초점을 맞췄다. 이를 통해 어떤 시스템을 언제 사용하는게 좋은지 결정을 내리는데 도움이 되었으면 좋겠다. 웹 검색을 했을 때, 일부 글은 RabbitMQ보다 Kafka가 더 뛰어나다고 주장하고, 다른 글에서는 그 반대인 경우가 많다. 그렇기 때문에 서로 혼선이 오는 것 같다. RabbitMQ와 Kafka 중 무엇을 선택할지에 대한 결정은 프로젝트의 요구 사항에 따라 달라지며, 적절한 시나리오에서 둘 다 사용해 본 경우에만 비교가 가능하다는 것을 ...

더보기

개발자와 AI의 관계

개발자들은 종종 AI에 회의적이다. 하지만 AI 도구의 잠재력은 좋아하든 싫어하든 더 빠른 릴리즈와 더 나은 제품을 만들 수 있게 도와준다. Stack Overflow에서 2024년에 진행한 개발자 설문 조사에 의하면 개발자의 43%만 AI 도구의 결과를 신뢰했다. 반대 의견은 AI가 복잡한 작업을 처리하는데 어렵다고 말했다. 이런 상황에도 ChatGPT는 코딩의 새로운 시대를 열었다고 생각한다. 더 이상 Google, Stackoverflow에서 코딩에 대해 질문이나 답을 할 필요가 없다. 이번에 Cursor AI IDE를 이용하자고 함께 일하는 동료들에게 제안했다. 이유는 일부 개발자들이 Copilot ...

더보기

풀스택 개발자, 현실적으로 가능한가?

본 글은 지극히 개인적인 관점이라는 점을 서두에 언급한다. 과거 동안 “풀스택 개발자”라는 용어가 인기를 끌었고, 동료들에게도 원하는 이상향이 “풀스택”이다. “풀스택”은 현대 애플리케이션 개발 시 모든 측면을 처리하는데 능숙한 프로그래머를 지칭한다. 즉, 풀스택 개발자는 프론트엔드(사용자 인터페이스)와 백엔드(서버)을 모두 개발 할 수 있는 전문가이다. 두 영역을 작업할 수 있는 능력은 엄청나다. 이 능력을 유지하기 위해서는 기술이 계속 발전하는 상황에서 최신 도구 및 프레임워크, 패턴, 아키텍처 그리고 다양한 기술들을 얻기위한 지속적인 학습이 필요하다. 이것 외에 클라우드, DevOps 혹은 AI 서비스...

더보기

Linux Atomic desktops

지난 주말 오래된 노트북에 Fedora Atomic Desktop을 설치했다. 이제까지 사용했던 리눅스와는 생소한 개념을 갖고 있기에 여기에 글을 정리한다. Linux Atomic Desktops이란? Linux Atomic Desktops은 Fedora의 Atomic Host를 통한 Atomic update 개념을 활용한다. 이 아이디어는 데스크톱을 구성하는 최소한의 것들을 변경 불가능한 것으로 취급하여 애플리케이션 업데이트 및 변경 사항을 필요한 경우 쉽게 롤백할 수 있는 개념을 적용한 것이다. 이 접근 방식은 시스템 중단을 최소화하고 시스템 수정에 대한 안정성을 강하게 만든다. 이 개념은 약 10년전 A...

더보기

비기술 관리자의 함정

dzone에 재미있는 글(https://dzone.com/articles/pitfalls-of-a-non-technical-manager)이 올라와서 여기에 정리한다. 이 글은 소프트웨어 산업 분야에서 일하는 비기술 관리자 즉, 개발팀을 리드하는 비기술 관리자를 대상으로 한다. 기술자와 비기술자 사이에는 엄청난 의사 소통의 차이가 있다. 전문가 집단에서는 이 둘은 “다른 세계”라고 표현한다. 두 세계 사이를 아래 이미지가 잘 설명하고 있다. 대략 내용은 이렇다. 관리자: “사용자가 사진을 찍으면 앱에서 위치가 국립공원인지 확인해야 합니다.” 개발자: “GIS 조회는 매우 쉬워요. 조금의 시간만 주세요...

더보기

린스타트업

Business Design 수업을 듣고 있다. 2번째 모듈 수업에서는 Lean startup method에 대해서 배우고 있다. 린 스타트업 방법론은 2000년대 초반 Steve Blank가 고객 개발 방법론을 도입하면서 시작되었다. 고객 중심 접근 방식을 강조한 Blank는 스타트업 초기 단계에서 잠재 고객을 참여시키는 행위가 매우 중요하다고 얘기한다. 소비자 중심 접근 방식은 제품을 출시할 때 많이 사용되는 방법이다. 새롭거나 파괴적인 혁신을 창출하는 것이 아니라 소비자가 원하는 것을 제공하고 기존 요구 사항을 충족시키는 것에 더 가깝다고 언급한다. 새로운 제품이나 서비스를 만들때, 과거에는 “우리가 만...

더보기

당신은 받는 사람인가요. 아니면, 주는 사람인가요?

일반적인 사람들은 세 가지 입장 중 하나를 기본으로 삼으면서 일을 한다. “받는 사람”, “맞추는 사람” 그리고 “주는 사람”. 받는 사람은 항상 다른 사람보다 자신의 이익을 우선시하고 줄 때는 그 이익을 증진시키려는 의도를 지니고 있다. 맞추는 사람은 상호성을 믿기에 누군가 가려운 곳을 긁어주면, 본인도 그 사람의 등을 긁어준다. 반면에 주는 사람은 다른 사람에 초점을 맞추기 때문에 도와주면 보답할 것이라고 믿는다. 프로젝트를 진행할 때, 이런 입장차가 눈에 보이게 된다. 중요한 것은 문제보다는 태도와 동기이다. 주는 사람과 맞추는 사람은 최상의 결과에 중점을 둔 협업 작업에 적합하다. 반면, 받는 사...

더보기