잡담/진짜 잡담

[잡담] 기초에 관한 고찰

隣席の開発者群 2023. 6. 9. 16:59
반응형
매번 기초를 닦는 중인데 기초 닦으란 말을 들은 신입개발자

 
오늘도 똥글을 하나 쓰러 왔는데 분조장에 걸렸는지 더위 때문인지 그냥 별 일 아닌데도 분노가 치밀어 오르는 요즘에 내 화를 돋군 말 하나가 있다. 그게 뭐냐면 기초를 열심히 하라는 말이다. 따지고 보면 당연하게도 뭐 고작 1년도 못채운 개발자가 매일 같이 보는 지식들이 솔직히 뭐 대단한 고급 지식도 아니고 허구헌 날 자바스크립트 문법보고 회사에서 자바 공부하래서 자바 보고 하는 정도다. 그럼에도 불구하고 기초가 모자라다. 기초를 공부해라. 라고 말하시는 꼰- 들이 계시는데, 잠시 화를 식혀보고 기초란 무엇인지 생각해볼까 해서 이렇게 글을 남긴다. 
(솔직히 킹갓제네럴 등급에 속하는 네이버 카카오 넥슨 정도 회사 팀리더분들이 하라고 하면 하겠는데 애초에 서비스기업도 아니고 같은 좋좋소 SI 밥 먹으면서 왜 자꾸 꼰- 발언하는지 모르겠음.)
 
개발이라는 업무를 하는데 기초/기본은 과연 무엇일까? 이걸 생각해볼 수 있는 여러가지 방향성이 있다. 
 
1. 컴공은 뭘 가르치는가? 
아무리 개발이라는 분야가 "전공 무관" 이라는 자격조건을 달고 나오지만, 어쨌든 이 진로와 가장 근접한 학부를 생각해보면 컴공이 아닐까 한다. 그럼 컴공에서 가르치는게 기초가 되지 않을까 하는 생각에 다다르게 되는데, 대충 알아보니 뭐 소프트웨어 개발에만 국한된게 아니라 컴퓨터에 대한 부분은 다 과목으로 편성 되어있다고 생각하면 될 것 같다. 언어의 경우엔 C계열 언어 Python을 주로 학습하는 것 같고, 코테에서 공부하게 되는 자료구조와 알고리즘 같은 경우엔 컴공에서도 1학년과목에 편성되어있지만 통곡에 벽이라고 불리는 것 같기도 하다. 
그 외에도 다양한 CS 지식을 컴공을 다니면서 얻을 수 있는 것 같은데, 이 모든게 기초라고 하면 컴공 뽑지 왜 학원 발 비전공자 뽑았냐 라고 묻고 싶다. 
(당연히 이게 그 기초인가 싶지만 실무에서 거의 안쓰여서 판단 불가.)
 
2. 어쨌든 IT트렌드를 선도하고 있는 국내 서비스 기업들의 채용프로세스는 어떤걸 강조하는가?
좀 친다 아니면 우리 제대로 개발할거다 하는 국내 서비스 기업들이 하나 같이 채용프로세스에 넣어둔게 코딩테스트다. 뭐 다른 공기업, 대기업들이 자기네들 회사오려면 쳐야한다는 시험을 만들어 놓은거보단 낫지만, 어쨌든 단순히 서류-면접-결과발표 이런 채용프로세스 채용을 하는 회사는 좋좋소 밖에 없다고 보면 된다는 거다. 그럼 코딩테스트의 목적이 뭔지를 생각해보면 대충 기초가 뭔지 알 수 있지 않을까? 라는 생각이 든다. 코딩테스트를 아예 제대로 쳐다본적도 없다면 모르겠지만 좀 준비해보겠다고 깔짝깔짝 몇문제 풀어보거나 여기저기서 정보를 주워보면 알텐데, 기본적으로 코딩테스트 준비의 시작은 내가 사용할 언어에서 알고리즘을 만드는데 필요한 문법을 마스터하는거에서 시작이다. 전체적으로 공부흐름을 살펴보면 내가 쓸 언어의 문법 공부 => 자료구조 / 알고리즘 이 순서임.
(그럼 귀납적 추론 방법으로 생각했을 때 개발의 기초는 언어의 문법 + 자료구조 + 알고리즘이다.)
 
3. 정보처리기사를 취득하기 위해 학습하는 내용에는 어떤게 있는가?
저번에도 정보처리기사 글 쓰면서 말했는지는 모르겠지만 다른 분야는 자격증이 신인 반면에 이 분야는 자격증은 개똥 같은 취급이고 "와서 니 코드로 말해라." 라는 분위기이기 때문에 정보처리기사는 "나 겁나 잘해여~" 라는 자격증이 아니라 "핫하.. 아예 모르진 않아요.." 라는 뜻에 가깝다. 그래서 기초를 알고 있느냐? 라는 의문에 정보처리기사가 생각보다 답이 될 지도 모르겠다는 생각이 들었다. 
정보처리기사에서는 다섯가지 파트로 크게 과목을 구분하는데 (필기 기준임)
 
1) 소프트웨어설계 (기획, 공수산정, 개발방법론 등등)
2) 소프트웨어개발 (디자인패턴 등 개발을 하는데 개발자가 가지고 있어야하는 배경 지식)
3) 데이터베이스구축 (말 그대로 DataBase 얘기만 나옴. 주로 집중되는 내용이 SQL문법)
4) 프로그래밍언어활용
(C, Java, Python 이 세가지 언어를 기준으로 주요한 개념/문법 학습함. C는 포인터 나오고 뭐 OOP 이런 개념들도 여기로 기억함)
5) 정보시스템구축관리
(여기는 소프트웨어 개발이라기 보단 IT 라는 포괄적인 분야의 지식들이라고 생각한다. 뭐 당연히 소프트웨어 엔지니어도 알아야 하는 내용들이긴하다. HTTP, 보안 이슈 , TCP/IP 이런게 나옴.)
 
이렇게 된다. 
근데 솔직히 정보처리기사 과목들 다 살펴보면 알겠지만 이게 소프트웨어 개발을 하는 전체 업무 프로세스를 다 설명하고 있기도 하고 개인적으론 서비스 기업은 다 제쳐두고 SI에서 큰 의미를 가지는 업무지식들이라 전체 업계에 적용되는 기초라고 부르긴 좀 애매하지 않나? 라는 생각이 든다. 
(정보처리기사는 개발의 기초라고 부르기 힘들고 SI의 기초라고 부르는게 맞을 것 같다.)

LIST