새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
TIL) 사람이 코드를 읽는 다는 것
📌 2025-03-02 TIL
1. 오늘의 학습 주제
- AI가 대체 하지 못하는 영역은 어디인가
- 코드를 읽는 것은 결국은 사람이라는 것
오늘의 학습 내용
최근 개인 프로젝트나 개발 학습에 구글링을 하지 않게 된지 1년이 넘은 듯합니다.
처음 개발을 시작할 때에는 구글링이나 스택오버플로우를 참조하며 오류를 찾고 코드 개선을 했었습니다.
지금은 브라우저을 열고 AI에게 질문을 하고 응답을 참고하여 코드를 작성하게 되었습니다.
단순 반복된 코드 뿐만 아니라 복잡한 비즈니스 로직의 예외 케이스를 물어보면서 많이 의존한다는 것을 느꼈습니다. 이렇게 개발을 공부하는 것이 정말 나에게 도움이 되는 것인가? AI에게 질문해서 바로 나오는 대답인 단순 지식을 공부하는 것이 맞는 것인가 생각이 드는 요즘입니다.
AI를 어디까지 사용하는가
예전에 명확했던 준 전문가와 전문가의 경계성이 AI를 통해 흐려지고 있다고 생각합니다. 단순 지식, 단순 작업, 수준있는 전문 지식, 일정 시간의 학습이 필요한 영역도 프롬프트에 어떻게 질문하는지에 따라 결과는 나오게 된다고 생각합니다
그렇지만 AI가 해결해 줄 수 없는 것은 경험에서 나오는 지식, 통찰력, 상위 설계라고 생각이 듭니다.
판단력, 결정력, 경험에서 나오는 시야를 기르는 것이 더 많이 중요해진 시대가 된거 같습니다.
클린 코드를 하는 것이 중요한게 아니라
클린 코드를 하면서 우리 비즈니스 로직중 무엇이 어떻게 변화할 것인지에 대한 안목과 대비를 해야하며
단순히 테스트 코드를 작성하는 게 아닌 왜 검증을 해야하는지에 대한 판단력과 결정을 스스로 생각하는 힘이 필요한거같습니다.
개발자의 코드 품질을 떨어뜨린다.
깃클리어는 AI 어시스턴트가 작성하는 코드 유형에 어떠한 영향을 미치는지 알아보는데 초점을 맞췄습니다. 연구 결과 중복된 코드가 급증하고, 코드 재사용이 감소했습니다. 코드 커밋에서 복사/붙여넣기된 줄의 빈도수가 늘었다고 합니다.
또한, 5개 이상 중복된 줄이 있는 코드 블록의 빈도가 전년보다 8배 증가했다고 합니다.
코드 중복은 코드 품질의 저하를 보여줍니다.
동일한 코드가 한 곳에서 업데이트 돼도 다른 곳에서 업데이트 되지 않을 때 결함이 발생하는 위험이 있습니다.
개발자는 결국 재사용 가능한 모듈을 만들어 결함이 감소하게 하는 것이 하나의 능력이 될 수 있다고 합니다.
개발자의 일에너지가 새로운 기능을 개발하는 데 사용하는게 아니라 결함 수정이 개발자의 일상적 주요 책임이 될 수 있다고 합니다.
이 뉴스를 보면서 제가 작성한 코드를 되돌아보면 도움을 받은 코드들을 재사용했던건 단순한 변환 코드였고 그외에 코드는 결국 사람이 작성하며 유지보수하기 편하도록 수정햇던 기억이 납니다. LLM은 이제 개발자에게 빠질 수 없는 하나의 도구라고 생각이 들지만 문제 해결을 위해 개발자가 스스로 생각하는 힘을 모두 AI에게 맡기는 것은 스스로에게 독이 되는듯 해서 주의해야겠습니다.
개발자의 역할이 단순히 코드를 작성하는 것에서 소프트웨어의 구조를 이해하고 작동하게 하는 아키텍처 조율로 바뀌는 듯하다. 당장 AI 코딩 어시스턴트를 사용해 코더로서 역할을 수행한다 해도 프로그래밍과 소프트웨어 지식을 부지런히 공부하지 않으면 경쟁에서 뒤쳐진다.
다시 마음 속에 새겨보는 날이 되었습니다.
코드를 읽는 사람은 사람이라는 것
AI가 발전한다고 하더라도 코드를 읽고 재사용하며, 유지보수를 하는 것은 개발자입니다.
사람이 코드를 읽으며 이해를 하기 위해서는 뇌를 사용하게 됩니다.
뇌는 작업 기억 공간이라는 평균 3개~5개의 단기 기억 메모리를 사용한다고 합니다(집중의 뇌과학 참조)
코드를 작성할 때에도 사람의 사고 흐름에 맞게 작성하는 것이 중요하며 불필요한 정보들을 가져와 작업 기억 공간을 차지하지 않도록 하는 것이 클린 코드의 목표라고 생각됩니다.
추상화 레벨
추상화 레벨을 맞추자는 것은 메서드 내 로직을 읽을 때 해당 메서드의 추상화 단계를 유지하도록 하자는 의미입니다.
void 멤버쉽을_결제한다(int 회원id){
Member 회원을_조회한다();
void 회원을_검증한다(Member);
// 메서드 추상화 사이에 저레벨 로직이 포함되는 경우
if(Member.status == 1){
Member.
}
void 멤버십_이용기간을_변경한다(Member);
}
댓글남기기