스쿠나 손가락 20개 모은다
일단 필자는 흔히 말하는 고졸 괴물인가? 그렇지 않습니다! 그랬으면 네카라쿠배에서 초봉 5천 받고 일하고 있지
개발자를 꿈꾸는 고등학생 혹은 대학을 가지 않고 취뽀 중인 취준생들에게 개발자란 무엇인가를 알려주기 위한 글입니다.
참고로 제가 학교 다닐 때는 그냥 애니메이션 기가 막히게 잘 만들고 아키텍쳐 적용 많이 해보면 다 괴물이라고 불렸습니다.
사실 지금 보고 계시는 분들이 코딩 공부 어떻게 해야 할지 감도 안 잡히고 구현만 주구장창 해보시는 분들이면 좋겠습니다.(제발)
그런 여러분들께 코딩 공부 어떻게 해야 하고 왜 해야 하는지 감히 제가 알려드리겠습니다.
대학을 가지 않고 혼자서 공부하는 사람이 대졸자 혹은 그 이상의 개발자가 되기 위하여!
괴물은 그냥 저 혼자서 말하는 거라 누가 괴물이라 불러주지는 않습니다.
여기서 잠깐! 공부를 위해 구글링을 하는 당신에게 알려주는 구글링 하는 법
문장을 적지 말고 단어를 적어주세요.
잘못된 예시 "How to code in html"
올바른 예시 "html programming"
엥? 나 객체지향 뭔지 아는데?
당장 리액트를 쓰고 계신다면 JS나 TS를 쓰고 계실 거고 플러터 개발자라면 Dart를 쓰고 계시겠죠?
그렇지만 객체지향 언어를 쓴다고 해서 객체지향적인 코드를 짜고 있는 건 아니랍니다.
사실 언어 문법들은 다 거기서 거기니까요
시작하기 앞서 구현만 주구장창 해보시는 분들을 위한 글이라고 설명드렸습니다. 구현만 해봤다면 대부분 객체지향보다는 그냥 구현하기 위해서 프로그래밍 언어만 공부하셨을 거고 기초 문법만 익힌 상태로 구현하면서 추가로 공부를 하셨을 겁니다.
물론 객체지향 이해도가 없어도 구현하는데 아무런 문제가 없습니다, 오히려 한 코드에 다 때려 넣어서 쓰기는 훨씬 쉬울 테죠. 그러나 우리는 맛있는 라면을 끓여야 하지 어떻게든 라면을 끓이면 장땡이 아닙니다. (한강 라면 보다는 그래도 물 조절 잘 한 라면이 맛있으니까요)
캡슐화가 뭔지 알아요? 코드의 재사용성을 높이는 방법은 무엇이 있을까요?
객체지향을 모르는 상태로 면접에서 위와 같이 물어본다면 답할 수 있는 사람이 몇이나 될까요?
취업을 하고 회사에서 코드를 만지게 된다면 혼자 개발하는 게 아닌 다른 사람과 코드를 공유해야 합니다.
혼자서 개발을 하고 계시다면 죄송합니다.
다른 사람과 함께 개발을 할 때는 코드의 가독성과 재사용성이 높아야 하기 때문에 객체지향을 필수적으로 알아야 하는 거죠.
추상 클래스를 상속받고 인터페이스를 생성해서 코드를 짜는 게 API 관리하기도 좋고 프론트 개발자라면 디자인 패턴을 적용하는데 코드의 의존성을 최대한 주입하지 않는 걸 지향하니까요
무엇보다도 객체지향적 요소를 알면 타 분야의 사람과 얘기하기도 편해집니다! (객체, 클래스, 필드가 웹 코드엔 있는데 서버 코드엔 없을 리가 없으니까요)
여기서 알고리즘이란 자료구조 알고리즘을 의미합니다.
저는 백엔드 개발자도 아니고 프론트 개발자인데 자료구조 알고리즘이 왜 필요하죠? 일단 어디에 쓰는지 알아야 공부를 하죠!
기본 상식이죠 돈 많이 주는 기업에 가고 싶다면 꼭! 코딩 테스트는 필수입니다. 코딩 테스트 문제는 대부분 자료구조 알고리즘이라는 걸 명심하십쇼
물론 자료구조를 쓸 곳이 그리 많다곤 못하겠습니다. 그러나 위젯의 렌더링 구조는 대부분 트리 형식으로 이루어져 있죠. 리렌더링이 너무 자주 발생하거나 함수가 시작되는 타이밍을 알아야 하는 상황에서 코드의 렌더링 상태를 뜯으려면 트리의 이해도가 있어야 합니다.
더군다나 회사 서비스에서 애니메이션을 구현한다면? 지도와 같은 최단 경로를 띄워줘야 하는 상황은 다익스트라 알고리즘이 필요하죠.
코드의 중첩상태는 대부분 스택 구조로 이루어져 있으니 코드를 이해하려면 꼭 자료구조는 필수적이다!
사실 자료구조를 강조하는 이유는 제가 자료구조에 대해 모르고 취업했다가 사수님께서 설명해 주시는 코드를 이해하지 못했던....
고등학교를 다니는 3년 내내 자료구조와 CS를 미뤄두고 구현에만 신경 썼는데 그 결과가 이렇게 될 줄은 저도 몰랐습니다.
사실 저 두 개를 열심히 공부한다고 해서 나는 괴물이야!라고 하기는 힘듭니다. 그러나 어디 가서 저 개발자에요 라고 당당하게 이야기할 수 있습니다. 물론 면접도 당당하게 볼 수 있구요!
추가로 이런 걸 좀 공부했으면 좋겠다 싶은 건 일단 기초적인 백엔드 지식이 필요합니다. 토큰과 쿠키는 무엇이며 RestAPI는 또 뭐고 HTTP 메서드는 뭔지 필수적으로 알아야 합니다.
(회사에서 백엔드 개발자가 API 내려줬을 때 저게 뭐냐고 물어보면 이런 눈빛으로 쳐다봅니다)
그리고 수학! 열심히 공부해야 합니다. 기본적으로 수학을 잘하면 효율적인 알고리즘 짜기가 수월해집니다. (시간 복잡도 계산도 빨라지구요)
또한 애니메이션을 구현한다면 벡터 정도는 알아야겠죠?
고1에 수포자가 된 저도 2주 만에 코드로 구현했을 만큼 수학은 사실 쉽고 재밌는 학문이랍니다
이 글이 꼭 정답이라고 할 수는 없습니다. 저도 작년 7월부터 일하기 시작한 주니어일 뿐이니까요. 다만 제가 취업하고서 겪은 아 이거 공부 좀 할걸 싶었던걸 공유하면서 개발자를 꿈꾸는 학생들이나 취뽀 중인 취준생들이 도움이 되었으면 하는 바람입니다.
헉 이런거 필요했었는데 감사합니다 이런글일줄 몰랐네요ㅋㅋㅎㅋ