본문 바로가기
ai

Claude로 서비스 A-Z 만들어보기 (1주차 회고: 병목)

by CodingMasterLSW 2026. 5. 3.

약 일주일동안 클로드를 사용하면서 느낀 점이 많네요...! 


나만의 작업 방식 

프런트엔드

- 프런트 코드 규칙은 잘 모르니깐, 그냥 토스의 Frontend Fundamentals 지침서 넣고 지키라고 했음

- 프런트 코드는 주로 superpower라는 plugin을 사용해 작업을 진행했음.

- 프런트의 코드 레벨은 내가 개입을 안 했음. 대신에 명확한 행위를 할 수 있도록 문서화를 꼼꼼하게 진행했음.

- 큰 설계는 내가 진행 했음. ex) SSR이 필요 없어서 Next.js를 사용 안 했다던지

 

한계점

- superpower 도입으로 인해 많은 시간과 토큰이 소모됌

 

superpower란? 

- 코딩 에이전트가 설계부터 구현, 테스트, 리뷰, 마무리까지 체계적으로 수행하도록 돕는 개발 방법론

 

brainstorming - using-git-worktrees - writing-plans - subagent-driven-development 또는 executing-plans - test-driven-development - requesting-code-review - finishing-a-development-branch 의 개발 사이클을 가져갑니다.

 

간단히 설명하자면, 1) 질문을 통해 아이디어를 다듬고, 2) 계획을 세우고 3) TDD로 개발을 하고 4) 코드 리뷰를 한다 정도로 이해해주시면 될 것 같아요. 자세한 내용은 github에 나와있슴다.

https://github.com/obra/superpowers

 

GitHub - obra/superpowers: An agentic skills framework & software development methodology that works.

An agentic skills framework & software development methodology that works. - obra/superpowers

github.com

 

단순한 작업들은 superpower 말고 그냥 plan만 세운 후 작업하는 방식도 생각해보는 중. (토큰이랑 시간을 너무 많이 씀...)

 

백엔드

- 설계 + 코드리뷰를 전부 함

- 웬만하면 코드를 직접 작성하지는 않음. 내가 코드를 고쳐도 테스트 수정하려면 어차피 AI 시켜야해서 그냥 리팩토링까지 시키는듯

- 리팩토링 결과물보고 구체적으로 지시를 하는편

- 설계와 코드를 전부 따라감 (이해 못 하면 안 넘어감)


코드 리뷰로 인한 백엔드 병목

- Clean Code, 객체지향이 몸에 배여있다보니깐 자잘한걸 계속 수정을 하고 있음

- 개념적인 객체의 책임에 대해서 집착을 하고 있음... ex) corss-domain 참조라던지

- YANGI 원칙을 지키려고 하지만, 나도 모르게 리팩토링을 계속 함

- 좋은 코드를 작성하기 위해서 병목이 생김

 

예를 들면 음...

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;
    private final UserStatsRepository userStatsRepository;
    
    @Transactional
    public User register(final Provider provider,final String providerUserId,final String nickname) {
        if (nickname == null || nickname.isBlank()) {
            throw new BadRequestException(ErrorCode.NICKNAME_REQUIRED, "신규 가입에는 nickname이 필요합니다.");
        }
        final Name name = new Name(nickname);
        if (userRepository.existsByName(name)) {
            throw new NicknameConflictException(nickname);
        }
        final User user = userRepository.save(
               User.createFromOAuth(provider, providerUserId, name, null)
        );
        userStatsRepository.save(UserStats.create(user.getId()));
        return user;
    }

 

그냥 넘어갈 수 있는 코드인데,  corss-domain repository 직접 참조니깐 이벤트로 분리하고 넘어가고 있네요ㅎ

또 다른 예시로는 CQRS를 도입해서 Command Query를 분리할 생각을 한다거나, 일급컬렉션을 도입해서 객체의 책임을 덜어준다거나, Domain Service로 Application Layer의 책임을 줄인다거나, Serivce끼리 참조를 하면 안 되니 Facade 계층에서 오케스트레이션을 한다거나 등등... 유지보수하기 쉽고 좋은 코드를 작성하려고 하고 있습니다.

 

클린코드, 객체지향적인 코드를 작성하는 이유는 추후에 유지보수를 쉽게 하기 위해서 라고 생각하고 있었습니다. 개인적인 생각이지만 일주일간 클로드와 함께 작업해본 느낌은, 유지보수도 클로드한테 시킬 수 있을 것 같은데? 였습니다. 그러다보니, 이렇게 리팩토링 하는게 자기 만족이 아닐까? 라는 생각이 들더라고요. 더 나아가 내가 학습한 클린코드, 객체지향적인 코드가 더이상 유의미할까? 라는 생각도 들었습니다.

 

내가 백엔드 개발자이기 때문에 오히려 병목이 발생할 수도 있겠다 라는 생각도 들었어요. 비개발자였으면 이미 프로토타입 완성하지 않았을까? 라는 생각도 있습니다. 

 

물론, 정말 클로드가 유지보수를 잘해줄지는 저도 모릅니다. 나중에 문제 생겼을 때 프런트 부분을 잘 못 고치면 아직 제가 배운 클린코드가 유의미한거겠죠? 아직은 정답을 못 찾았습니다. (근데 AI가 너무 빠르게 발전하고 있어서,,, 개인적으로는 유지보수 잘 해줄 것 같다고 생각해요)

 


느낀점

- 아주 어마무시합니다. 개인적인 체감으로는, 4명의 팀원이 두 달동안 만들 수 있는걸 일주일만에 혼자서 만든 느낌이에요. 퀄리티도 훌륭합니다. 목표하는 MVP의 70%를 만들었어요.

 

- 오히려 비개발자가 기존 개발자보다 더 잘 할 수 있지 않을까? 라는 생각도 가지고 있습니다. 기존 개발자들은 고민이 많은 반면, 비개발자들은 많은 고민 없이 빠르게 할 수 있을 것 같거든요.

 

- 어려운 기능 개발을 할 때 쉽게 버그를 고친건 리팩토링을 잘해서인가? 라는 생각이 들면서, 동시에 대충 짜고 AI한테 고쳐달라고 해도 해줄 것 같다는 생각 또한 드네요. 아직은 생각 정리가 안 됐네요...

 

- 삶이 토큰 재설정 시간에 맞춰지는게 피곤하긴 하네요... ex) 반드시 토큰을 다 쓰고 자야지! 이런거??