비전공자 개발자도 다르지 않아요

image

⚠️ 이 글은 철저히 개인적 관점에서 작성했으며, 특정 단체나 개인을 타깃으로 하는 글이 아닙니다. 짧은 경험에서 적은 글이기 때문에 보시는 분에 따라 불편하신 부분이 있더라도 너른 양해 부탁드립니다.

들어가며

이 글은 개발을 시작할 때 ‘비전공자여서’ 가질 수 있을 막연한 두려움이나 오해에 관한 개인적 생각을 적은 글이다. 본문에서 언급하게 될 CS지식은 모든 개발자 커리어에서 가져가야 할 부분이다. 이 글에서 말하고자 하는 부분은 CS 지식이 중요하지 않다는 것이 아니라, 이 지식을 배우는 시점과 접근 방법에 관한 내용이다.

개발 공부를 시작하는 단계에서 “저는 비전공자인데, 무엇부터 하면 좋을까요?” 등의 질문을 심심찮게 많이 볼 수 있고, 교육 프로그램 등에서도 “비전공자를 위한 개발자 교육과정”과 같은 타이틀을 내거는 경우가 많다. 혹은, 채용공고에서 “컴퓨터 공학 관련 전공”이 자격요건에 명시된 경우도 있다.

전공, 비전공을 나누는 문장은 다음과 같은 전제를 내포하고 있다.

  • 전공자만 알 수 있는 영역을 알아야만 개발자가 될 수 있다.
  • 전공자와 비전공자는 같은 개발 지식을 받아들이는데 차이가 있을 것이다.

오해 1. 전공자만 알 수 있는 영역을 알아야만 한다

우선 용어에 대한 정의가 필요하다. 전공자만 알 수 있는 영역 이 무엇일까? 문장을 쓴 사람의 의도를 정확히 파악할 수는 없겠지만, 짐작해보자면 ‘운영체제, 네트워크, 자료구조’와 같은 컴퓨터공학 전공 수업 지식을 일컫는 말이 아닐까 싶다.

위에서 언급한 CS지식이 개발자에게 중요하지 않다는 것이 아니다. 오히려 짧은 경력에서 되돌아봤을 때, ‘그때 수업을 좀더 열심히 들을걸..’하는 후회가 될 정도로 중요한 지식이다.

필요한 지식은 때에 따라 다르다

개발 영역마다 다를 수 있지만, 컴퓨터 공학 커리큘럼에서 배우는 전공 지식을 모두 활용해야만 개발을 시작할 수 있는 것은 아니다. 시작하는 단계에서는 변수나 함수의 의미에 대해서 이해하고, 내가 작성하는 코드에 대한 고민하고 여러 가지 문제를 해결하는 것에 집중하는 것이 좀 더 의미 있을 수 있다.

당장 내가 만나는 문제들을 해결하는 데 사용 되지 않는 지식은 창고 속 오래된 물건처럼 차츰 그 존재와 내용이 희미해질 것이다.

지식이 왜, 언제, 어떻게 쓰이는지 아는 것이 중요하다고 생각한다. ‘필요할 것 같아서’가 아니라, 이 상황을 해결하는 데에 부족했던 지식을 채우기 위해 공부하는 것이 나에겐 공부 동기가 되었다.

문제를 해결하는 과정에서, 혹은 주위 환경을 통해 직간접적으로 접하게 되는 상황들에서 특정 지식이 필요하다면 그때 배워도 늦지 않다. 무엇이 필요할지 모르니 모든 것을 창고에 넣어 두는 지식보다는 내가 맞닥뜨린 상황을 해결하면서 얻게 되는 지식이 강렬하게 바로 ‘내 것’이 될 것이다.

가령, 성능 개선을 하기 위해 Waterfall차트를 살펴보고 Response Header를 살펴보면서 만날 수 있는 단어들에 대해 이해하고 싶어 네트워크 지식을 찾아볼 때 배우는 것도 늦지 않으며, 그 순간에 배우는 지식이 온전히 내 것이 될 확률이 높다고 생각한다.

필요한 지식은 분야마다 다르다

개발에는 ‘개발’이라는 한 단어로 묶기에는 많은 분야가 있다.

알고리즘을 예로 들자면, 내가 목표하는 분야나 서비스가 알고리즘을 바로 활용하는 분야라면 이 지식은 바로 내 것이 되어야 하지만, 그렇지 않다면 다른 지식을 먼저 공부해도 괜찮다고 생각한다. 분야마다 시작할 때 알고리즘 지식 필요 여부 는 다를 수 있다는 뜻이다.

취업을 목표로 할 때에는 조금 다른 이야기가 되겠지만(회사마다 알고리즘 테스트를 보는 경우도 있으니) 개발 공부를 시작할 때 반드시 알고리즘을 알아야만 시작할 수 있다고 생각하지 않는다.

물론 알고리즘을 풀다 보면 ‘코드 작성’과는 조금 친숙해질 수도 있겠다. 하지만 알고리즘 문제보다는 다양한 사이드 프로젝트를 해보면서 얻을 수 있는 ‘친숙함’이 더 크다고 생각한다.

알고리즘을 예시로 들었지만, 모든 지식을 공부한 다음 분야를 정하는 것이 아니라 내가 목표하는 방향에서 필요한 로드맵을 스스로 설계하는 과정이 필요하다고 생각한다.

오해 2. 전공자와 비전공자는 이해 속도에 차이가 있을 것이다

여러 기술 강의에서 “비전공자를 대상으로”하는 이유에 이런 생각이 있지 않을까 싶다. 아무래도 비전공자가 접하기 어려운 용어인 변수함수의 개념에 대해 이해하기 어려워할 것이며, 모든 흐름을 ‘천천히’ 설명해주어야 한다고 생각하는 것 같다.

결론적으로 위 말은 틀린 말도, 맞는 말도 아니다. 무엇을 이해하는 속도는 사람마다 다르다. 전공자나 비전공자 모두 개발에서 필요한 개념을 처음 접하게 되는 순간이 있고, 이를 이해하는 속도는 사람마다 다르다.

전공자라고 해서 누구나 특정 용에 대해 어려운 용어를 사용하며 설명하는 것을 바로 이해하는 것은 아니며, 비전공자라고 해서 한없이 풀어서 설명해야만 이해할 수 있는것이 아니다. 개개인이 가지고 있는 경험이나 성향에 따라 다를 수 있는 부분이 전공/비전공 프레임으로 나뉘는 것이 많이 아쉽다.

오해 3. 비전공자 출신 개발자는 대단하다(?)

유투브나 블로그 등에서 “비전공자 출신이 어떻게 개발자가 되었는지”에 관해 설명하는 컨텐츠를 많이 찾아볼 수 있다.

native_dictionary

아무렇지 않게 사용하는 ‘출신’이라는 단어의 원래 뜻은 다소 폭력적이다. ‘비전공자’가 ‘신분’이 될 수 있을까? 개발과 아무 관련 없는 분야에서 경험을 쌓다가 개발자 커리어를 시작하는 단계에서의 막막함이나 경험을 담는 것이 목적일 수 있지만, 아무렇지 않게 사용하는 이 단어가 차별 프레임에 일조하고 있는 것은 아닌지 돌아볼 필요가 있다.

비전공에서 개발자가 된 분들의 노력을 비하하거나 대단하지 않다는 것이 아니다. 그 노력들은 매우 대단하고 가치있는 일들이지만 새롭게 개발자를 시작하는 분들이 이 단어로 막연한 두려움을 가질 필요는 없다는 뜻이다.

비전공자이기 때문에 못 하는 일과 전공자이기 때문에 처음부터 잘하는 일은 없다.

마무리

이 글은 모든사람의 상황을 대변하지 못하며, 그저 주변에서 볼 수 있었던 몇 가지 상황에 관한 짧은 단상이고 두려움 에 대한 토막글이다. 시작할 때 가질 수 있는 막연한 두려움이 무력감이 된다면 발목에 모래주머니를 차고 시작하는 것과 다르지 않을 것이다.

다시 한번 이 글의 인트로를 첨부하며 글을 마친다.

이 글은 개발을 시작할 때 ‘비전공자여서’ 가질 수 있을 막연한 두려움이나 오해에 관한 개인적 생각을 적은 글이다. 본문에서 언급하게 될 ‘CS지식’은 모든 개발자 커리어에서 가져가야 할 부분이다. 이 글에서 다루고자 하는 부분은 CS 지식이 중요하지 않다는 것이 아니라, 이 지식을 배우는 시점과 접근 방법에 대한 부분이다.


👋@SO_YOUNG
📝 소소하게 끄적이는 개발로그

GitHubTwitter