개발자는 왜, 어떻게, 무엇을 공부해야 하는가?

Seong-Am Kim
8 min readMar 7, 2021
Photo by Thought Catalog on Unsplash

많은 개발자는 공부를 한다. 아마 이 직업을 선택한 이상 이 일을 계속하는 한 끊임없이 해야될 것이다.

개발자를 위한 많은 강의들과 책들은 있지만 정작 그 일이 왜 필요한지에 대해선 상대적으로 적지 않나 싶다.

개발자로서 공부를 해오면서 지난 시점에서 이 과정들을 되돌아 봤을때 아쉬운 부분들이 분명 있었고 이 글은 자기 반성이자 다짐이기도 하다.

지금 부터 그 느낀 점들에 대해 정리해 보고자 한다.

공부 하기전 이 공부가 나에게 왜 필요한지 고민해보라

Photo by Siora Photography on Unsplash

개발자는 공부할 시간이 필요하다. 그것도 매우 많이 필요하다.

모든 공부에 있어서 이 공부를 왜 하는지에 대한 물음은 정말 중요하다고 생각한다.

변명이 될 수도 있겠지만 나의 경우 위의 질문에 대한 해답을 찾기 보다 현재 닥친 상황에서 ‘해결’ 하기 위한 공부들을 했다.

그 상황이 때론 내게 맡겨진 회사의 상황이기도 했으며 언젠간 필요하지 않을까? 요샌 이게 유행한다는데…. 내가 아는 개발자는 이걸 쓴다는데… 하는 물음에서 출발하기도 하였다.

위와 같은 물음에서 출발하는 공부가 나쁘다는 것이 결코 아니다. 그 과정에서 기회를 발견할 수도 있으며 본인이 좋아하는 것도 발견할 수 있다.

모든 공부는 유익하다. 동의한다. 하지만 맹목적인 이유를 모르는 공부는 잘못된 방향으로 나아갈 수 있기에 중요한 시간을 허비할 수 있다.

중요하지 않은 일때문에 중요한 일을 할 시간을 놓치지 마라.

중요한것은 상황이 아닌 본인의 목표에 맞는 공부인가 하는것이라고 생각한다.

상황에 흔들리지 마라 그 공부가 자신에게 어떤 의미를 갖는지 고민해보고 정말 필요하다면 해라.

여러분의 시간은 무한하지 않다. 효율적으로 전략적으로 시간을 활용해야만 한다.

(혹 아직 개발자로서의 목표가 없는 분들을 위해 아래 글을 첨부하니 도움이 되셨으면 좋겠다.)

개발자는 질문에 답을 찾는 사람들이 아니다. 올바른 질문을 하는 사람들이다.

Photo by Tachina Lee on Unsplash

이 주제는 오해가 될 수도 있는 말인데 ‘질문’에 대한 강조를 하기 위해 해당 문장을 서술하였다.

결론부터 이야기 하자면 개발자는 질문에 답을 찾는 사람이 맞다. 하지만 그것만으로는 부족하다. 올바른 질문을 하고 그 답을 찾아나가야만 한다.

신입 개발자 초기엔 목적에 맞는 워킹 하는 코드를 만드는 것도 감당하기가 힘들다.

나 역시 그랬다. 돌이켜 보면 오랜시간 동안 다양한 언어를 습득하고 표현하는데 급급했다.

이 글을 적고 있는 본인은 컴퓨터 전공자가 아니다. 때문에 워킹하는 코드를 만들고 나서도 코드 자체는 이해를 하지만 그 이면에 어떤 이유로 동작하는 건지 왜 이코드가 다른 코드 보다 나은 방법인지에 대한 이유를 말하지 못했다.

개발자는 자기가 만든 코드에 대한 책임과 동시에 좀 더 효율적인 코드를 만들 의무가 있다.

워킹하는 코드를 만드는 것은 기본이다. 하지만 그것만으론 부족하다. 자신의 코드에 대한 책임과 효율을 위해 좋은 질문이 필요하다.

그것은 자신의 코드가 될 수도 있고 다른 사람의 코드가 될 수도 있다.

‘왜 이 사람은 배열을 쓰지 않고 연결 리스트를 이용하여 구현을 하였을까? 어떤 이점 때문에 이런거지?’

‘여기서 이 변수의 이름을 다른 사람이 이해할 수 있을까? 유지 보수가 필요할때 몇개월이 지난 뒤에도 난 이코드를 이해할 수 있을까?’

‘지금은 싱글톤 가지고 구현을 했는데 여러개의 인스턴스가 필요한 상황은 없을까? 이 디자인 패턴을 여기에 적용하는게 과연 맞을까?’

위와 같은 질문들은 좋은 코드를 만드는 바탕이 되며 올바른 질문은 자신과 코드의 성장을 일으킨다.

자신의 코드를 포함하여 많은 사람들의 코드를 봐라 그리고 질문해라.

코드를 적는것 만큼이나 읽는 것도 중요하다.

학습에만 너무 의지하지 마라 중요한 것은 자신이 그것을 어떻게 활용하는가이다.

Photo by Matt Heaton on Unsplash

이는 내가 처음 개발할때 가장 많이 실수했던 부분 중 하나이다.

수도 없이 많은 동영상 강의들을 봤고 책도 많이 읽었다. 그리고 만족감을 얻었다.

그럼 성장하였는가? 아니 성장한거 같다라는 자기만족과 착각만을 가졌을 뿐이다.

본인의 성장을 위해 학습하기 위해 책과 강의를 보는것 아주 훌륭한 자세이다. 하지만 거기서 끝나면 안된다.

우리가 하려고 하는건 배운걸 강의 하기 위해서가 아니라 실제 코드에서 활용 하기 위해서이다.

수영을 예를 들어보자.

수영을 잘하기 위해선 발을 어떤 각도로 차야되는지 팔과 다리의 자세는 어떻게 해야 되는지 공부만을 한다면 그 사람은 과연 수영을 잘한 다고 말할 수 있을까?

실제 그 사람이 수영을 잘한다 못한다를 판단하는 것은 행위이다.

정말 수영을 잘하기 위해선 물에 내가 들어가서 발도 차고 숨도 참고 하는등 연습을 해야만 한다.

물론 이론 없는 연습은 또 다른 의미에서 효율성을 잃어 버린다.

우리가 하는 학습도 이와 마찬가지이다.

책과 강의를 통해 지식을 쌓는거 분명 필요하다. 하지만 머릿속에 가진 지식을 가지고 내 코드에 실제 표현을 해봐야 하는 연습을 계속 해야만 한다.

즉, 내 코드에 활용 하는 것까지 나아가야 진정한 의미에서의 학습이 이루어 질수 있다고 본다.

공부만 계속 해서는 마치 수영을 배우기 위해 책만 보는 사람과 같다.

다른 사람으로 부터 배워라

Photo by Sigmund on Unsplash

나는 개발자가 되기 전에 개발자에 대해 생각할 때 성격은 소극적이며 혼자서 컴퓨터를 가지고 씨름하며 홀로 커대한 코드와 싸우는 모습을 상상했었다.

하지만 지금 와선 개발자의 훌륭한 역량 중 하나는 협업과 소통이라고 생각한다.

개발은 절대 혼자선 이루어 지지 않으며 다른 사람과의 협업 또는 도움을 통해 이루어 진다.

실력이 좋고 나쁘고를 떠나서 분명 타인의 코드 또는 의견에서 배울점은 분명히 존재 하며 그것을 자신의 실력 향상의 밑거름을 삼는것은 빠르게 성장 할 수 있는 방법 중 하나라고 본다.

때론 내 코드를 남에게 보여주는게 부끄럽기도 하고 굳이 그렇게 까지 해야 하나 하는 생각이 들때도 있을 것이다. (적어도 나에겐 그랬다.)

하지만 의외로 내 잘못은 내 눈에 잘 들어오지 않는 경우도 많으며 잘못이 아니라 하더라도 여러 신선한 관점을 타인에게서 얻을 수 있다.

이는 코드 리뷰를 통해 혹은 짝코딩등 여러 방법을 통해 시도 해볼 수 있다.

늘 겸손히 다른 사람의 도움을 구해라 언제나 배울 점은 있다.

글을 마치며…

Photo by Raimond Klavins on Unsplash

이번 주제에 대한 글은 개인의 가치관에 따라 답변이 모두 다르며 정답은 없다고 생각한다.

이 글은 지극히 주관적인 견해로 한 개인의 의견 정도로 참고해 주셨으면 한다.

나 역시 성장중에 있으며 부족함이 있는걸 그 누구보다도 절실하게 느낀다.

가치관을 가지는 질문 역시 개발 만큼 중요하단 생각을 한다.

이는 그 부분중 하나인 글일 뿐이다.

처음엔 포스팅을 자료구조에 대한 이야기를 하려고 하다가 그 전에 이 주제를 다루는 것이 순서상 맞지 않을까 해서 글을 적게 되었다.

다양한 언어와 개발해오면서 근본되는 구조 즉, 뼈대를 이루는 원리가 중요하단 생각이 들었고 추후엔 당분간 C 언어를 기반으로 자료구조에 대한 포스팅을 계속해서 해 나갈 예정이다.

(메모리를 직접 할당하고 해제 하는 부분에서 좀 더 근원적으로 다른 언어보다 이해하기가 보다 용이하다고 판단되기 때문에 선택하였다.)

글을 적는 본인이 공부한걸 정리하는 목적이 크지만 Follow와 Clap등 관심의 표현은 글을 적는데 큰 힘이 되는건 분명한것 같다.

혹시 다른 문의 사항이나 토론에 대해선 언제나 늘 환영하니 부담 없이 소통해 주셨으면 좋겠다.

나와 같은 고민을 하셨던 분들에게 이 글이 조금이나마 도움이 되었기를 바란다.

https://www.buymeacoffee.com/jayflow

--

--