개발자란 무엇일까?

이학성·2022년 2월 1일
5
post-thumbnail
post-custom-banner

개발자는 통상 새로운 물건을 만들거나 새로운 생각을 내놓는 사람을 뜻한다.

사람들이 얘기하는 개발자는 보통 소프트웨어 개발 작업에 종사하는 사람들이다. 소프트웨어 설계 및 코딩부터 프로젝트 관리 업무를 수행한다.

나는 왜 개발자가 되고 싶을까?

나는 하고싶은 게 많았다. 세상에는 매력적인 직업들이 많았고, 나는 무엇을 해야 할지 고민이었다. 하지만 정작 내가 정확히 무엇을 잘할 수 있는지, 어떤 직업이 내 적성에 맞는지 몰랐다. 때문에 대학교에 진학해서도 내 적성에 맞는 전공을 찾지 못했고 전과를 두번이나 했다. 지속적으로 여러 직업들을 살펴보다 결국 나는 나를 돌이켜 보기 위해 군대에 들어갔다. 군대는 생각을 정리할 수 있는 시간이 많아서 좋았다. 내가 진짜 좋아하는 게 뭔지 무엇을 잘할 수 있는지 생각해보았다.

나는 '성장 가능성’과 ‘서비스에 대한 관심’에 흥미가 있었기에 IT 업계가 빠르게 변화하는 시대에 알맞은 업계라고 생각했고, 4차 산업의 영향을 많이 받는 이 사회의 변화에 힘쓰고 싶었다. 그래서 관련 업종을 찾아보기 시작했고 이후 나는 IT업계에 관련된 책들을 닥치는 대로 사서 읽었다. 그러다가 나는 사람들이 매일 쓰는 서비스를 만드는 것에 재미를 느낀다는 사실을 깨달았고 개발자라는 직업에 흥미가 생겼다.

개발자에 대한 환상

개발자에 대한 의견들은 긍정적인 말들이 많았다. 소위 '네카라쿠배당토' 같은 IT 대기업이나 유니콘 스타트업들의 개발자의 모습을 상상하며 자유로운 문화, 좋은 워라벨, 노마드코더 같은 대접을 받으며 높은 연봉을 받을 수 있다는 달콤한 말들이 많았고 분명 실제로 그런 대우를 받는 개발자들도 존재한다. 하지만 그들은 소수이고 좋은 대접을 받기 위해선 '끊임없는 노력'과 '어느 정도의 재능'이 필요하다. 예를 들어, 공무원 시험은 한 번 합격만 하면 별다른 노력을 하지 않아도 정년과 최소한의 승진은 보장된다. 하지만 개발자들은 한 번 취업을 한다고 끝나는 경우는 드물다. 즉 개발자는 그렇게 매력적이지 않을 수 있다.

그럼에도 불구하고 나는 개발자가 되고 싶은가?

그렇다. 나는 개발자라는 직업이 좋다. 매일 쓰는 서비스를 만들고 사람들에게 도움을 줄 수 있는 직업이고 이만큼 마음편하고 자유롭게 직장 생활을 할 수 있는 직업은 드물다고 생각한다. 또한 평생 나의 지적 유희를 함께 할 수 있다.

내가 되고 싶은 개발자

요즘 시내를 걷다 보면 코딩 학원이 정말 많이 보인다. 고졸도 비전공자도 단기간 코딩을 배우면 바로 실무에 투입될 수 있게 가르쳐준다고 선전한다. 실제로 다녀보진 않았지만 소수를 제외한 대부분 개발자가 아닌 양산형 코더가 된다는 말이 많았다. 나는 단순히 눈에 보이기에만 그럴싸한 것들을 찍어내는 양산형 코더보단 좋은 개발자가 되고 싶다.

좋은 개발자란 무엇일까?

변화적응하는 능력
확장대응하는 능력
기술부채최소화하는 능력

개인적으로 '좋은 개발자'란 단순히 제품을 개발하는 것을 넘어 실제로 서비스를 배포 및 운영하고 고객의 피드백에 따라 코드를 개선하고 리팩토링 하며 끊임없이 공부하고 언어의 패러다임과 설계 관점 및 패턴을 고민하며 성장하는 개발자가 끝까지 살아남는 '좋은 개발자'라고 생각한다.

좋은 개발자가 되기 위해서는 무엇을 해야 할까?

우선 기본을 충실히 해야 한다. 정말 많은 사람들이 강조하는 사항이다. 컴퓨터 동작 구조 및 네트워크 등 기본 CS지식을 탄탄하게 가지고 있어야 앞으로 개발자로서 살아남을 수 있다고 생각한다. 단순히 지식을 암기하는 것이 아닌 내가 누군가에게 설명할 수 있는 수준으로 이해하고 정리할 수 있어야 한다. 방대한 양의 지식들을 소화하려면 성실함은 필수다. 꾸준히 하루에 하나라도 지식들을 정리하고 이해하면 언젠가 내게 큰 도움이 될 거라 믿는다.

개발자의 기본은 프로젝트다. 내가 아무리 많은 것을 배우더라도 실제로 사용해본 경험이 없다면 어느 누구도 그 사실을 알지 못한다. 주의할 점은 단순히 보여주기 식 의미없이 완성만 하고 방치하는 프로젝트가 아닌 내가 배운 지식을 활용해서 실제 서비스를 배포하여 운영하며 개선하고 발전시키는 정도의 유의미한 프로젝트를 해야 한다는 것이다.

  • 서비스를 공개적으로 배포했는가?
  • 서비스를 운영하며 유저의 피드백에 따라 성능을 개선하거나 신규 기능을 추가했는가?
  • 버그와 개선사항을 정리하여 쌓인 이슈들을 체계적으로 관리했는가?
  • 지속적으로 코드를 리펙토링하고 디자인패턴을 고민했는가?
  • 반복적인 작업(수정 및 배포)들을 자동화해보았는가?
  • 프레임워크의 기능으로는 구현할 수 없는 것을 직접 구현해보았는가?
  • 코드의 성능을 위해 분석 및 테스트를 해보았는가?
  • 효율적인 협업을 위해 고민해보았는가?

프로젝트를 하는데 꼭 필요할 것 같은 질문들을 정리해 보았다.
나는 여러 의미 없는 토이프로젝트 보다 하나의 프로젝트를 운영하고 고도화 해가는 경험이 개발자로서 더 의미있다고 생각한다.
내가 경쟁력 있는 좋은 개발자가 되기 위해서는 위에 질문들을 만족시킬 수 있는 프로젝트를 하는 것이 중요하다.
어느정도 코딩 실력이 갖춰지면 실제로 사람들이 필요로 하거나 꾸준히 사용할 수 있는 서비스를 만들어 볼 것이다.

결론

코딩을 시작한지 얼마되지 않아 고민과 걱정이 많아 내가 되고 싶은 개발자로서의 방향성을 확립할 수 있게 글로 정리해보았다. 모든 것은 내 개인적인 의견이고 정답은 정해져 있지 않다고 생각한다. 인생에 요행은 없다. 꾸준히 노력하고 정진하면 원하는 걸 성취할 수 있을 것이다.

profile
좋은 개발자가 되기 위해
post-custom-banner

0개의 댓글