잡담/진짜 잡담

[잡담] 개발자 공부 방법론

隣席の開発者群 2023. 5. 19. 10:03
반응형

인생 === 공부 진짜임.

오늘 썰은 개발자 공부 방법론 이런걸 써볼까 하는데

뭐 대단한건 아니고 다들 공부 = 책상에 앉아서 개빡세게 집중해서 뽝! 하는거 이런 인식이 있어서 써보는거다.

개발을 시작하면 이런 이야기를 많이 듣는다. "평생 공부해야해요.", "해도해도 공부할게 계속 생긴다." 

맞는 말이다. 평생해야할 것 같고, 해도해도 계속 생긴다. 

근데 중요한건 책상에 앉아서 막 펜 굴려가면서 암기하고 이런 중고등학생 같은 공부가 아니라는건데

자세히 한번 이야기 해보자. 

 

1. 우리가 지금까지 해온 공부

비전공자 개발자 기준에서 (특히 문과 출신) 공부라고 하면 어떤걸까? 

진짜 말 그대로 책, 참고서 이런거 펼쳐놓고 겁나게 외워제끼는거. 툭치면 입에서 와르르 책내용이 쏟아져나오는거.

아마 거의 이렇게 대답할거라고 생각한다. 

왜냐면 우리나라는 계속 시험, 평가를 통해서 등급을 결정하려고 하는데 그런 평가에서 고득점을 하려면,

남들보다 단기간에 많은 지식을 쏟아낼 수 있어야하기 때문이다. 

그러려면 이해는 뒷전이고 그냥 막 외워제끼게 되는데 이런 공부에 익숙해지면, 각잡고 암기하는 공부말곤 

할 수 없게 된다. 

물론 나쁘다는건 아니고, 저런 공부가 빛을 발하는 순간도 있긴하다. 예를 들자면 CS(computer science) 같은거

내가 만든 코드들이 돌아가는데 있어서 진짜 아주 기본이 되는 것들, 선구자들이 만들었고 우리는 그 선구자들이 깔아둔 판위에서 뛰노는건데 그 모든 걸 이해하기엔 시간이 많이 소요되니까 암기를 해주면 알아서 그 개념들이 링크가 되며 언젠간 이해가 된다.

그래도 업무에 대해서, 커리어를 위해서 하는 공부들은 당연히 이해라는게 필요하다고 생각한다. 내가 왜 이걸 사용하는지, 이게 왜 이렇게 동작하는지 등등

"왜?" 라는 질문이 항상 따라오는게 중요하다고 생각하다는 것이다. 

 

2. 개발자의 입장에서 하는 공부

개발자랑 가장 가까운 교재가 뭘까? 

모든 개발자들이 "Google" 이라고 입을 모아 말할거다. 

솔직히 개발 공부는 다른 공부들에 비하면 아주 조건이 좋은 편이다. 따로 책을 많이 구매하지 않아도 되고,

인간이 좀 더 무언갈 효율적이고 편하게 하기 위해서 만든 기술들을 공부하는거다보니, 그렇게 학문적인 개념도 아니다.

(따지고 보면 가전 제품의 사용설명서를 읽어본다는 느낌이랑 상당히 비슷하다.)

그리고 결정적으로 "왜?" 라는 질문의 답을 찾기가 아주 편하다. 왜냐면 최신 기술들이 나오는 이유의 대부분이 

"번거롭다." "귀찮다." "더 쉽게 못하나?" 라는 생각에서 출발하기 때문에, 어떤 기술을 사용하는데 있어서 불편함이 생기고 그 불편함에서 이 기술이 개발되었다. 라고 "왜?" 라는 질문에 대답을 할 수 있기 때문이다. 

결국 이 사용설명서를 찾아서 보는 과정이 개발자의 공부다. 뭐 갖다 외우고, 시험장에서 외운 지식을 막 쏟아내고 이런게 아니라는 거다. 

사용설명서를 다 외워서 사용하는 사람들이 흔할까? 아니다. 있긴 하겠지만 괴짜라고 불리겠지.

개발의 공부라는 건 일단 막 달달 외우는건 나중 일이고 내 생각에 사용설명서를 잘 이해하고, 아 이렇게 사용하면 되는구나. 하며 잘 정리해두었다가 시간이 흘러 어떻게 사용하는거였더라? 할 때 다시 찾아볼 수 있을 정도면 된다. 

이 정도의 공부라면 평생하라고 해도 할만하지 않은가? 당연히 언젠간 빡세게 공부 해야하는 부분도 생기겠지만,

그걸 평생하는건 아니니까. 너무 겁먹지 않고 시작했으면 좋겠다. 

 

3. 개발자에게 가장 중요한 베이스

1) 논리적인 사고

마지막으로 이 공부를 할 때 가장 중요한게 있다. 외우지는 못해도 이해라는건 꼭 필요한데, 

왜 이렇게 되는가? 라는 질문에 대한 답이다. 

많은 사람들이 그런 얘길 한다. 개발은 논리적 사고가 중요하다고, 논리적 사고라는 말이 어려운데

그냥 명확한 인과관계를 생각해낼 줄 알아야한단거다.

"B라는 결과가 생기기 위해서는 A라는 작업이 선행되어야 한다."

이런 생각을 잘 하는 능력을 키워야한다. 되게 단순해보이는 동작이라도 잘게 쪼개서 

세부적인 인과를 생각할 수 있어야만 개발에 무리가 없다.

 

2) 컴퓨터는 자동으로 뭘 해주는 기계가 아니다.

사람들이 컴퓨터가 등장하고 상당히 많이 착각하고 있는게 있는데, 사람이 해줄 필요없이 자동으로 컴퓨터가 한다.

이 생각이 착각을 불러일으킨다. 

컴퓨터는 생각을 대신 해주는 기계다. 사람이 10번 생각을 해야하는 일이라면,

컴퓨터도 10번 생각을 해야한다. 그냥 사람이 10번 하는거 싫으니까, 컴퓨터한테 야 이렇게만 생각하면 돼?

라면서 코드로 써주고 컴퓨터는 그 정해진 방법에 따라 10번 반복하는거다. 

즉, 뭔가 자동으로 해주는 기계가 아니라 사람이 정해준 길을 따라가는 기계이기 때문에

"아니 컴퓨터가 다 알아서 해줘야하는거 아냐?" 라는 생각이 드는 사람이라면 그냥 개발 하지마라.

(그렇다고 진짜 그만두지말고, 공부 열심히 해서 저 생각을 좀 바꿔라.)

LIST