주니어 개발자의 고민: 같은 내용, 다른 코드
좋은 코드란 무엇일까에 대한 고민
고민의 시작
좋은 코드란 무엇일까? 개발 공부를 시작한 이후로 늘 하게 되는 고민이다. 개발이라는 분야에 처음 들어왔을 때는 단순히 '개발자가 되는 것'이 목표였는데, 개발자가 되고 난 후에는 '좋은 코드를 짜는 개발자가 되는 것'이 목표가 되었다. 시간이 흐르고 연차가 차면 무조건 좋은 코드를 짤 수 있게 될까? 꼭 그렇지만은 않을 것 같다😢 매일 의미 없는 코드만 작성한다면 시간이 흘러도 개발 실력에는 발전이 없을 것 같다는 두려움이 있다. 그렇다면 어떻게 해야 의미 있는 코드를 작성할 수 있을까? 이제 막 개발 분야에 발을 들인 주니어로서 좋은 코드를 위해 어떤 연습을 해야 할지 고민이 되었다.
같은 내용, 다른 코드
내가 이런 고민을 하게 된 계기는 다음과 같다. 프로젝트를 진행하던 중, 임의의 값(Dummy Data)를 가진 배열이 필요한 상황이 생겼다. 배열의 길이는 10이고, 그 값들은 0~30 사이의 임의의 값이면 된다. 이런 조건이 주어졌을 때 코드를 어떻게 작성해야 할까? 라는 질문에서 시작된 나의 고민의 과정을 이야기 해보려 한다.
내가 가장 처음에 작성한 코드는 다음과 같다.
const DUMMY_DATA = [12, 19, 27, 22, 15, 20, 17, 8, 19, 13];
// 생략
{DUMMY_DATA.map((item: number, index:number) => (
<div key={index}>{item}</div>
))}
임의의 값을 하드코딩한 배열을 생성하고 map과 <div>로 해당 값들을 나타내는 코드를 작성하였다. 하지만... 임의의 값, 그러니까 중요하지 않은 값을 변수로 굳이 생성해야 할 필요가 있을까? 게다가 만약 주어진 배열의 길이 이것보다 훨씬 길어진다면? 만약 배열의 길이가 100으로 주어지면 100개의 값 하나하나 다 입력할 건가?? 라는 생각이 들었다. 그닥 효율적이지 않은 코드라는 판단에 다른 방법을 고민해보았고, 코드를 다시 작성했다.
{Array.from({ length: 10 }).map((_, index) => (
<div key={index}>{Math.floor(Math.random() * 31)}</div>
))}
새롭게 작성한 코드는 배열의 길이도 쉽게 조절 가능하고, 불필요한 변수를 생성하지 않는다. 하드코딩을 하지 않고 더미데이터를 생성하고 있다. 위에서 작성한 코드와 같은 내용(배열의 길이가 10이고, 값들의 범위가 0~30일 것)을 담고 있지만 표현 방식은 다르다. 같은 내용을 담고 있는 서로 다른 두 코드 중, 무엇이 더 괜찮은 코드인가?
다른 개발자 분들께 이 코드를 보여드리며 뭐가 더 나은지 여쭈어 보았다. 그리고 아래 코드가 더 깔끔하다는 피드백을 받았다. 더미데이터는 안에 들어있는 값이 얼마인지가 중요하지는 않지만 배열의 길이, 즉 값의 개수는 중요하니까! (보통 더미데이터는 데이터가 없을 때 임시로 표현하기 위해 사용하니까, 값 자체보다는 값의 개수가 더 중요하다.) 그런 차원에서 봤을 때, 배열의 길이는 구체적으로 지정하면서 불필요한 변수는 생성하지 않고 Array 메서드를 잘 활용한 점이 더 좋다는 반응을 얻었다.
같은 내용을 담고 있지만 표현 방식이 다른 코드라니🥴 여지껏 한 가지 방식으로만 코드를 작성하던 나는 주변의 좋은 피드백을 계기로 '더 좋은 코드란 무엇일까?'라는 질문을 스스로에게 던질 수 있었다.
좋은 코드를 위해 무엇을 연습해야 할까
좋은 코드란 뭘까? 라는 질문에 대한 나의 답은, 나는 아직 주니어 개발자이기 때문에 좋은 코드가 뭔지 판단할 시야가 갖춰지지 않았다는 것이다. 이건 시간이 흐르고 내가 연차가 쌓여야 갖출 수 있는 역량이라고 생각한다. 코드가 좋다 / 나쁘다를 구분짓는 요소가 너무 다양하기 때문이다. 가독성이 좋은 코드, 혹은 복잡한 로직을 간단하게 처리한 코드도 물론 중요하지만 사실 현업에서 일하다 보면 정해진 기한 내에 맞춰서 기능을 완성해올 수 있는 코드 또한 중요하다. 코드를 완벽하게 짜야겠다!! 라는 생각에 갇혀서 제품 출시 기간 내로 기능을 완성하지 못하는 경우가 생겨버리면 안 되니까. 결국, 가독성과 성능이 좋지만 정해진 기간 내에 완성할 수 있는, 그 3박자를 잘 맞출 줄 아는 코드를 작성하는 방법을 찾아나가고 알아나가는 것이 나의 과제라고 생각한다.
그래서 좋은 코드를 구분할 줄 모르는 나에게 가장 필요한 것은 '의미 있는 코드를 많이 짜보는 것'이다. 의미 있는 코드라는 것은 작동되기만 하면되지~ 라고 넘기지 말고, 혹시 이 코드를 다른 방식으로 표현하는 방법은 없는지를 충분히 고민한 뒤에 나오는 코드라고 생각한다. 그 고민의 결과로 나온 코드가 객관적으로 괜찮은지 아닌지는 내가 판단할 수 없겠지만, 충분한 고민 끝에 나온 코드를 주변의 좋은 개발자 분들에게 피드백 받고 시야를 넓혀나가는 것이 내가 주니어 개발자로서 키우고 싶은 역량이다.
개발을 하며 늘 이런 저런 고민이 많지만, 잘 해결해가며 성장해보자. 💪
'개발 이야기 > 개발 고민' 카테고리의 다른 글
[고민] 기술 블로그에는 어떤 글을 작성해야 할까 (0) | 2023.06.08 |
---|