주니어 개발자의 성장에 대하여 chap.1

유원근·2023년 2월 5일
2
post-thumbnail

개발을 시작하는 주변사람들과 친구들이 많아지고 이야기하다보니, 도움을 주고 싶은 마음에
주니어 개발자에게 있어서 공부는 어떻게 해야하고, 어떤 마음으로 진행해야 할까?
라는 생각이 들어서 제 경험을 바탕으로 아티클을 남기게 되었습니다.

주니어 개발자의 공부 시리즈는 총 두편으로 이루어져 있습니다.

1. 마음의 준비와 목표설정. 그리고 대상 찾기
2. 오래가는 성장을 위한 습관만들기 - 선순환

마음의 준비와 목표설정. 그리고 대상 찾기

우리는 하루에도 인터넷에서 "몇개월만에 개발자가 되는법" 과 같은 자극적인 문구의 광고가 100번 이상 노출되는 그야말로 개발자 전성기의 시대에 살고 있습니다.

여러분은 '' 개발자가 되고 싶으신가요?

지금 막 개발자가 되기 위한 준비를 하는 분들 혹은 이제 막 개발자가 된 주니어 개발자라면,
개발자 버블이 터지는 상황에 대한 준비를 이미 개발을 오랫동안 해오신 시니어 개발자보다 철저하게 준비를 해야한다고 생각합니다.

더 어리기 때문에 오래 할 수 있을것인데, 왜 더 철저하게 준비를 해야하냐는 궁금증이 생길 수도 있습니다.

개발영역은 철저하게 실력으로 평가 받을 수밖에 없습니다.
조금 심하게 말해서 개발자의 수를 줄여야 하면 당연하게도 실력이 부족한 개발자가 떠날 수 밖에 없습니다.
지금의 개발자 황금기도 언젠가는 끝날 수 밖에 없을 것입니다.

살아남기 위한 중요한 실력을 만드는 요소는 바로 노력으로 이루어진 학습입니다.
노력을 하기 위해서는 어떤 개발자가 되고자 하는 명분이 필요합니다.

이 글을 통해 어떤 개발자가 되고자 하는지에 대해 한번 생각해 보는 기회가 생긴다면 좋을 것 같습니다.


마음의 준비 (Mindset)

목표설정

여기서의 목표설정은 작은 단위의 올해에는 "이걸 꼭 공부하겠어" 이런 작은 단위의 목표를 말하지는 않습니다.
혹시 개발자로써 꿈꾸는 목표나 어떤 개발자가 되고싶은지에 대한 생각을 해본적이 있으신가요?
본인이 스스로 목표를 만드는 것과 그것에 대해 계속해서 생각해 보는것은 성장에 있어서 많은 도움이 되는 것 같습니다.
그게 어렵다면 최소한 주변이나, 커뮤니티에서 동경하는 개발자를 찾아보세요.
대상은 네임드 개발자, 아니라면 사수도 좋고 함께 개발을 시작한 사람도 좋습니다.

중요한 것은 최소한 그 분을 따라갈 수 있을 만큼의 노력을 하는 것이에요.

목표를 추월 할 수 없을 수도 있습니다. 왜냐하면 개발에 쏟은 절대적인 시간이 다를 수 있기 때문이에요.
다만, 스스로 더 많은 시간을 개발에 투자한다면 추월할 수 있지 않을까요?
이를 반대로 해석해보면 더 많은 시간을 투자하지 않는다면 재능없이는 절대 그 목표를 추월할 수 없다는 것입니다.
아래 그림을 보면 닮고 싶은 사람과 같은 양의 노력을 한다면 절대 따라잡을 수 없을 것입니다.

결국, 아래와 같이 더 노력해야만 최소한 따라갈 수 있을 것입니다.

목표나 우상을 정하고 뛰어넘길 원한다면 최소한 그 목표대상이 개발에 쏟는 시간+비용 그 이상을 투자해 보세요.

그렇다면 어떻게 목표를 향해 나아가고 노력하는 것이 바람직할까요?

재미를 느껴보기

개발자가 되기를 희망하시는 분들이 공부를 하는 이유는 무엇일까 생각해보면 80% 이상은 아마 개발자로써의 취업을 위해 공부를 하고 계실 것 같습니다.

취업을 위해 개발을 공부하는 것은 결코 나쁜것은 아닙니다.

다만, 먼저 내가 가고싶은 회사 즉, 가고 싶은 분야의 성격을 파악하는 것이 중요하다고 생각됩니다.
만약 코딩테스트를 꼭 봐야하는 회사라면 그쪽 공부를 하는게 물론 바람직 할 것입니다.
반대로 실무형 과제를 제출하는 곳이라면 그에 맞는 공부를 하는게 바람직 할 것입니다.

다만 여기서 중요한건 요건에 맞는 공부만 계속 하다보면 취업 이후에는 나를 공부시킬 동력이 사라질 수도 있다는 것입니다.

공부를 할때에 내가 성장해 나가는 재미를 찾아보세요.
성장해 나가는 재미가 마음속에 준비가 되어 있다면 롱런 + 지속적 성장을 할 수 있는 개발자가 될 수 있습니다.

한마디로 덕업일치된 삶을 만들어보기 위해 노력해본다면 좋을 것 같습니다.

재미를 찾아보기

그렇다면 어떻게 공부를 해야 위에서 말하는 재미를 찾아볼 수 있을까요?

물론 사람마다 그리고 개발 분야에 따라 느낄 수 있는 재미는 다를 수 밖에 없습니다.
다만 저의 경우 공부하는 부분을 작게 한정지어 버리면 오히려 개발에 대한 흥미가 오히려 떨어지는 경우가 많았습니다.

최대한 다양하게 공부하고 경험해 보세요!

다행인 부분은 개발영역에는 너무나도 많은 영역이 있기 때문에 어디선가는 재미를 분명 찾을 수 있을것 입니다.
물론 마음이 급하고 시간이 없을수도 있을 것입니다.

하지만, 재미를 찾아야만 없는 시간도 만들어서 개발에 투자할 수 있는 용기가 생기게 될것이고 결국 그것이 나를 성장하게끔 만들어 줄 것이에요.

그렇다고 무턱대고 아무거나 재비뽑기로 공부할 것들을 찾을 수는 없으니, 무엇을 공부해야 할까? 에 대한 부분을 이제 말씀드려 보겠습니다.


무엇을 공부해야 할까

위에서 말한것처럼 무턱대고 아무거나 이것저것 공부하는 것은 개발에 투자하는 나의 시간을 효율적으로 사용하지 못하게 되는 것입니다.
스스로 공부가 필요하다고 느껴질때는 저의 경우 아래 두가지 케이스 + 1로 나누어 졌습니다.

  • 새로운 기술을 받아들이고 습득하고 싶다.
  • 부족한 부분을 끌어올리고 싶다.

+ 그리고 위 두가지를 효율적으로 섞어서 실력과 효율을 끌어 올리기

새로운 것을 배워야 할 때

새로운 것을 배워야 할때에는 도전이 필요합니다. 그리고 이만큼 동기부여가 큰 상황도 없을 것이에요.
예를들어 제가 프론트엔드 개발을 막 시작하고 다른 부분을 시작하게 된 경우로 설명을 해보면

  • 공공API를 사용해 개발하다보니, 내가 원하는 API를 직접 만들어 사용해보고 싶고, cors와 같은 문제로부터 더 자유롭고 큰 프로젝트를 해보고 싶어서 백엔드를 더 공부하게 되었습니다.
  • 프론트와 백엔드 두가지를 모두 하는 상태에 혼자 프로젝트를 진행해보니, 좀더 예쁘게 만들어보고 싶은 마음에 디자인을 공부하게 되었습니다.
  • 프로젝트를 만들고 배포를 진행하다보니 클라우드를 더 알고싶어져서 공부하게 되었습니다.

3가지 상황의 공통점이 무엇일까요?

"필요에 의해 시작하게 되었다" 라는 것입니다.

내가 필요하다는 걸 인지하는 것보다 좋은 동기부여와 재미요소는 없습니다.
특히 이런 케이스는 혼자서 개념적인 부분을 학습할때 보다는, 프로젝트를 진행할 때에 더 자주, 크게 느껴지게 될 것입니다.

여러분들도 뭔가 학습이 필요하다고 느껴진다면 그 기회를 꼭 놓치기 말고 바로 시작해 보기를 추천하드리고 싶습니다.

향상시키고 싶을 때 (Deep Dive)

아는것을 향상시키고 싶을때에는 재미를 느끼는 것보다 중요한게 효율적으로 공부하는게 중요하다고 생각합니다.

그리고 가장 먼저 내가 진정으로 향상시켜야 할 기술이 무엇인지 알아야만 합니다.

뭔가를 조금씩 알아가다 보면 기본기의 중요성에 대해 많은 필요성을 느끼게 될 것이고 그걸 더 잘해야겠다고 느낄 수 있습니다.

개발을 시작한지 얼마 안되었다면, 어쩌면 이건 큰 착각일 수 있습니다.

아래 예시로 예를들어 보겠습니다.
React를 함에 있어서 Javascript의 중요성을 알고 JS를 딥다이브 한다.

여기서 실력을 향상시키고 싶은 부분은 React인가요 Javascript인가요?
물론 Javascript를 잘 다루면 React를 더 잘 효율적으로 사용하고, 코드를 예쁘게 만들 수 있는것은 맞는 말입니다..
하지만, React를 잘 다루지 못하는 상태에서 Javascript를 딥다이브해서 심화학습 한다면 React를 잘 다룬다고 말 할수 있을까요?

위 상황에서 목적으로 두어야 할 기술은 React입니다.

만약 성능을 올리고 싶다면, Javascript를 멋있게 사용하는 것보다 React의 최적화 Hooks를 더 잘 쓰는게 훨씬 효율적인 방법일 수도 있었습니다.

모든게 어느정도 준비되었다면 그 이후에 딥다이브를 하는게 맞겠지만,
주니어 입장에서는 아마도 모든게 준비되어 있는 사람은 많지 않을 것 같습니다.
먼저 큰 관점에서 흐름을 어느정도 이해가 선행되어야만, 어떤 부분을 학습해야 더 실력이 올라갈 수 있을지 알게 될 것입니다.

조금 더 큰 흐름속에서 공부를 시작해 보면 좋을 것 같습니다.

새로운 것 + 기존의 지식의 시너지

먼저 개인마다 편차와 환경이 있기에, 학습에 있어서 정답도 없고 위에서 말한것처럼 접근하는 방법이 무조건 좋은 방법은 아닐 수도 있습니다.

만약 새로운 지식도 필요하고, 기존의 것도 향상시키고 싶은 마음이 동시에 들었다면 어떻게 해야 할까요?

지금 부터 설명하는 내용은 위 두가지 케이스에 +α 인 부분입니다.

제가 React를 사용하고 위 방법처럼 열심히 공부하는 개발자라는 가정을 하겠습니다.
어느정도 React를 알고있고 이제는 서버Javascript에 대한 공부를 진행을 하고 싶어졌어요.

그렇다면 두가지 중에서 무엇을 우선순위에 두어야 할까요?

저는 어떤 분야든 개개인 마다 해당 분야에 대한 지식을 받아들을 수 있는 Capacity라는 것이 있다고 생각합니다.
위 상황에서는 React를 받아들일 수 있는 Capacity를 생각해 볼 수 있을것 같습니다.
그 자신만의 Capacity가 가까워진다면 해당분야에 있어서 지식을 받아들이는 속도는 매우 떨어질 수 있습니다.
하지만, 다른 지식과의 시너지를 통해 그 Capacity를 높을 수 있다고 생각합니다.

그 분야가 직접적으로 연관되어 있지 않더라도 Capacity는 올라갈 수 있습니다.

예를들면 디자인공부를 통해 조금더 디자인 시스템에 대한 이해도가 높아진다면 효율적인 컴포넌트 설계가 가능해 질 것이에요.
다른 방향으로 Javascript공부를 통해 유용한 메서드를 알게된다면 그걸 React에 적용해 더 많은 부분을 효율적으로 사용할 수 있을 것입니다.

지식습득에 대한 우선순위를 정할때에는 그것이 내가 주력하는 분야에 어떤식으로 도움이 될 수 있을지를 생각해 본다면 도움이 될 것 같습니다.


다음글

지금까지는 어떤 마음으로 어떤 부분을 학습해야 효율적이고 잘 해볼 수 있을까에 대한 주제에 대하여 글을 진행해 보았습니다.

그렇다면 위 내용들을 조금 더 오래 지속가능하고, 꾸준하게 동기부여가 일어날 수 있도록 시스템화 하는 습관을 만들어 놓는다면 좋을 것 같습니다.

어떻게 시스템을, 즉 나의 습관을 만들어야 욕심있고, 성장하는 개발자가 될 수 있을까요?

이에 관련된 내용을 다음글에서 작성해 보도록 하겠습니다.

0개의 댓글