인공지능은 소프트웨어 개발을 쉽게 만든 게 아니라, 어려운 부분을 더 어렵게 만들었다
·
카테고리 없음
최근 공감되는 글을 발견했다.AI를 사용해서 복잡한 요구사항도 구현이 가능해졌다.문제는 직접 작성한 코드가 아니여서인지, AI가 작성해준 코드를 읽는게 힘들어졌다.신규 기능 구현뿐만 아니라 기존 코드 분석도 AI한테 시켜서 내놓은 결과물과 코드를 번갈아 가면서 읽는다.위 글대로 두뇌 풀가동 계속 유지하니 쉽게 지쳐서 작업 효율이 떨어진 느낌이다. 기존에 100만큼의 일을 하던걸 AI를 통해 80을 해결하니 200,300만큼의 일이 생겼고 그만큼의 일을 내가 이해하고 설명하려고 하니 그런 것 같다. 이제는 코딩 능력보다 에이전트가 참고하는 md 문서와 세션을 관리하는게 중요한 능력이 될것으로 보이는게 자명하다.내가 할수 있는건 도메인에 대한 지식을 기르는 것이다. 그리고, AI가 만들어준 문서를 해석하는..
새벽 3시에 죽은 서버를 오전에야 알았다 — Uptime Kuma를 GCP 밖에 둔 이유
·
카테고리 없음
새벽 3시에 죽은 서버를 오전에야 알았다새벽 3시에 GCP에서 메일이 왔는데, 프로젝트가 shutdown됐다는 내용이었다.오전에 경영지원팀이 "앱 접근이 안 된다"는 고객 이메일을 사내 채팅에 올렸고 그제야 알았다. 처음엔 Cloud Run 일부 인스턴스가 순단된 거라고 생각했다. 콘솔을 열었더니 인스턴스가 전부 0개였다. 순단이 아니라 전멸이었다. Cloud Run도, Cloud SQL도, Redis도 다 내려가 있었다. 배경은 결제 분쟁이었다. 몇천만 원. 구글 측은 협의 중엔 서비스에 이상 없을 거라고 했는데 믿는 내가 바보였다. 최종 청구일이 지나자 바로 shutdown됐다. 결제하고 서비스가 다시 뜨는 데 30분 걸렸다. 총 다운타임은 7~8시간. 복구에 쓴 시간은 30분이고, 나머지는 전부 모..
타나토노트 책 간단 후기
·
카테고리 없음
최근에 베르나르 베르베르 작가의 타나토노트 책을 읽었습니다.줄거리는 죽음 이후의 세계에 대한 호기심과 궁금함을 해소하기 위해 영계 탐사대를 꾸려 모험하는 책 입니다.마치 신대륙, 미지의 우주를 탐험하는 것처럼요.영계의 끝에서는 대천사들에게 심판을 받습니다.현생에서의 삶에 대한 선업과 악업을 평가 받아 기준점 이하면 다시 인간으로 환생하고 넘는다면 순수한 정령 혹은 천사로 될 수 있습니다. 점수가 높으면 좋은 가정 환경, 편안한 죽음, 뛰어난 능력치(신체 능력, 성품, 지성 등)를 부여 받습니다.현재의 내 모습이 전생에 의한 결과라고 생각하니 뿌듯함 보단 아쉬움이 컸습니다. 최근 부터 운동에 빠져들게 되었는데, 전생에 무슨 죄를 저질렀는지 강도를 높이게 되면 다치는 일이 잦아 졌습니다. 처음엔 우울해 졌지..
[ai skill] AI가 만들어준 복잡한 코드를 이해하는데 도움을 주는 스킬(explain-diff-html, Humanize KR)
·
카테고리 없음
필자는 코드 작성하는 시간이 제로에 속한다.요구사항을 작성하고, 코드를 읽고, 수정 요청하고, 읽기를 반복 한다.AI한테 검증의 역할도 부여하지만, 이해되지 않는 코드는 배포하면 안된다고 생각하여 코드를 반드시 읽는다.내가 작성한 코드는 맥락을 알고 있으나, 팀원이 작성한 코드는 결과물이 만들어지는 과정을 알 수 없어 완벽히 이해하는데 시간이 걸린다. https://youtu.be/81EIe6h7mnw?si=SDf98iiZG1D5W4nb 해당 영상에서 explain-diff-html 스킬을 발견 했다.AI가 작성한 복잡한 코드를 인간이 이해하는데 도움을 주는 스킬이다.코드 설명서 (Code Explainer - 'explain diff')단순한 코드 변경 사항(diff)의 나열이 아니라, 코드의 작동 배..
개발 공부 방법을 input에서 output으로 바꾸기
·
기타
지금까지 개발 공부를 잘못된 방법으로 하고 있었구나란 생각이 들었다.실무에서 잘 사용하고 있는데 막상 원리를 설명하라고 하면 못한다. 지금까지는 책/인강을 눈으로 보면서 노션에 책/수업자료 원문을 작성했다. 정리한 내용을 보니 모든 내용이 중요해 보여서 원문의 70% 이상을 적고 있었다. 읽고 볼때는 이해가 되는 것 같아서 넘기지만 시간이 지나면 까먹는다. 생각해보면 책이나 인강 수업 자료를 그대로 적을 필요가 없다. 필요할때 책을 펼치거나 인강을 다시 켜서 보면 된다.멘토링 받을때 생각해보면 멘토님들은 자료를 보면서 가르쳐주지 않는다. 어떤것을 가르쳐야 겠다는 단어, 키워드만 숙지하고 머릿속에 있는 지식을 끄집어 내서 설명해 주신다. 머릿속에 입력만 하고 출력 위주의 학습을 하지 않아 지식이 휘발되고 ..
노인과 바다를 읽고
·
독서
1. 줄거리 요약쿠바의 늙은 어부 산티아고는 84일째 빈손이다. 그를 따르던 소년 마놀린도 부모 손에 다른 배로 옮겨갔다. 85일째 아침, 노인은 혼자 평소보다 먼 바다까지 나가고 거기서 배보다 큰 청새치를 건다. 이틀 넘게 줄을 쥐고 버틴 끝에 결국 고기를 잡지만, 뱃전에 묶어 돌아오는 길에 피 냄새를 맡은 상어 떼가 달려든다. 노인은 작살이며 칼이며 손에 잡히는 걸 다 써서 싸우고, 항구에 닿았을 때 남은 건 뼈뿐이다. 그는 돛대를 메고 언덕을 올라 오두막에 쓰러져 잠들고, 소년이 곁에 앉는다.2. 문제 제기 — 소년은 왜 노인을 따르는가줄거리만 보면 헛수고 이야기다. 그런데 84일 동안 한 마리도 못 잡아 동네에서 운 나쁜 늙은이 취급을 받는 이 사람을, 소년은 왜 따를까.배운 게 있어서라고 하면 ..
[독서] "똑똑한 사람은 어떻게 생각하고 질문하는가?" 기록 (프롤로그 ~ 2장)
·
독서
『똑똑한 사람은 어떻게 생각하고 질문하는가』 독서 기록 (프롤로그 ~ 2장)이시한 지음, 북플레저 (2024) 책을 읽으며 인상 깊었던 내용을 기록하고 AI를 사용해서 정돈한 글입니다.프롤로그 — 다시, 질문의 시대로이제 우리는 답을 찾을 때, 지식과 지식이라는 점을 연결해 인사이트라는 선을 대신 그어주는 생성형 AI를 만나게 되었다. 질문만 잘하면 인사이트 있는 답을 매우 짧은 시간 안에 얻을 수 있는 시대가 된 것이다. 하지만 AI에게 질문을 잘하기 위해서는 정보, 그리고 그 정보에 의미를 부여하는 인사이트가 먼저 있어야 한다. 그래서 우리는 질문하는 방법을 배우고, 연습하고, 발전시켜야 한다. 능동적으로 생각하기 위해서는 질문의 방향을 자신의 내면으로 돌리는 것이 효과적이다. AI에게만 질문할 것이..
도파민 수용체와 집중력 — 뇌과학으로 풀어본 집중력 향상법
·
카테고리 없음
도파민 수용체와 집중력 — 뇌과학으로 풀어본 집중력 향상법"카톡, 인스타, 유튜브... 집중이 1시간도 못 갑니다." 한 번쯤 겪어본 문제. 단순한 의지력 부족이 아니라, 우리 뇌의 도파민 시스템이 짧고 강한 자극에 적응되어 버린 결과입니다. 이 글에서는 도파민 수용체 메커니즘부터 실전 회복 전략까지, 신경과학 근거 기반으로 정리합니다.1. 왜 집중이 1시간도 못 갈까?1.1 도파민의 진짜 역할 — '쾌락'이 아니라 '추구'도파민은 흔히 "쾌감 호르몬"으로 알려져 있지만, 실제로는 무언가를 예측하고 추구하게 만드는 동기 신경전달물질입니다. 보상이 들어왔을 때보다 보상을 예측할 때 더 크게 분비됩니다. 카톡 알림음이 울리는 순간 "누구지?"하며 폰을 드는 그 행동이 정확히 이 메커니즘이에요.1.2 가변 보..
Service가 다른 개념의 Finder를 직접 쓰면 안 되는 거 아닌가?
·
카테고리 없음
개요커머스 프로젝트에서 주문 기능을 만들다가 팀원한테 질문을 받았다. "OrderService에서 ProductFinder를 직접 쓰고 있는데, 이거 Assembler에서 ProductService로 조회해서 넘겨주는 게 맞지 않아요?"합리적인 의문이다. 우리 프로젝트 규칙상 Assembler는 Service만 참조할 수 있고, 타 개념의 데이터가 필요하면 Assembler에서 조합하는 게 기본이니까. 그런데 결론부터 말하면, 이 경우는 Assembler로 빼면 오히려 구조가 나빠진다.왜 그런지 두 가지 사례를 비교해보면 감이 온다. 프로젝트의 계층 구조Presentation Layer (Controller, Assembler) ↓Business Layer (*Service) ↓Log..
유저 소유 쿠폰의 낙관적 락 실패, 재시도해야 할까?
·
카테고리 없음
배경결제 승인 처리 중 유저가 보유한 쿠폰을 사용 처리하는 흐름이 있다. 쿠폰 엔티티에는 @Version 기반 낙관적 락이 적용되어 있고, OptimisticLockingFailureException 발생 시 재시도 없이 예외를 던져 결제를 실패시킨다. @Transactional fun use(ownedCouponId: Long) { try { val ownedCoupon = ownedCouponRepository.findByIdOrNull(ownedCouponId) ?: throw CoreException(ErrorType.OWNED_COUPON_INVALID) ownedCoupon.use() } catch (e: Optimi..