안녕하세요. 갭동입니다.
지난 1,2편에서 개발자의 현실 장/단점에 대해 알아보았는데 이 글들을 읽고 개발자가 되고 싶다는 생각이 드셨다면 이제부터는 개발자가 되기 위한 준비를 해야 합니다. 이번 글에는 개발자가 되기 위해 "무엇을 준비해야 할까?"에 대해 작성해보려고 합니다.
이전 글
2023.06.22 - [개발/개발자로 첫걸음] - [개발자가 되기 위해] 1편 - 개발자의 현실(feat. 단점)
2023.07.09 - [개발/개발자로 첫걸음] - [개발자가 되기 위해] 2편 - 개발자의 현실(feat. 장점)
무엇을 만들고 싶은지 고민하기
처음부터 이게 무슨 소리인가 싶을 수 있습니다.
첫 내용을 뭘 적을까 했는데 개발자 생활을 지속할 수 있게 하는 가장 큰 힘 중 하나인 흥미, 이를 통한 학습의 지속성을 이끌어내기 위해서 컴퓨터로 무엇을 만들고 싶은지 고민하기를 첫 번째로 꼽았습니다.
요즘 컴퓨터로 못하는 게 없습니다. 핸드폰 어플, 웹 사이트, 게임, 편의 도구, 그냥 일반 프로그램, 보안 프로그램 등등 난이도의 차이는 있지만 못 만드는 건 사실상 없다고 봐도 무방할 정도입니다. 단순히 어떤 걸 해보고 싶다는 생각만 가지셔도 일단은 충분합니다. 시작할 때 뭘 해야 될지 모르겠다는 생각을 가지신 분들도 많습니다. 해보고 어렵거나 적성에 맞지 않으면 다른 걸 만들어도 됩니다.
그에 맞는 학습하기
일단 무엇을 만들고 싶은지 정했다면, 인터넷에서 전 세계 개발자들이 도와주기 위해 기다리고 있습니다. 이 두 가지만 기억하고 공부하시면 됩니다.
1. 개발자는 절대 단숨에 되지 않는다.
2. 공부 도중 모르는 건 그냥 지나치지 말자.
이 두 가지를 기억하시고 일단 공부하기로 마음먹으셨으면 인터넷에서 ”만들고 싶은 것 만들기 “라고 검색하시면 내용들이 주르르륵 나오면서 뭐부터 해야 되는지 생각이 들 겁니다. 유튜브 영상이 있다면 보시고 글을 보셔도 좋습니다. 아마 중간과정을 이미지로 어떻게 변화하고 있다고 글을 써주셨을 텐데 보시고 재밌어 보인다면 어떤 언어로 만들었는지 찾아봅니다.
눈치채셨나요? 가장 먼저 학습해야 할 건 프로그래밍언어입니다.
컴퓨터가 이해하게 말을 해주는, 말 그대로 언어라고 생각하시면 됩니다. 얘기가 통하려면 문법에 맞춰 얘기를 해야 합니다. 하지만 컴퓨터는 모든 인간의 말을 이해할 수 없어서 우리가 컴퓨터가 이해하게끔 얘기해줘야 합니다. 그래서 프로그래밍 문법을 배우라고 하는 겁니다. 모든 프로그래밍 언어가 문법이 통일 됐는지 물어보면 그건 아닙니다. 인간도 한글, 영어, 일본어등 언어마다 문법이 다르듯 프로그래밍 언어도 같습니다. 그래서 무엇을 만들고 싶은지 결정하고 그 분야에서 주로 사용하는 언어를 학습하는 겁니다. 추후에 효율적인 학습방법에 대해서도 포스팅하겠습니다. 개발자는 절대로 단숨에 되지 않고 공부 도중 모르는 걸 그냥 지나치면 괜찮은 개발자가 아닌 그저 그런 개발자로 성장하게 될 수 있습니다.
구현능력, 문제 해결능력 기르기
인간과 컴퓨터는 확연히 다릅니다. 그 유명한 chat GPT 또한 인간의 모든 말을 문맥에 맞게 이해하지 못하는 경우도 있고, 엉뚱한 대답을 내놓을 때도 있습니다. 우리는 컴퓨터가 원하는 대로 동작하게 하려면 최대한 정확히 컴퓨터를 이해하고 그에 맞게 프로그래밍 언어로 문법에 맞춰 얘기해주어야 합니다. 이 문법에 잘 맞춰서 동작과 상관없는 말을 줄여서 컴퓨터가 제대로 동작하게끔 만들어 내는 구현능력을 길러야 합니다. 여기서 말하는 구현 능력은 흔히들 착각하시는 알고리즘이 전부가 아닙니다. 알고리즘구현 능력은 컴퓨터가 더 빠르게 자원(CPU, 메모리)을 많이 소모하지 않고 동작하게 하는 요소 중 하나이고 결국 원하는 프로그램을 만들어 내는 능력이 구현능력입니다. 이 안에는 프로그래밍 문법, 컴퓨터 동작방식의 이해, 프로그래밍 언어를 사용하여 개발을 쉽게 해주는 프레임워크 사용법 등이 있습니다. 결국 간단히 말하면 "프로그래밍을 많이 해봐라"입니다. 알고리즘은 백준 사이트 혹은 프로그래머스나 삼성 익스퍼트 아카데미 등에서 연습하실 수 있습니다. 절대 알고리즘이 프로그래밍 구현 능력의 전부가 아닙니다. 일단은 프로그램이 완성이 돼야 합니다. 더 빠르고 더 효율적으로 동작하는 것은 경험이 쌓이면서 구조를 잘 잡고 개발자가 되어서 현업에서 배우며 시작해도 절대 늦지 않습니다. 일단은 프로그램을 완성시켜 보면서 구현능력을 많이 기르시길 바랍니다.
소통능력 기르기
개발을 하면서 컴퓨터랑만 소통을 하다 보면 사람과의 소통능력이 저하될 수 있습니다. 개발자들의 특성이기도 합니다. 회사의 프로그램이나 본인 사업의 프로젝트를 같이 진행하는 것은 사람입니다. 그래서 사람 간의 소통도 정말 중요하고, 가지지 못한 개발자들도 많습니다.
내가 원하는 것을 정확히 요구할 수 있는지 그걸 컴퓨터로 구현해 내려면 어떻게 하는지에 대해 잘 설명할 수 있는지 등입니다. 사실 신입 개발자나 취업준비생 분들은 힘든 것이 사실이지만 인터넷 동아리나 모임, 학교등에서 개발 협업을 같이하며 소통의 능력도 기르는 것이 중요합니다. 이 점은 협업을 해봤다는 소중한 경험이 되어서 면접 때도 강점을 가질 수 있습니다.
마치며
이 글은 개발자가 되려면 무엇을 준비해야 할지에 대해 다뤄보았는데 자세한 내용을 다루기엔 너무 길이 길어지고 뜬구름 잡기엔 너무 정보 전달이 될 것 같지 않아 몇 개의 키워드를 제시해 드리면서 찾아보고 따라가실 수 있게 작성해 보았습니다. 무엇을 만들고 싶은지 고민하기, 구현 능력 기르기, 소통 능력 기르기 이 세 가지를 잘하면 어디 내놔도 손색없는 개발자가 되실 수 있습니다.