개발자들의 꿈의 기업 '네카라쿠배(네이버, 카카오, 라인, 쿠팡, 배달의민족')! 이 기업들은 개발자들을 채용하기 위한 공통적인 관문으로 코딩 테스트를 실시하는데, 개발자들은 이를 준비하고자 프로그래머스, 백준 등 코딩 테스트 준비 사이트를 접하게 된다. 하지만 한 번도 코딩 테스트를 접해 보지 않았다면 수많은 알고리즘과 자료 구조 사이에서 어디서부터 어떻게 시작해야 할지 막막하기만 할 것이다. 구글 코리아의 소프트웨어 엔지니어인 저자는 코딩 테스트를 접해 보지 않았어도 어려움 없이 준비할 수 있도록 『취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 : 자바 편』을 집필하였다. 이 책을 통해 그동안 쌓아온 노하우를 공개하며 확실한 가이드라인을 제시하고자 한다.
독자분들에게 저자님에 대해 소개 부탁드립니다.
현재 구글 코리아에서 소프트웨어 엔지니어로 근무 중인 김현이입니다. 구글 코리아에서는 서치 팀에서 사용자들이 구글에서 검색하면 쿼리에 따라 페이지에 내용을 보여주는 기능을 개발하고 있습니다. 주로 'Java', 'C++', 'Typescript'를 사용하여 개발을 진행합니다. 구글 코리아는 한국에 있지만, 미국이나 다른 나라에 있는 구글 오피스들에 있는 분들과도 같이 일을 합니다. 그런 만큼 안타깝게도 제가 참여하여 개발한 기능들은 미국과 영어권에 우선 출시가 되어 아직 한국에서는 출시되지 않았습니다.
저는 고등학교 때 프로그래밍을 처음 접했습니다. 스마트폰이 출시될 때라 접근성이 좋은 안드로이드 애플리케이션을 개발하고 싶어 무작정 독학하기 시작했습니다. 그렇게 고등학교 내내 하나의 프로젝트에 매달리며 대학을 컴퓨터 공학과로 진학하기로 결정했고, 소프트웨어학과에 입학하게 되었습니다. 학교를 다니면서 삼성전자와 라인 스튜디오에서 인턴을 하였고, 우연히 구글 코리아에서 진행한 채용 설명회에 가보게 되면서 취업까지 할 수 있었습니다.
개발자가 되기 위해 코딩 테스트가 정말 필요한가요?
요즈음에는 거의 모든 IT기업이 코딩 테스트를 실시합니다. 하지만 많은 분이 코딩 테스트가 정말로 필요한 것인지 의문을 갖는 것이 사실입니다. 요구하는 기능을 모두 잘 구현할 수 있고, 직무에 많이 사용되는 프레임워크나 라이브러리도 잘 다룰 수 있는데, 코딩 테스트 때문에 채용의 기회를 잃는다는 것은 분명 안타까운 일입니다. 실무에서 알고리즘이나 자료 구조를 잘 사용하지도 않는데 코딩 테스트를 시행하는 것이 잘 이해되지 않을 수 있습니다.
하지만 코딩 테스트는 단순히 알고리즘과 자료 구조를 얼마나 알고 있는지를 검사하기 위한 목적이 아닙니다. 제한된 시간 안에 문제를 해결하게 함으로써, 구현해야 하는 문제를 얼마나 잘 이해하는지, 생각을 코드로 얼마나 잘 옮기는지, 여러 예외 상황을 떠올릴 수 있고 적절히 처리할 수 있는지 등 개발자가 가져야 할 여러 능력을 평가하게 됩니다. 이 과정에서 알고리즘과 자료 구조를 가미함으로써 같은 기능을 구현하더라도, 효율적으로 구현할 수 있는 능력까지 평가할 수 있는 매우 중요한 시험입니다.
이 코딩 테스트를 통해 기업들은 지원자가 지닌 개발자로서의 다방면을 평가할 수 있습니다. 따라서 개발자를 준비한다면 코딩 테스트는 반드시 거쳐야 할 관문입니다. 하지만 코딩 테스트가 어렵다고 걱정할 필요는 없습니다. 코딩 테스트는 알고리즘과 자료 구조만을 위한 시험이 아닌 만큼, 출제되는 알고리즘과 자료 구조는 그렇게 많지 않고, 한 번 익숙해진다면 어려움 없이 준비해 나갈 수 있을 것입니다.
『취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 : 자바 편』은 다른 코딩 테스트 책과 어떤 점이 다른가요?
세상에는 정말 다양한 알고리즘과 자료 구조가 있습니다. 또, 간단한 자료 구조라고 하더라도 그 원리를 파헤칠수록 점점 깊이 있는 내용이 등장합니다. 이처럼 어렵고 복잡한 내용들은 코딩 테스트를 준비할 때 실제로 도움이 되지 않는 경우가 많습니다. 이는 마치 고등학교 수학 시험을 준비해야 하는데, 어려운 정수론이나 미분 방정식 등을 얘기하는 것과 같고, 결국 코딩 테스트를 준비하는 분들이 직접 코딩 테스트에 나올 것 같은 내용을 걸러 들을 수밖에 없게 합니다. 이렇게 되면 학습 효율도 떨어지고, 내가 공부한 내용이 과연 코딩 테스트에 나올 만한 중요한 내용인가에 대한 확신도 없어 자신감 또한 없어지게 될 것입니다.
『취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 : 자바 편』에서는 어려운 이야기를 빼고 코딩 테스트에 꼭 필요한 내용만 담아서, 코딩 테스트를 처음 접하는 분들이 최대한 이해하기 쉽도록 구성하기 위해 노력했습니다. 이 책을 가이드로 삼으면서 공부하면 코딩 테스트 대비에 대한 스트레스를 줄이실 수 있을 것이라 기대합니다.
자바의 문법은 어느 정도 익힌 것 같은데, 코딩 테스트를 준비해도 될까요?
언어를 익혔다면 이제는 언어를 활용할 차례입니다. 언어를 활용하여 프로그램을 작성하기 위해서는 로직과 프로그램의 흐름에 집중해야 합니다. 코딩 테스트를 대비하는 것은 논리적으로 생각하는 힘을 기르기에 매우 좋은 방법입니다. 코딩 테스트를 준비하면서 잘 설계된 여러 알고리즘과 자료 구조를 접하고, 이를 이용해 코딩 테스트 문제를 해결해 나간다면 언어에 더욱 익숙해지는 것은 물론이고, 어떤 프로그램을 작성하던 논리적으로 풀어나갈 수 있게 될 것입니다.
또한, 저는 '깔끔한 코드가 좋은 프로그램을 만든다'를 좌우명으로 할 만큼 가독성 좋은 코드를 작성하는 데 관심이 많습니다. 그래서 책에서도 알고리즘과 자료 구조를 자바답게 다루는 내용을 많이 담았습니다. 자바에 익숙해지셨다면, 이 책을 통해 자바를 자바답게 활용하면서 프로그램을 논리적으로 작성하는 방법도 함께 알아가실 수 있을 것입니다.
다른 언어들도 있는데 자바를 선택하신 이유가 무엇인가요?
우리나라는 '자바 공화국'이라 불릴 만큼 자바를 다루는 분들이 많습니다. 특히, 백엔드에서는 자바로 작성되는 스프링을 널리 사용하고 있습니다. 이렇게 실무에서 자바를 사용하면서, 코딩 테스트에서는 'C++'나 '파이썬' 등 다른 언어를 사용하는 경우가 많습니다. 하지만 자바 또한 방대한 양의 내부 라이브러리를 지원하기 때문에 코딩 테스트용 언어로서 전혀 손색이 없습니다.
자바는 저의 메인 언어이기도 합니다. 첫 프로그래밍을 코틀린이 등장하기 전인 안드로이드 애플리케이션 개발로 시작했고, 스프링이나 'Swing', 'JavaFX'를 활용한 여러 프로젝트를 하면서 자바를 계속 활용해왔습니다. 코딩 테스트 또한 자바로 진행한 경우가 많았습니다. 이렇게 가장 많이 사용했고, 그만큼 자신 있는 언어인 자바를 활용하여 책을 집필하고자 하였습니다.
책을 보면서 코딩 테스트를 어떻게 준비하면 좋을까요?
코딩 테스트는 수학 문제와 같아서 많이 풀면 풀수록 실력이 올라갑니다. 알고리즘이나 자료 구조는 모두 필요에 의해 탄생했습니다. 그런 만큼 특정 알고리즘이나 자료 구조를 활용하는 문제는 얼마나 깊게 활용할 수 있는지의 차이가 있을 뿐, 대부분 비슷한 유형을 띕니다. 문제를 많이 풀어 봄으로써 코딩 테스트 문제의 유형에 익숙해진다면, 실제 코딩 테스트에서도 전혀 당황하지 않고 오히려 문제를 모두 푼 후 시간이 남는 모습을 발견할 수 있으실 것입니다.
이 책을 가이드 삼아 문제를 푸는 여러 방법을 학습한 후 여러 프로그래밍 사이트를 통해 추가적인 문제를 풀어보는 것을 권장합니다. 프로그래밍 사이트는 '프로그래머스'와 '백준' 등 여러 가지가 있지만 이 책과 함께 학습할 목적으로는 '프로그래머스'를 추천합니다. 프로그래머스는 애초에 코딩 테스트를 위해 설계된 사이트인 만큼, 문제들이 코딩 테스트 문제 위주로 구성되어 있고, 난이도가 분류되어 있어 연습하기 좋습니다. 코딩 테스트에 어느 정도 익숙해졌다고 생각된다면 백준에서 직접 문제를 골라 풀어보셔도 좋습니다. 다만, 백준에는 코딩 테스트 외에도 대회용 문제들이 많기 때문에, 문제를 잘 보고 도전하시는 것이 좋습니다.
개발자를 꿈꾸는 독자분들께 한말씀 부탁드립니다.
개발자의 연봉이 치솟고, 인공지능의 발전이 현실로 다가오는 지금, 개발자가 되기를 희망하는 분들의 수가 그 어느 때보다도 많으리라 생각합니다. 하지만 또 그런 만큼 실력 있는 개발자로 인정받기 위해서는 많은 양의 공부와 경험이 필요합니다. 당연히 코딩 테스트 또한 하나의 관문일 뿐, 코딩 테스트를 잘 한다고 해서 좋은 개발자가 되는 것은 아닙니다. 여러 프로젝트를 혼자서 공부하며 진행해보고, 팀을 꾸려서 분업도 해보고, 새로운 프레임워크나 라이브러리도 사용해보고, 소프트웨어 기초 지식도 다지는 등 신경 써야 할 부분이 굉장히 많습니다.
개발자가 되기 위해 거쳐야 할 수많은 관문들 중 적어도 코딩 테스트만큼은 이 책을 활용해 걱정 없이 통과할 수 있는 실력을 쌓으실 수 있었으면 합니다. 또, 책 중간중간 나오는 자바의 활용과 코드를 작성하는 방법을 통해, 깔끔하고 효율적인 코드를 작성하는 개발자가 되시기를 응원합니다.
*김현이 한양대학교 소프트웨어학과를 졸업한 구글 코리아의 소프트웨어 엔지니어이다. 좌우명이 '좋은 코드가 좋은 제품을 만든다'인 만큼, 가독성이 높고 깔끔한 코드를 작성하는 것을 매우 중요하게 생각한다. |
추천기사
‘대한민국 No.1 문화웹진’ 예스24 채널예스
출판사 제공
출판사에서 제공한 자료로 작성한 기사입니다. <채널예스>에만 보내주시는 자료를 토대로 합니다.