안녕 난 감자야!
요즘 많은 사람들이 코딩붐으로 국비지원학원으로 많이 배워서 실무로 나가는데 실무에 나와서도 멘탈이 많이 흔들릴 것 같아
배울건 왜 이렇게 많은것 같은지.. 배울게 끝이 없잖아
실무에서 보면 나랑 똑같이 새로 배우는데 배우는 속도가 무슨... 사기캐같고 그렇게도 느껴질거야
사람마다 지능차이도 있겠지만 대부분 그런사람들은 기본기가 탄탄할 확률이 높아
대학교에서는 기본위주로 알려주는데 배우는 입장에서는 지루하기 딱이없어
나도 대학다닐 때 이런 커리큘럼말고 실무위주로 알려주면 안되나... 생각도 했었는데 지금 생각해보면 굉장히 좋은 커리큘럼이였어
프로그래머가 가져야할 가장 기본은 논리력과 프로그래밍 언어인건 다들 알고있을거야
요즘 많은 곳에서 파이썬이나 자바스크립트로 가르치는데 이건 뭐 입문자들은 너무 어려우면 흥미를 잃을 수도 있으니까 문제가 없다고 생각해
하지만 이것만 배워서 컴퓨터를 이해하기는 조금 어려워.
C언어와 같은 상대적으로 저급언어를 배우는게 중요해(어셈블리어는 특수한 분야 아니면 쓰이는게 적으니까 패스)
C언어는 사용자가 메모리관리를 해야하는데 이때문에 포인터를 배우고 자연스럽게 메모리에 대한 이해력이 생겨.
C언어를 배웠으면 자료구조를 배우는게 좋다고 생각해.
자료구조는 말 그대로 데이터구조를 말하는 건데 프로그램을 만들 때 머릿속으로 일단 생각하고 데이터를 어떻게 다룰까를 생각할텐데
흔히 쓰이는 자료구조를 알고 있으면 "이런 상황엔 스택이 효율적이겠어" 라는 판단을 하게돼.
프로그램은 데이터가 어떻게 구성돼있는지에 따라서 달라져. 일반 변수를 처리하는 로직과 배열을 처리하는 로직은 당연히 다르겠지?
자료구조를 배웠으면 알고리즘을 배울거야. 이건 거의 같이 배우게되는데 데이터 구조가 달라지니까 사용하는 알고리즘도 달라져.
알고리즘도 배우면 프로그래밍을할 때 "이런 상황엔 이런 알고리즘을 사용하면 되겠네" 하는 아이디어와 이를 응용할 수 있어.
이제 컴퓨터 구조, 운영체제, 컴파일러같은 개념적인것도 공부하면 좋아.
실제로 너가 만든 C프로그램이 어떻게 컴파일이돼서 기계어가 되는지, 이것들이 어떻게 프로세스가되고 운영체제는 이걸 어떻게 관리하는지, 프로세스 메모리는 어떻게 구성되고 어떻게 관리되는지, CPU는 어떻게 프로세스들을 처리하는지 개념이 생길거야.
난 이런 지식이 실무에서 엄청 도움됐었어. Python Django로 일할 때였는데 운영체제의 동기화 문제가 발생했는데 동기화문제는 항상 에러가 나오는게 아니라 찾기도 힘든데 예전에 배웠던게 생각해서 의심했더니 그런 문제였더라고.
암튼 개념적인 부분도 굉장히 중요하다고 생각해!
시스템 프로그래밍같은 경우도 OS의 시스템콜을 사용하다보니 공부하면 프로그래밍 실력이 많이늘거야.
시스템 프로그래밍은 보통 리눅스로 학습할텐데 옛날 커널을 이용해서 오버플로우도 하면서 해킹도하고 재미있을거야!
나는 이때 리눅스에 미쳐서 GUI도 이쁘게 막 바꾸고 커맨드도 많이 공부했었어.
이정도로 배웠으면 기본은 충분하다고봐.
언어는 C언어 밖에 몰라도 다른 나머지 언어는 쉽게 배울 수 있을거야.
교수님들이 항상 하시던 말씀이 있었는데
"프로그래밍 언어는 도구일 뿐이다" 이거였어.
그때는 이해가 안갔어. 언어 하나도 하나의 학문? 처럼 느껴졌는데 시간이 지나보니까 진짜 새로운 언어배우는건 일도 아닌것 처럼 느껴져.
나는 객체지향을 공부하려고 C에서 C++넘어갔었어. 당연히 같은 계열의 언어니까 굉장히 비슷하고 쉽게 배울수 있었어.
그리고 JAVA와 C#을 배워보니까 언어는 전부 거기서 거기더라고.
너가 가고싶은 분야가 있을거야.
웹이면 프론트엔드,백엔드
게임이면 클라,서버
모바일이면 안드/iOS나 하이브리드
윈도우 개발자면 Qt나 MFC배우겠지
그럼 해당 분야에 프레임워크를 배우면돼.
근데 지금까지 프레임워크는 안만져봤으니 좀 어색할거야.
나도 Django를 배울때 전체적인 구조가 머리에 안그려져서 익숙해지는데 시간이 걸리더라구.
이거는 프레임워크로 포트폴리오 만들면서 연습하고, 취업해서 꾸준히 만지다보면 전문가 수준이 되니까 걱정하지마.
회사 입장에서도 학원에서 특정 프레임워크만 배워서 그것만 할 줄 아는 사람보다 기본기 탄탄해서 성장 상한치가 높은 사람을 원할거야.
특정 프레임워크만 배워서 오면 얼마든지 시장에 많이 있잖아?
학생때 재미로 유니티 배울때는 아무것도 모르는 수준으로 프로젝트를 마쳤는데 진짜 게임을 만들겠다는 마음을 먹으니까
이게 또 쉽게 배워지더라고.
실무에가면 개발하느라 바쁘니까 기본기 쌓을 시간이 많이 부족할거야.
실무에선 Git이나 디자인패턴이나 개발방식같은 스킬에도 투자해야하잖아.
학생이면 시간이 많으니까 기본기에 많이 투자하길 바라고 실무자라도 시간내서 기본기 익혀두는걸 추천할게!

한줄 정리 - 기본기!!!!
나랑 생각 다른친구들 댓글환영~
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.