개발/기타

개발자가 되고 싶어요 - 예비 개발자를 위한 학습 길라잡이

JonghwanWon 2022. 6. 12. 22:49

개발직군에 대한 관심도가 날이 갈수록 증가하며 사내에서도 다른 분야의 직원들이 생기기 시작했다.
누군가는 취미로, 만들고 싶은 아이템을 실현하기 위한 도구로 또는 커리어의 전환을 위해 각자의 목적을 가지고 있었다.

개발팀 내에서는 이들을 위해 사내 개발 스터디 그룹을 만들고 지원하고자 하는 계획을 세웠다.
그 첫걸음으로, 회의를 통해 '개발자가 되고싶은 히치하이커를 위한 안내서'라는 큰 주제 아래에서 각자 준비해 발표하도록 했다.

나는 디자이너에서 전환한 비전공자 출신 프론트엔드 개발자다.
그 과정에서 힘든점도 있었고 누구보다 그 상황을 이해할 수 있을 거라 생각했다.
그렇기에 나와 같은 상황의 동료를 이끌어 줄 수도 있다는 생각에 기대와 설렘이 있었고 한편으로는 걱정이 되기도 했다.

발표를 준비하며 출발지점과 목적지점이 서로 다른 청자분들께 어떤 주제로 발표를 하면 도움이 될 수 있을지 고민을 꽤나 했다.

수년을 읽어도 모두 이해할 수 없을 정도로 방대한 기술관련 자료와 트렌드의 변화, 기술의 발전 등의 이유로 많은 현직 개발자들은 개발자는 끊임없이 공부하는 직업이라고 표현한다.

단기간 내에 많은 지식을 얻고 개발자가 되기 위해서는 공부하는 방법 또한 중요하다고 생각하기에
예비 개발자분들을 위한 공부방법에 대한 내용으로 '개발자가 되고 싶어요 - 예비 개발자를 위한 학습 길라잡이'라는 제목으로 자료를 준비했다.

사실, 예비 개발자들을 위한 로드맵은 많이 나와있고 어느 정도 정규화되어있는 부분도 존재한다.
마치 테크트리를 타듯 '무엇을 배워야 하는가'에 대해 아주 잘 설명되어있는 로드맵을 많이 볼 수 있다.

이미 개발 공부를 시작했다면 올바른 방향으로 공부하고 있는지 되돌아보고 다른 공부법은 어떤 것이 있는지 알아갈 수 있고,
시작하기 전이라면 올바른 방향으로 공부하는 길을 알아가실 수 있기를 바라며
나는 '개발자가 되기 위한 학습방법'과 좋은 '개발자가 되기 위한 습관'의 제안을 내용으로 발표를 준비했다.

서론이 상당히 길었습니다.
본론은 준비했던 PPT의 내용을 글로써 변환해 대체합니다.

감사합니다.


아래 내용은 준비했던 PPT의 내용을 글로써 작성하여 매끄럽지 못한 부분이 있을 수 있습니다.

개발자가 되고 싶어요 - 예비 개발자를 위한 학습 길라잡이

1. 어떤 것부터 학습할 것인가?

보통의 개발 입문자들은 이렇게 생각합니다. 🤔

당연히 프로그래밍 언어부터 배워야지

그런데.. 프로그래밍 언어가 이렇게나 많습니다.
새로 생기는 언어도 있고, 없어지는 언어도 존재합니다.

프로그래밍 언어

프로그래밍 언어가 이렇게 많은데 대체 어떤 언어를 배워야 하는 걸까요?

단순히 개발자가 되기 위해서 프로그래밍 언어만을 배우는 것은 빠른 포기와 방황기를 시작하기 위한 가장 좋은 방법이라고 생각합니다.

프로그래밍 언어는 목적을 가지고 의도적으로 개발된 것입니다.
따라서 모든 언어에 대해 전문가가 될 필요는 없습니다.

프로그래밍 언어를 배우는 것이 중요한 것이 아니라 무엇을 하고 싶은지가 중요합니다.
따라서 개발자를 목표로 한다면 우선 무엇을 하고 싶은지 생각해보고
그 이후에 목적을 이루지 위한 도구로써 언어를 선택하고 배우는 것이 좋습니다.

그럼 이제 질문을 바꿔봅시다

간단한 게임을 만들어 보고 싶어
멋진 웹사이트를 만들고 싶어
웹 개발자로 커리어 전환을 하고 싶어
...

여러분은 개발이 하고 싶은 명확한 이유가 있나요?

2. 어떻게 학습할 것인가?

흐릿한 목적지가 정해지고 그를 위한 도구도 선택했다면
과연 어떻게 학습해야 할지 궁금해질 겁니다.

사람마다 성향도 다르고, 추구하는 가치도 다르듯 공부 또한 자신에게 맞는 방법을 찾는 것이 중요합니다.
대표적으로 4가지로 좁혀 학습방법을 알아보도록 하겠습니다.

프로그래밍 학원

빠르게 프로그래밍의 맛을 보고 싶어요

첫 번째로 프로그래밍 학원입니다.
학원은 선생님이 존재하고 같은 목적지를 향해 나아가는 동료들이 있기 때문에
혼자 공부하는 것이 익숙지 않은 분들께 적절한 선택이 될 수 있습니다.

또한 국가에서 지원하는 국비지원 학원도 다수 존재해 부담없이 시작하기도 좋습니다

하지만 정해진 교육과정으로 양산형 프로그래머가 될 수 있다는 점과
진도에 맞추어 진행해야 하는 특성 상 깊이있는 학습을 하지 못할 가능성
그리고 학원마다 교육품질의 온도차가 심하다는 점이 있습니다

장점
👉 막힐 때에 직접적으로 물어볼 선생님이 존재
👉 교육 시스템에서 오는 강제성이 부여
👉 팀을 구성하는 경우 협업 관련 기술 습득의 기회

단점
😱 부담될 수 있는 금액과 교육 품질의 온도차이
🥵 정해진 교육과정으로 원하는 것을 배우지 못할수 있다
😶‍🌫️ 깊이있는 학습을 하지 못할 가능성

인터넷 강의

내가 원할 때 부담 없이

유튜브를 비롯 비영리 단체에서 제공하는 교육 등
인터넷에는 방대한 양의 강의가 존재합니다.
게다가 접근성도 좋습니다.

부담 없이 시작하고 싶은 분들께 좋은 선택이 될 수 있습니다.

인터넷 강의는방대한 양의 강의가 존재하는 만큼
좋은 강의를 구분하는 것이 쉽지 않습니다.
또한 Medical Teachere의 발표자료에 따르면 인터넷 강의는 TV를 보는것과 같이 뇌가 소극적으로 활동한다고 합니다.
즉, TV를 보는 것과 같이 강의를 관람하게 될 수도 있어 주의가 필요합니다

장점
👉 방대한 양의 유・무료 강의
👉 때때로 높은 품질의 강의와 실전 코딩
👉 시간과 장소에 구애받지 않는다

단점
😱 좋은 강의를 구분하는 것이 쉽지 않다
😪 보기만 하는 강의는 TV를 보는것과 같을 수 있다
- Medical Teacher의 발표자료에 따르면 TV를 보는것 같이 뇌가 소극적으로 활동한다는 것을 알 수 있음

클론 코딩

내가 자주 이용하는 Application을 똑같이 만들어보자

가장 추천하는 방법으로는 클론코딩이 있습니다.

실제 개발자들이 일하는 방식과 흡사하며 이미 잘 만들어진 기획과 디자인이 존재하고
이미 어떻게 동작하는 기능들에 대해 잘 알고 있기 때문에 흥미를 이끌기에도 충분합니다.

다만 접근하기 어려울 수 있으며 단순히 짜여진 코드만을 따라하는 것은 의미없는 시간이 될 수 있습니다.

장점
👉 이미 잘 만들어진 기획과 디자인이 존재한다
👉 세부 기능들이 어떻게 동작하는지 이미 알고있다
👉 프로그래밍에 대해 흥미를 이끌기에 충분하다
단점
😱 접근하기 어려울 수 있다
🥵 단순히 ‘코드’만을 따라한다면 의미없는 시간이 될 수 있다

개발 서적

프로그래밍 입문자에게 책으로만 공부하는것은 추천하지 않습니다. 책을 읽는 것은 코딩에 익숙해지고 나서!
내가 모르는 것을 확인하고, 아는것을 복습하며 심도있고 깊은 탐구를 하는것이 중요합니다.
입문자들은 대부분 개발 서적을 하나씩은 구매 할 텐데요
두껍고 어려운 책을 읽었다고 개발자가 될 수 있는 것은 아닙니다.
주관적인 실력 평가의 정체기 즈음 서적을 읽어보시면 굉장히 많은 도움이 될 것입니다.

여기까지 프로그래밍을 공부하는 대표적인 가지 방법을 살펴보았습니다.
배워야 할 것은 많고 완벽히 이해하는 것은 어렵고 실제 코드를 작성하는 것은 또 다른 영역입니다.

그래서 저는 "겁내지 말고 꾸준히 만들어 보는 것"이 중요하다고 말합니다.
개발하는 재미를 찾고, 꾸준히 개발하는 것을 목표로 각자에게 맞는 학습법을 찾으셨으면 좋겠습니다.

3. 지양해야 할 공부법

이번에는 개발자로써 하지 말아야 할 공부법에 대해 간단히 짚고 가도록 하겠습니다.

함수 및 메서드 몽땅 외우기

첫 번째로함수 및 메서드 몽땅 외우기 입니다.

프로그래밍 언어를 공부할 때에 함수 및 메서드를 영어단어 외우듯 공부하는 것이 아니라 언제 사용하는지 이해 하는것이 중요합니다.
개발자는 코드를 작성하는 것 외에도 검색문서를 함께 보며 개발하기에 함수 자체를 달달 외울 필요가 없습니다.

개발은 외워서 하는 것이 아닙니다, 이해하고 응용하는 과정입니다.
따라서 언어에 내재되어있는 함수, 메서드를 모두 외우는 것은 지양해야 할 공부법 입니다.

공부하실 때에는 어떤 함수가 어떤 역할을 하는 구나! 정도로 이해하는 것을 추천드립니다.

코드를 작성하지 않고 머리로만 이해하기

두 번째로는머리로만 이해하기 입니다.

머리로 이해하는 공부로 충분한 분야가 있을 수 있지만 이 업계는 그렇지 않습니다.

머리로만 이해하고 넘어간다면 언젠가 직접 코드를 짜야할 때 반드시 애를 먹을 것 입니다.
컴퓨터를 사용할 수 없는 불가피한 상황이 아닌 경우를 제외하고는 예제 코드를따라서 작성해보며 이해하고 넘어가기를 바랍니다.

코드를 똑같이 따라만 치기

마지막으로 코드를 똑같이 따라만 치는 것입니다.
제대로 된 이해 없이 코드를 따라만 쳐서 실행이 가능한 프로그램을 만들어도
어떻게 동작하는지 모른다면 제대로 공부라고 없습니다.

코드에 대한 이해 없이 그저 작동만 되게 하고자 하는 것은 나은 개발자가 없게 만드는 과 같습니다.

4. 더 좋은 개발자가 되기 위한 습관

지금까지 어떻게 학습해야 할지, 지양해야 할 학습법에는 무엇이 있는지 알아보았습니다.
마지막으로 더 좋은 개발자가 되기 위한 습관에 대해 이야기 해보겠습니다.

학습내용 기록하기

첫째로는 학습내용을 기록하기입니다.
내가 학습한 내용을 정리하고 그것을 글로 작성하는 것은 아래와 같은 부분에서 많은 도움이 됩니다.

지식을 온전히 자신의 것으로 만드는 과정
자신을 브랜딩 하는 하나의 도구
커뮤니케이션 능력의 강화

내가 겪은 문제와 해결 경험을 공유하거나 학습한 내용을 기록(Today I Learned, TIL) 하는 블로그를 운영해 보는 것을 추천합니다.

코딩으로 문제를 해결하려고만 하지 말라

개발자는 기능구현에 소요되는 시간보다 요구사항 정의, 문제의 원인찾기, 설계 등에 많은 시간을 소요합니다.

따라서 무작정 문제를 해결하려고 하기보다 문제를 정확하게 파악하는 능력을 길러야 합니다.
문제를 정확하게 파악한다면 자연스럽게 문제는 해결되기 마련입니다.

다른 사람의코드를 많이 읽고 분석하기

다른 사람의코드를 읽고 분석하는 것은 실력을 높이기 위한 좋은 방법 중 하나입니다.

세상에는 실력이 뛰어난 개발자가 많습니다. 그만큼 배울점이 많다는 것입니다.

다른 사람의코드를 읽고 분석하는 과정에서 자연스레 시야가 넓어지며 깊어지고 좋은 코드를 작성할 가능성이 높아집니다.

정보교환과 토론을 적극적으로 하라

많은 사람과 정보를 공유하고 토론하는 것은 같은 문제를 다르게 생각하는 방법을 배울 있는 기회가 됩니다.
또한 어떤 문제를 맞닥트렸을 때에 누군가에게 문제를 설명하다 보면 설명하는 도중 문제의 답을 찾게 되는 마법도 경험할 수 있습니다.

투자한 시간만큼 Return 받는 위대한 직업

제가 신입 개발자로 입사지원메일을 보내던 때 나름 개발자를 표현한 내용입니다.
뚜렷한 이유를 가지고 꾸준히, 천천히 나아가신다면 모두 멋진 개발자가 될 것이라 의심치 않습니다.

‘개발자가 되고 싶어요’ 라는 주제로 준비한 내용은 여러분은 어떤 개발자가 되고 싶나요?’로 질문 남기며 마무리 하도록 하겠습니다.