-
1. 질문하고 이해하고 설계하기
AI랑 뭘 시작하면 일단 던지고 대충 만들어봐~ 하게 되는데, 일단 그렇게 프로토타입해서 동작을 확인하고 그렇게 만들기로 했으면, 실제 구현이 어떻게 동작하는건지 한번쯤 파고파고 들어가보는게 참 도움이 많이 되는 것 같다. 그렇게 물어물어 보다보면 어? 이건 이렇게 하면 안될 것 같은데 라든지, 이건 이런 방법이 더 좋지 않겠어? 하면서 더 좋은 설계를 생각하게 된다.
트레이드오프를 물어보는것도 아주 좋은데, AI는 나쁜점에 대해서는 잘 말해주지 않는다. 그래서 이렇게 구현했을 때 발생할 수 있는 문제점이나 다른 대안과의 트레이드오프 등에 대해서도 물어본다면 그 사이에서 더 좋은 설계를 선택할 수 있을것이라고 생각한다.
결국 코드베이스 자체가 가장 강력한 하네싱이라고 생각하고, 그렇기 때문에 우리는 처음 설계/구현부터 잘 해놔야하고, 그렇기때문에 실제 설계/구현 방법에 대해서도 끊임없이 질문하고 탐구하는 자세가 필요하다.
-
2. 린트를 잘 활용하기
요즘 여기저기서 가장 많이 나오는 말이 린트를 활용하라는것 같은데 린트는 정말 최고다. 특정 부분이 잘 지켜지지 않는다면, 그걸 결정론적으로 검사하는 커스텀 린트를 추가하면 잘 동작한다. 물론 커스텀 린트도 테스트와 같아서 너무 구현 specific하게 간다면 낡게 될 수 있는 위험이 있어서 이것도 잘 설계하고 확인해야 하지만, 값싸게 가장 효율적으로 확률을 높일 수 있는 방법은 커스텀 린트가 맞는 것 같다.
그리고 커스텀 린트시에 단순히 틀렸다고 말해주는것이 아니라 message에 어떻게 수정하라고 적어줄수도 있다. 혹은 린트 사용을 기록해서 어떤 린트를 계속해서 틀리는지 등을 보면 거꾸로 그 부분에 대한 프롬프트를 더 강화해볼수도 있다.
- 또한 FSD도 코드를 잘 유지하게 하는 방법 중 하나인 것 같다. 단순히 FSD를 도입해서 좋다기보다는, 의존성의 방향을 강제해서 (이 부분에서도 커스텀 린트가 들어갈 수 있고) 모듈을 독립적으로 관리함으로써 응집도는 높고 결합도는 낮은 코드를 만들 수 있다. 그게 꼭 FSD일 필요는 없지만 좋은 방법 중 하나인 것 같다. (AI와 함께하는 무너진 FSD 살리기)
-
결국 LLM은 확률싸움이다.
그리고 그 확률을 높이기 위해서 (확률을 100%에 가깝게 높이기 위해서, 그러니까 보다 결정론에 가깝게 만들기 위해서) 여러가지 엔지니어링적인 방법들을 도입해서 검증을 설계하는게 개발자들이 하는 일이다.
- 이해하고 질문해서 처음부터 세심하게 설계하고
- 결정론적인 검증 루프 (가장 간단하면서도 효과적인 lint)를 통해 부족한 부분들을 조금씩 보완해 나간다면
조금은 나은 루프가 만들어 질 수 있지 않을까
- 조금 오프토픽이긴 하지만, 구조화된 아웃풋을 내놓도록 감싸주는 언어로 시작한 BAML이나, 구조화된 아웃풋을 내놓는 LLM인 jev 모두 AI를 결정론적인 엔지니어링의 영역으로 끌어오려는 개발자들의 시도라고 보면 그것 또한 흥미롭다
- next 팀이 1500개 이슈를 닫은 방법
- 이슈를 닫을 이유 + 이슈를 닫지 않을 이유를 격리해서 리뷰해서 둘 다 확률이 80% 넘을때만 닫도록 했고, 결과물은 구조화된 데이터로 반환하도록 했다
- Notion ratcheting system
- notion 팀이 공개한 eslint-seatbelt라는 도구에 대한 아티클인데, 린트를 바로 error로 처리할 순 없고, 그렇다고 warning으로만 처리하자니 강제성이 없으니까, 파일마다 현재 해당 린트의 error 갯수를 기록해서 그 갯수 이상으로는 나오지 못하도록 점진적으로 줄여나가는 시스템
- lint에 suppresions라는게 있긴 한데, 강제성이 없어서 따로 훅이나 CI를 설정해줘야하는 부분이라 나는 그냥 eslint-seatbelt를 사용하고 있다.
오깨들
토스 기술 블로그, 토스 테크AI가 팀 규칙을 지키도록 하는 방법Coding Agent를 위한 StylepackX (formerly Twitter)shadcn (@shadcn) on Xhttps://x.com/shadcn/status/2099534231114314145?s=46linkedin.comAI 시대의 개발자는 검증을 설계한다 (2) 구조를 검증하는 Lint'아 저 컴포넌트에다 저런 조회 로직 추가하면 안되는데..REDBEANAI와 함께하는 무너진 FSD 살리기 (ESLint, skills, agents, hooks, CI , 자동화, claude code)안녕하세요, 프론트엔드 엔지니어 이홍빈입니다.이번 글에서는 AI를 활용하여 무너진 FSD 구조를 살린 경험에 대해 공유하려고 합니다.결론 요약AI harnessing + Guardrail 조합으로 핵심 도메인의 FSD 의존성 위반 -91%, 순환 참조 -90%를 달성했습니다.CI 자동화로 가드레일을 구성하여 지속 가능한 시스템을 구축했습니다.팀원과 함께 문제의식을 갖고, 시각화하고 공동 작업할 수 있는 기반을 마련하였습니다.지표시작 (Apr)결과 (May)감소율총 린트 에러20113-93.5%Boundary 위반14913-91.3%순환 참조313-90.3% [HTML 리포트를 활용한 과정 시각화]배경최근 프론트엔드에서 모듈을 도메인을 기반으로 설계하고, 의존성에 따라 계층화하는 FSD(Feature-sl..GeekNewsJev - 문장 대신 판단과 확률을 반환하는 AI 모델 | GeekNewsTypeSafe AI가 분류, 라우팅, 점수화와 조건 분기처럼 소프트웨어 안에서 반복되는 판단을 자동화하는 모델 Jev를 얼리 액세스로 공개함 문장을 자유롭게 생성하는 대신 미리 정한 형식의 값과 확률을 반환하며, 여러 판단 결과를 한 번의 요청에서 병렬로 출력함 각 답에 신뢰도와 불…YouTube[한영자막] 슬롭에는 슬롭으로 맞섭니다 — Vaibhav Gupta, BoundaryTech BridgeBoundaryBAMLThe programming language for agents.typesafe.aiIntroducing System One Models & Jev - TypeSafe AI BlogTypeSafe AI is an AI lab building machine-native intelligence infrastructure for automation, designed to make decisions within software. Try our first System One Model, Jev, in early access.nextjs.orgHow we closed 1,500 GitHub issues in one monthHow the Next.js team used an agent to research old reports and work through the issue backlog.NotionCustom ESLint ratcheting: how Notion modernizes code without slowing down developmentDiscover how Notion's innovative ratcheting system with custom ESLint rules gradually modernizes code, eliminates technical debt, and maintains high quality standards without sacrificing development speed or overwhelming engineersGitHubGitHub - justjake/eslint-seatbelt: Gradually tighten ESLint rules in your codebaseGradually tighten ESLint rules in your codebase. Contribute to justjake/eslint-seatbelt development by creating an account on GitHub.eslint.orgBulk Suppressions - ESLint - Pluggable JavaScript Linterhttps://eslint.org/docs/latest/use/suppressions
