컴공 출신으로 개발자 커리어를 쌓으려고 할때 얘기임
대학원 갈 애들은 그냥 수학영어 열심히해라
1.
자료구조, 알고리즘 중요한 과목인데
무슨 알고리즘 있고 무슨 자료구조 있고 이런 걸 외우기보다는
"내가 필요한게 없다면 내가 직접 만들면 되는구나"라는걸 배우면 좋을 것 같음
거기 나온 알고리즘, 자료구조는
학자들이 직접 문제를 정의해서 만든것도 물론 있지만
학부에서 다루는 정도의 알고리즘은 대개 연구나 개발 프로젝트로 다른 일을 하다가
어떻게든 한정된 자원을 잘 활용하기 위해 고민끝에 만들어진 부가적인 산물인 경우가 많음
문제를 마주쳤을 때 이거 왜 라이브러리에 없지 불평하기보다는
직접 만들어서 쓰는게 마주친 문제에 더 적합할 가능성이 높음
2.
컴퓨터 구조도 물론 중요하지만
안에 회로가 어떻게 되어있고 마이크로연산이 어쩌고 메모리 소자가 어떻고 이런거보다는
내가 쓰는 코드는 다 제각기 비용이 있고
이 비용을 완화하기 위해 현재 내 실행환경이 이런 일들을 해주고 있고
다른 환경으로 간다면 어떻게 될것이다 하는 대강의 머릿속 계산이 된다면 좋음
아마 게임, 모바일, 임베디드 만지는 애들은 이게 어떤 말인지 대강 알거임
이런 분야는 애플리케이션 환경이 제각기인 경우가 많고, 환경에 따라 다른 방식으로 코딩하거나 빌드하거나 해야하는 경우가 많음
컴구 지식이 유용한건 그런 문제가 발생했을 때 고객이 "아무것도 안했는데"라고 하는 말을 의심만 하기보다는
문제가 무엇이 있을 수 있는지 대강의 후보를 추리고 문제 해결에 접근할 수 있다는 점에 있다
물론 고객은 99%확률로 아무것도 안 했을 리 없음.
3.
네트워크는 책으로 배우는것보다 처맞으면서 배우는게 더 낫다
네트워크는 그 지식이 유용하다기보다는
RFC 문서나 프로토콜 문서를 읽는데 겁을 덜 먹게 해주는 예방접종의 역할이 큰거같다
사람 문제이긴 한데
난 네트웍 장비 만드는 회사 다니고 있어서
신입 오면 일단 우리가 지원하는 프로토콜 문서들 읽고 특정 메시지들을 구현하게 시키거든
네트워크 배우고 들어온 애들은 확실히 좀더 그 문서를 읽는데 거부감을 덜 느끼는 것 같다고 느낌
뭐 그냥 걔가 에이스였을 뿐일지도 모르지만 ㅇㅇ
근데 네트웍 관련된 건
애플리케이션 레이어에서 개발하는 사람들은 거의 볼일 없을 듯.
걍 병신같은 밑바닥 프로토콜 안 봐도 된다는 것에 감사하고 HTTP나 잘 공부하도록 하자
4.
데이터베이스
는 정규화정도 배우고 끝내는 지잡대 나와서 아쉬운데
좋은 학교 가면 데이터베이스 밑바닥부터 구현하는 수업 있으니까 그거 해라
코스 따라가는건 자살마려울수 있으나
내가 생각하기엔 DB를 구현하는게
학부에서 주어진 시간과 자원을 가지고 할 수 있는
가장 실용적이면서도 교육적인 개발 실습인 것 같음
5.
운영체제는 솔직히 3학년때 배우는게 맞다고 생각한다
가끔 보면 2학년에 가르치는 곳이 있던데
내가 생각하는 개발자 커리어에서의 운영체제 과목의 의의는
전세계에서 가장 널리 쓰이는 애플리케이션(즉 OS)에서 사용되는 설계 패턴들을 배운다는점임
뭐 예컨대 TLB같은거
이게 운영체제에서만 쓰이냐?
사실상 점프테이블이 있는 모든 곳들에서 공통으로 쓰이는 패턴임
CoW, 캐싱, 태스크 분배같은 개념들도 엄청나게 유니버셜함
공룡책 목차를 다시 보고 있는데 메인메모리 파트에 개발자에게 유용한 내용들이 많은 것 같다.
3학년때 배워야하는 이유는
적어도 과제 몇 번 해보고 조그마한 프로젝트라도 해본 다음에야
운영체제에 적용된 패턴들이 익숙하게 보일 것이기 때문임
6.
~~프로그래밍, ~~개발
이런 과목들은 걍 독학하느니만 못한 쓰레기 시간낭비 수업들이므로
학점이 궁하지 않다면 듣지 말 것
---
이것들은 다 내가 개인적으로 느끼는거고
내 커리어와 경험에 비추어 쓴 것이기 때문에 적당히 걸러들으셈
학점이 실력을 대변해주는 건 아님
네트웍 장비사면 L2쪽 프로토콜도 만짐 ? ㅇㅅㅇ?
ㄴㄴ 그정도는아님
@박민준 어쨌든 잼있겠당.... 나도 뒤늦게 넷웍쪽 가고 싶어했었는뎅 ㅇㅅㅇ 지금은 더이상 회사에서 일하기는 여러모로 늦었지만
@박민준 근데 코드 비용문제는 어떤 면에서는 자료구조 알고리즘에서 다루는거 아니겠노 ㅇㅅㅇ?
@chironpractor 그 말도 맞긴 함 ㅇㅇ