개발자에게 CS 관련 지식이 필수인지에 대한 주제를 논하기 전에 CS가 무엇인지 알아보자.
컴퓨터공학(-工學)은 정보화 사회에서 컴퓨터의 하드웨어와 소프트웨어 그리고 통신 및 네트워크를 연구하여, 컴퓨터 시스템과 컴퓨터와 관련된 여러 기술을 개발하여 익히고 이를 각 분야에 응용함을 목적으로 하는 학문 분과이다.
말그대로 컴퓨터와 관련된 컴퓨터 구조, 아키텍쳐, 네트워크, 프로그래밍, 데이터베이스, 정보 보안, 알고리즘 등 다양한 지식들에 대해 공부하고 연구하는 것을 말한다.
그렇다면, 이러한 CS에 관련된 지식들이 코드를 작성하고 서비스를 개발하는 개발자에게 필수적인 것일까?
먼저, 개발자가 되기 위해 CS관련 지식들을 필수적으로 가지고 있어야되냐고 한다면 내 의견은 '필수는 아니다' 라고 할 수 있다.
CS지식을 제대로 알지 못해도 코드를 짜고 서비스 개발이라는 결과를 도출해내는 것은 할 수 있다고 생각한다.
그러나, 역설적이게도 좋은 개발자, 누구나 존경하는 개발자, 스스로 생각하는 개발자가 되기 위해서는 'CS 지식에 대한 공부는 필수'다.
무슨 일을 하든 기본기가 탄탄해야된다는 말을 수없이 많이 들었을거고 중요하다는 것은 누구나가 알 것이다.
개발자에게 CS지식을 공부한다는 것은 기본기를 탄탄하게 한다는 의미와 동일하다고 본다.
특히나, 요즘과 같이 오픈소스의 좋은 라이브러리들이 넘치는 세상에 CS라는 학문을 머리아프게 공부할 필요가 없다고 생각할 수 있다.
개발자가 되기위해 공부하면서 들은 말중 '자동차를 제작할때 기존에 만들어진 바퀴가 있는데 이것들 새로 만드는 것이 옳은가?' 라는 말이 있다. 이는 생산성 향상에 아주 중요한 포인트가 되는 말이라고 볼 수 있다.
하지만, 바퀴를 처음부터 새로 발명할 필요는 없지만 바퀴라는 것이 왜 둥글게 만들어졌고, 제작할 때 왜 그러한 재료, 공정을 적용했는지에 대해서는 알 필요가 있다.
남이 만들어놓은 것을 왜라는 질문없이 무작정 사용만 한다면, 추후 해당 부분에서 문제 발생시 왜 문제가 발생하였는지 감조차 잡지 못할 것이다. 또한, 근본적인 것들을 궁금해하다보면 누군가 만들어놓은 것을 더 효율적인 구조로 변경할 수도 있을 것이다.
나는 컴공이 아닌 비전공자(금속재료를 전공함)로 23년 5월 엘리스 부트캠프를 통해 개발자 관련 공부를 처음 시작했다. 해당 부트캠프에서는 6개월이라는 짧은 시간안에 HTML, CSS, JS, Node.js, React, Python, Docker 등 여러 언어와 프레임워크 사용법과 CS관련 지식을 함께 교육해주기 때문에 광범위한 CS 지식들을 다 배울 순 없었고 해당 교육내에서 배운 CS 지식들을 온전히 내것으로 소화해내기도 어려웠다.
따라서, 현재 정보처리기사를 취득하기 위해 공부하며 소프트웨어 개발 방법론, 데이터 모델, 데이터베이스, 트랜잭션, 운영체제 등 다양한 지식을 습득 중에 있다.
23년도 정보처리기사 취득을 목표로 7월경 필기는 합격하였고 10월 7일 실기시험을 앞두고 있다. 23년도 마지막회차이기 때문에 무조건 합격을 노릴 것이다. 혹시나 떨어지면 24년도 1회차 시험까지는 텀이 매우 길 것이기에...
그리고, 정보처리기사 합격 유무에 관계없이 CS관련 글을 지속적으로 작성하여 CS 지식을 온전한 내 것으로 만들기 위해 나만의 아카이브를 구축해 나갈 것이다.
이를 통해 나는 단순히 테크니션이 아닌 엔지니어로 거듭날 것이다.