[생각나누기] 개발자의 평생공부에 대한 고찰

Haeun Noh·2024년 9월 17일
3

생각나누기

목록 보기
1/1
post-thumbnail

입사한지 한 달차도 안 된 신입이 '개발자의 평생공부'라는 글을 읽고 한 생각을 공유하고자 작성한 글입니다. 편하게 읽어주세요.

추석에 '개발자의 평생공부'라는 제목의 글을 읽게 되었다.
링크는 아래에 걸어두겠습니다!

읽게 된 경위가 무엇이냐 하면 추석에 열심히 공부한다 해놓고 유데미 온보딩 강의만 열심히(..?) 들었기에 뭐라도 공부하는 척이라도 해야겠다는 마음이었다.
마치 중학생때 시험공부는 안 하고 동기부여 영상만 봤던 나처럼

  • '개발자의 평생공부'에 나온 글들은 인용글로 처리하여 구분하였습니다.


실력이 무엇인가?

: 지식의 총합이 아니다. 고통의 총합이다.

실력은 지식의 총합이 아니라 고통의 총합이라는 말을 듣자마자 이 글은 정독해야겠다는 생각을 했다. 그만큼 위의 말에 백번 천번 공감한다.

그러기 위해서는 우선 ‘지식’이라는 개념이 나에게 어떻게 정의되고 있는지를 써야할 것 같다.
나에게 있어 지식이란 어디선가 본 것을 읽거나 기록하거나 듣거나 코드로 작성하는 것으로 습득하는 것이다.

하지만 위의 상황들 중 공통점이 있다.
어떠한 브레이크가 되어줄 상황이 없는 것이다.

내가 습득한 것이 맞는지, 잘 동작하지 않는다던가 하는 습득한 것을 되돌아볼만한 경험이 부족하다. 어떠한 것의 리마인드가 있을 때 그 습득력은 몇 배로 불어난다.

당장 나만 하더라도 프로젝트를 하며 크게 실패하고 고민해보았던 부분은 뇌리에 깊숙히 박혔지만 순탄히 기능 구현이 잘 되었을 때는 그려러니 하고 다음에 똑같은 기능을 개발할 때 즈음에는 다 까먹었던 것 같다.

나의 상황에 대입하여 봤을 때 어느정도 고통의 총합이 실력이 될 수 있지 않는가.
이 글을 보는 여러분도 분명 크게 당황했을 때의 기억이 더욱 선명할 것이다.


겉핥기가 공부로서 부족한 이유

파편적인 지식은 파편적인 태도만으로 충분하다
트렌드에 필요한 것은 가벼운 눈팅이지 공부가 아니다.
공부는 ‘본질’에 다가서려는 노력이다.

이 부분이 내 막힌 혈자리를 뚫어주었다!

동시에 왜 이제껏 파편적인 것들에만 접근하였는가 라는 생각이 들었다.

’트렌드’ 라는 이름은 굉장히 세련되어 보인다.
’트렌드’에 민감한 사람은 정말 실력이 좋고 발전 가능성이 무궁무진할 것 같은 느낌이다.
적어도 나는 그렇게 생각하는 사람이었다.
(물론 ‘본질’을 잘 알면서 ‘트렌드’를 잘 쫒아가는 분들에게는 해당사항이 없는 이야기이다.)

다른 친구들이 ‘채팅 기능’이 들어간 서비스를 개발하기 시작했다고 하면 ‘나도 그런 기능을 가진 서비스를 개발해야하는 것은 아닌가?’ 라는 생각이 들었다.

하지만 그러한 트렌드를 쫒다 중요한 본질을 놓치고 있었다.

  • 정말 기본적인 개발 공부를 하는 방법
  • 코드를 읽는 방법
  • 클린 코딩을 하는 방법
  • 효율적인 쿼리를 짜는 방법
  • 수많은 사용자들이 발생시킬 예외를 처리하는 방법 등등

신입 개발자로서 앞으로 몇 십년동안 걸어갈 길의 초석을 쌓은 것이 아닌 열심히 공부한다는 모습에만 집중하고 있었던 것이 아닌가 하는 생각이 든다.

본질적인 부분을 보았을 때 그 트리가 한 눈에 보이면서 결국에는 파편적인 부분이 자연스레 따라올 수 있었을텐데,
소위 말하는 효율적인 공부를 할 수 있었을텐데 하는 생각이 든다.



어떻게 공부해야 하나요?

  1. 지금 다니고 있는 회사에서 하는 일을 잘하기 위해서 노력하는 것이 가장 좋은 공부다
  2. 회사에서 하는 일과 개인적으로 공부하는 내용을 최대한 근접시키기 위해서 노력하라.
  3. 새로운 기술을 익히는 최선의 방법은 스스로 문제를 정의한 다음, 새로운 기술을 이용해서 그 문제를 풀어보는 것이다. 책을 읽거나 동영상을 보는 것은 그보다 하위수준의 방법이다.
  4. 신기술을 좇는 메뚜기가 되지 말라.
  5. 모든 것을 알아야 한다는 강박을 버려라. 미리 획득하는 지식의 99%는 무용지물이다. 필요할 때 필요한 기술을 익힐 수 있는 것이 능력이다. 그 능력을 키워라.
  6. 이상한 나라의 앨리스에 나오는 토끼굴을 피하라. 카테고리이론을 알아야 함수형 언어를 쓸 수 있는 게 아니고, 선형대수학을 공부해야 머신러닝을 할 수 있는 게 아니다. 토끼굴에 빠져서 한없이 들어가다보면 비본질적인 공부에 시간을 허비하게 된다.
  7. 겉만 핥는 것은 경박하지만 토끼굴에 빠지는 것은 우매하다. 둘 사이의 적당한 지점에서 균형을 잡는 것이 개발자의 능력이다.
  8. 머리에 들어오지 않는 어려운 개념이나 용어는 자투리 시간을 이용해서 반복적으로 읽고 암기하라. 나중에 큰 그림을 공부할 때 도움이 된다.
  9. 항상 겸손해야 하지만 동시에 자긍심을 가져라. 그대가 지금 작성한 코드, 지금 읽은 책, 지금 공부한 내용을 그대보다 잘 아는 사람은 지구상에 없다. 모든 걸 알고 있는 것처럼 보이는 다름 사람들도 그대와 마찬가지로 불안해하고, 위축되고, 두려워하면서 살아가고 있다. 자긍심이란 그런 타인을 돕고자 하는 마음가짐의 다른 이름이다.
  10. 혼자 하지말고 함께 공부하라.

!위의 내용을 다루며 중복되는 내용들 또는 저로서 크게 나눌 점이 없다고 느낀 내용들에 대해서는 다루지 않았습니다!


회사의 기술을 파악하고 응용하자

  1. 지금 다니고 있는 회사에서 하는 일을 잘하기 위해서 노력하는 것이 가장 좋은 공부다

입사 전에는 일을 잘 하는 사람은 다른 회사에 가서도 바로 일을 잘 하게 될 줄 알았다.
어느정도는 맞는 말일 것이다.
시니어 개발자분들은 기본적인 CS, 알고리즘, 자료구조에 대한 지식과 코드를 읽는 방법을 아실테니 ‘적응’이 확연히 빠르시리라 생각된다.

하지만 각 회사에서 추구하는 바가 전부 다르기에 컨벤션, 코드 구조, 언어, 프레임워크, 라이브러리 등등 회사의 핏에 맞게 개발을 해야한다.

회사에서는 나 혼자 쓰는 코드가 아니기 때문에 다른 팀원분들도 코드를 보고 리뷰를 남기고 추후 리팩토링이 들어가기 때문에 동일한 구조로 코드를 짜야한다.

따라서 그 회사에서 일을 잘 하기 위해서는 회사가 흘러가던 방식에 내가 적응하여 코드를 작성할 수 있는 역량이 동반되어야 한다고 생각한다.
동시에 회사가 가지고 있는 기술을 익히고 응용할 줄 알아야 한다.

지금의 나는 그 구조와 기술을 파악하는 능력을 길러야 한다는 생각이 정말 분명히 든다.
있는 것을 활용하지 않고 없던 것을 만들어내는 것만큼 불필요하고 비효율적인 시간 활용이 없을거라 생각한다.


지금 하는 자기계발이 본업의 능률에 도움이 되는가?

  1. 회사에서 하는 일과 개인적으로 공부하는 내용을 최대한 근접시키기 위해서 노력하라.

위와 일맥상통하는 말인듯 싶지만 조금 다르다.
근무 시간 이외에 자기계발을 하는 시간에 조금 더 맞는 조언인듯 싶다.

같은 팀원분이 한 번 질문을 해주신 적이 있다.
’프로게이머가 수능공부를 한다고 해서 본업을 더 잘 하게 될까요?’

막연히 어떠한 분야에서든 자투리 시간을 투자하여 자기계발을 한다면 공부라고 생각했었는데 굉장히 신선한 충격이었다.

아직 회사에 대해서 아무것도 모르는 신입인 내가 자기계발해야할 것은 회사의 코드 이해겠지만 더 나아간다면 자기계발하는 내용이 진정으로 내게 필요한 것인가를 계속해서 되물어야겠다.

관련된 취미를 재미삼아도 괜찮겠다는 생각이 든다.
학창시절 스터디를 여는 것도, 참여하는 것도 정말 좋아했었는데 스터디를 해볼까싶기도 하고
조금 더 여유가 생긴다면 사이드 프로젝트를 운영해보고 싶다.


지금 필요하지 않는 지식을 미리 찾는 것은 시간 낭비일 수 있다

  1. 모든 것을 알아야 한다는 강박을 버려라. 미리 획득하는 지식의 99%는 무용지물이다. 필요할 때 필요한 기술을 익힐 수 있는 것이 능력이다. 그 능력을 키워라.

이 얘기의 주인공이 바로 나다.

어떠한 것을 시작하기 위해서는 1부터 100까지 전부 알고 시작해야 직성이 풀렸다.
하지만 그렇게 시작했다고 모든 것을 다 완벽하게 하지 못했다.
오히려 이미 공부했던 것을 또 찾아보느라 시간이 두 배로 걸리는 사태가 벌어졌다.

그러다보니 필요할 때 그 필요한 지식만 쏙 골라 습득한 후 응용하는 친구들이 보이기 시작했다.
분명 똑같은 시간이 주어졌는데도 그 친구들의 작업속도는 가히 압도적이었다.
하루가 48시간인가? 하는 착각을 일으킬만큼 필요한 것과 필요없는 것을 구분하여 시간을 활용했다.

개발자는 구글링도 실력이라는 말을 들은적이 있다.
친구와 분명 똑같은 것을 검색했는데도 결과값으로 받아들이는 것이 달랐던 적이 많다.

’이거 어떻게 검색했어?’ 라고 물으면
’그냥 영어로 이렇게 검색했는데?’

라며 올바른 결과값을 도출하는 모습을 보였다.

문제의 핵심이 되는 키워드를 뽑아 영어로 구글링을 하고
그렇게 나오는 수백만개의 포스트 중 해결책이 되는 것을 찾는 연습을 해야한다고 생각한다.

지금처럼 에러가 나오면 전부 복사붙여넣기하는 상황을 벗어나기 위해서라도 말이다.


정확히 파악하려다 본질을 잊지 말자

  1. 이상한 나라의 앨리스에 나오는 토끼굴을 피하라. 카테고리이론을 알아야 함수형 언어를 쓸 수 있는 게 아니고, 선형대수학을 공부해야 머신러닝을 할 수 있는 게 아니다. 토끼굴에 빠져서 한없이 들어가다보면 비본질적인 공부에 시간을 허비하게 된다.

구글링에서 핵심만 쏙 뽑아 적용하는 친구들이 대단하다고 느꼈던 두 번째 이유다.
무언가 해결을 하기 위해서 구글링을 시작하면 모르는 원리가 등장한다.
이 원리를 모르면 도저히 이 글을 완벽히 이해할 수 없겠다는 판단이 들자마자 크롬의 새 창을 띄운다.
그렇게 내 크롬 창은 디폴트 개수가 10이 되었다🥲

절대적인 지식의 부족이 있다는 것을 부정하는 것은 아니지만 토끼굴의 정도가 너무 지나치다.
결국 그렇게 토끼굴에 깊숙히 들어가다보면 본질이었던 에러 해결 창은 조그마해 찾기도 힘들어진다.

일차원적으로 지식은 계속해서 습득하되 문제를 해결할 때의 그 본질을 잊지 말고 원인을 찾아보자.

위의 글에서도

‘겉만 핥는 것은 경박하지만 토끼굴에 빠지는 것은 우매하다.’

라는 말을 한다.
겉만 핥는 것은 당시에는 해결이 된듯 싶어도 결국 문제 해결의 원리는 알지 못하고 넘어갈 수 있다.
그렇다고 토끼굴에 빠지는 것은 파편만 수집하다 문제를 잊어버릴 수 있다.

그 중간을 찾아 균형을 유지하는 능력 또한 인정받는 개발자의 태도가 아닐까 생각된다.


나는 신뢰할 수 있는 팀원인가?

  1. 항상 겸손해야 하지만 동시에 자긍심을 가져라. 그대가 지금 작성한 코드, 지금 읽은 책, 지금 공부한 내용을 그대보다 잘 아는 사람은 지구상에 없다. 모든 걸 알고 있는 것처럼 보이는 다름 사람들도 그대와 마찬가지로 불안해하고, 위축되고, 두려워하면서 살아가고 있다. 자긍심이란 그런 타인을 돕고자 하는 마음가짐의 다른 이름이다.

예전부터 내가 한 것을 뽐내는 것에 굉장히 조심스러워했다.
칭찬을 받아도 ‘에이 아니에요~ 다른 분이 잘 하신 거죠.’ 와 같이 절대 내 공이라고 먼저 말하지 않았다.

그런 행동을 반복하다보니 문득 ‘주변 사람들이 나를 신뢰할 만한 사람으로 생각할까?’ 라는 의문이 들었다.
동시에 ‘회사에서도 똑같이 행동하면 팀원들이 나를 믿고 일을 맡길 수 있을까? 자신의 본업에 지장이 갈 만큼 신경이 쓰이지 않을 수 있을까?’ 하는 생각이 들었다.

학교에서라면 모를까 회사는 효율적으로 최대한의 이윤을 내야하는 조직이기에 능률을 떨어뜨리는 팀원을 반길리 없었다.

잘한 점은 잘했다고 표현하되 못 한 점은 확실히 보완해야겠다는 생각이 든다.
하지만 내가 짠 코드에 자긍심을 가질만큼 코드를 짤 때 생각하며 구조를 완벽히 파악하면서 코드를 짤 수 있도록 노력해야겠다.
나조차도 알아보기 힘든 더러운 코드에는 자긍심을 느낄래야 느낄 수도 없을테니 말이다.



개발 재밌나요?

가슴에 손을 얹고 스스로 질문해보기 바란다.
공부가 재밌는가?
정말 재밌는가?
새로운 기술을 익히고, 키보드를 두드리고, 결과를 확인하고, 친구들과 얘기하는 모든 경험이 그대를 정말 행복하게 만드는가?
이 질문에 대한 대답이 예스라면 그 예스의 강도만큼 그대의 미래는 성공이 보장되어 있는 것이다.
그러므로 개발자는 미래에 대해 불안해할 필요가 없다.
미래의 성공은 예스라는 작은 변수의 함수이기 때문이다.
그 변수는 개발자 자신의 손에 놓여 있다.

회사 첫 날에는 긴장이 돼서 미치는 줄 알았다.
개발 세팅도 헤메는 나 자신에 진지하게 이 길이 맞는지 고민도 했다.

하지만 온보딩을 진행하면서 무언가 되지는 않고 있었지만(ㅎ) 진심으로 개발에 재미를 느꼈다.
학교에서 늘 하던거 하다가 회사라는 아예 새로운 환경에 놓이니 개발 도파민이 폭발이라도 한건지 계속 회사에 남아있으면서 개발하고 싶었고 매일매일 회사 가는 아침이 설레였다.
1년 뒤의 내가 이 글을 다시 봤을 때 경악을 할지언정 현재는 정말 즐겁고 개발이 재밌다고 느끼고 있다.

회사에서 개발한 프레임워크의 구조를 파악하고 개발되어 있는 컴포넌트를 찬찬히 뜯어봐 알맞게 적용했을 때의 행복감이 정말 이루말할 수 없다.

그럼에도 불안한 이유는 속도가 너무 느리다는 것, 기초 지식이 너무나도 부족하다는 것.

하지만 위의 글은

‘그 예스의 강도만큼 그대의 미래는 성공이 보장되어 있는 것이다.’

라는 말을 해주고 있다.
이 한 마디가 계속 노력할 수 있는 원동력을 준 것 같다.

온보딩 프로젝트 개발이 끝나고 팀원분께 온보딩 프로젝트를 더 해보고 싶다고 한 뒤 개발을 했을 때 옆자리의 팀원분과 얘기를 짤막히 나눈 적이 있다.

’팀원분: (프로젝트 재밌냐는 듯한 뉘앙스로 질문하셨습니다.)
나: 네! 재밌어요. 온보딩때는 시간 제한이 걸려있어서 기능 구현에만 집중을 했었거든요. 그래서 구조를 뜯어보면서 할 수 없어서 재미가 떨어졌었는데 이제는 시간 제한도 없어서 하나하나 파악하면서 했더니 더 재밌는 것 같아요.’
팀원분: 저라면 이제 다 끝나서 흥미가 떨어질 것 같은데 진짜 찐 개발자시네요.’

그 말을 들었을 때 내가 개발하는 것을 진심으로 좋아하는구나 싶었다.
세상을 살면서 가장 중요한 가치를 질문으로 받았을 때 나는 ‘좋아하는 것을 잘하게 되어서 꾸준히 할 수 있게 되는 것’ 이라고 답변한 적이 있는데 위의 경험에서 확립된 것 같다.



갑자기 이런 류의 글을 써보고 싶어서 썼는데 확실히 쓰고 싶었던 주제다보니 분량이 많은데도 2시간정도만에 술술 써진 것 같다.

짧은 시간만에 써진 글이라 어색할 수도 있지만 이런 주제로 얘기하는 것이 소소한 재미이기에 올려보게 되었다.

이런 깨달음을 얻고 글을 쓰고 공유를 해도 바로 내 생활에 적용이 되는 것은 쉽지 않겠지만 한 번 고찰해보고 글로 옮기는 행동으로 내 인생의 조그마한 마일스톤이 생겼을 것이라 생각한다.



reference

profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글