일상/ZB

[제로베이스 백엔드 스쿨 11기] 7. 가치는 스스로 만들어내는 것

Sigfriede 2023. 4. 3. 17:13

  한 달 남짓한 시간이 지나고, 내가 얻은 것은 처참한 성적표뿐이었다. 지난 21일부터 Pre 코딩테스트 기간이 시작되었다.  사실 잘 모르겠다. 어떤 문제는 금세 풀어버리는가 하면, 어떤 문제는 쉬운 문제임에도 불구하고(답안을 보고 쉬운 난이도임을 알아차렸다) 정작 문제를 풀 당시에는 도저히 생각나지 않는 것이다.

  내가 생각하기에 백엔드 신입 개발자가 쌓아야 하는 대표적인 역량 두 가지가 있다. 문해력과 분석력이다. 이는 자료구조, 알고리즘, 코딩테스트를 아울러 사용된다.

  문해력이란 표현은 다소 추상적인 감이 있지만, 결론적으로 개발은 '원하는 기능'을 제작하는 행위이다. 아무리 멋진 프로그램이라도 상대방이 원하지 않는 기능이라면 없느니만 못한 것이다. 추가적인 기능은 기존에 요구하던 기능이 정상적으로 작동한 이후에 고려해 볼 일이다. 이는 코딩테스트 문제를 풀면서 깨달았다. 제법 괜찮은 코드였고, 코드 자체에 이상은 없었지만 문제의 요지를 제대로 파악하지 못해서 통과할 수 없는 코드가 있었다. 위에서 언급한 분석력과 비슷한 것 아닌가요?라고 할 수도 있지만 이 글에서의 문해력은 의사소통 능력과 일맥상통한 쓰임이다. 상대방이 원하는 기능을 재빨리 알아차리는 것이다. 하지만 코딩테스트에서는 주로 문제를 풀어야 하므로 문해력에 가깝지 않을까…해서 문해력이라는 단어를 사용했다.

  문제를 풀고 정답을 맞추는 것도 중요하지만 풀이과정 역시 중요하다. 이 글에서의 분석력은 왜 이런 식을 세웠는지 이해하고 파악하는 능력이다. 예를 들어, 문제의 패턴을 외워버려서 무지성으로 코드를 작성하는 경우가 있다. 이런 코드는 만약 동작한다고 하더라도 삐걱삐걱 실행되는 것이 필연적이다. 이는 언제 무너질지 모르는 구름다리 위를 걷는 것과 같다. 개발자라면 제시된 문제를 어떤 식으로 풀어나갈지에 대한 소신이 필요하다고 생각한다. 개발자는 단순히 코드를 작성하는 사람이 아닌, 코드로 비즈니스적 가치를 창출하고 증명하는 사람이기 때문이다.

  분석력은 자신이 작성한 코드에만 국한되는 말은 아니다. 개발은 구글이 없으면 할 수 없다는 우스갯소리가 있을 정도로, 타인의 코드를 참고할 일이 많다. 참고한 코드를 자신이 필요로하는 혹은 효율적인 방식으로 개조하는 것 역시 능력의 일부이다. 기존 코드를 바꾸는 데에는 자료구조와 알고리즘의 지식을 요한다.

  아직 나는 대부분의 역량이 부족할 테지만, 아직 성장하는 단계이니만큼 어쩔 수 없는 일인지 모르겠다. 그러나 이 단계를 영영 당연시 여기는 것은 결국 성장을 가로막는다. 부족한 부분을 메꾸기 위해 부단히 노력해야겠다.