옵션 |
|
(펌주: 내용이 괜찮아서 퍼와요)
안녕하세요.
부족하지만, 후배 컴퓨터공학부 학생분이 고민을 토로하는 것 같아서 감히 주제넘게 글을 작성해 봅니다.
저는 속칭 "네카라쿠배" 라고 하는 회사 중 한 곳에서 현업 프로그래머로 재직하고 있습니다.
제가 간략하게나마 소속을 밝힌 이유는, 그래도 제가 해왔던 공부가 아예 의미가 없거나, 쓸모가 없는 것임을 그나마 보여 드릴 수 있는 것이라고 생각해서 간략하게나마 밝히게 됐습니다. (그렇다고 공모전이나 사업같은걸 명시하면 제 신상 자체가 알려질 수도 있어서...)
먼저 제가 말씀 드리는게 모두 정답은 아닐거라고 생각하고, 현업 프로그래머들 중에서도 종사하는 분야마다 해당 사안에 대해 많이 의견이 갈릴 수 있기 때문에, 제 말이 꼭 정답은 아닐것 이라고 생각합니다.
해당 고민은
1. 아무것도 한 게 없는데 1학년이 끝났다. 이대로라면 아무것도 못한 채 졸업하는게 아닐까 두렵다
2. 공부를 찍먹수준으로 했는데 그나마저도 다 까먹었다. (예시로는 언어 관련해서 들어주셨습니다)
3. 코딩할 때 세미콜론 빼먹는 행동으로 인해 에러가 안 뜬적이 없다.
4. 벼락치기 특화라 하루 공부하고 까먹고 하는걸 반복한다
4가지로 정리 할 수 있을 것 같습니다.
Q1) 아무것도 한 게 없는데 1학년이 끝났다. 이대로면 아무것도 못한 채 졸업하는게 아닐까 두렵다
A1) 어느 학교의 컴퓨터 공학부에 재학중이신지 제가 정확하게는 잘 모르겠지만, 제가 커리큘럼을 아는 바의 학교들 (과기원들, SKY) 에서는 3학년까지는 실제 프로덕트랑을
거의 상관없는 수업만 합니다.
그리고 보통 개념만 가르쳐주고 언어는 따로 배워야 하는 경우가 많죠
저같은 경우는 3학년 프로그래밍 언어 시간에 2주에 하나씩 다른 언어로 과제를 제출 했던 기억이 있습니다.
컴퓨터 공학부에 재학하시게 되면, 아마 컴퓨터의 동작원리에 대해서만 주구장창 배우게 될 거에요. 하드웨어부터 소프트웨어 베이스까지
물론 이런 베이스가 없으면 더 좋은 프로덕트를 만드는 것은 무리가 있기 때문에 이런 베이스를 배우는건 굉장히 중요합니다.
다만 이런것들을 바로바로 적용할 수 있어 보이는데, 전혀 어떻게 해야할 지 몰라서 방황하는 마음 충분히 이해합니다.
저는 그래서 미숙할 때라도 방학때마다 틈틈히 개인 프로젝트를 하나 해보는 것을 권해드리고 있습니다.
1학년이라고 말씀하셨으니 1학년 수준에서 딱 알맞게 해 볼수 있는 프로젝트가
가지고 계신 컴퓨터의 운영체제가 Windows 라고 가정하겠습니다.
그러면 Windows 에 있는 API 를 호출할 수 있다는 것을 찾아보시면 그림을 그릴 수 있는 방법에 대해서 많이 나와있습니다.
해당 그림 그리기 API 와 타이머 API 를 조합해서 간단한 게임을 여러개 만들어 보는 것 부터 시작해 보면 좋을 것 같습니다.
아마 게임을 만들면서 굉장히 많은 고민을 하게 될텐데, 해당 고민들을 전부 적어놨다가 한번씩 찾아보시면
추후에 더 깊은 컴퓨터 공부를 할 때 분명 큰 도움이 많이 될 것입니다.
이것과 관련해서도 더 길게 말씀드리고 싶지만, 그건 필요하시게 되면 다시 질문주시면 더 상세한 답변 드리겠습니다.
Q2) 공부를 찍먹수준으로 했는데 그나마저도 다 까먹었다. (예시로는 언어 관련해서 들어주셨습니다)
A2) 흔히 대학을 다니게 되면 있을 수 있는 일입니다. 중요한 것은 까먹고 공부하고 까먹고 공부하고를 반복하다보면 특정 기초 개념들은 압축 된 형태로 머리에 남는다고 생각합니다.
농담중에 전공자는 제대로 설명은 못하지만 그게 맞는지 틀린지는 안다 가 여기서 유래한다고 생각합니다.
까먹었다고 생각하면 다시 보세요. 그리고 컴퓨터를 켜서 다시 코드를 쳐보시면 됩니다.
그리고 수학과 물리 이론을 코드로 구현해보는것도 굉장히 재미있는 프로젝트에요.
어떻게 미분/적분을 컴퓨터로 구현하는걸까?
행렬 계산은 어떻게 컴퓨터에서 구현하는거지?
일반화된 물리식을 넣었을 때 물체의 운동 예측하는 시뮬레이션을 작성해볼까?
하는 프로젝트들이 있을 수 있겠네요.
예전에 자바스크립트로 웹에서 해당 내용을 시각화 해서 보여주는 코드가 있었는데 어디갔는지 잃어버려서 예시로 들어드릴 수 없는 점 죄송합니다.
아마 서치하면 많이 나오긴 할거에요.
Q3) 코딩할 때 세미콜론 빼먹는 행동으로 인해 에러가 안 뜬적이 없다.
A3) 아마 누구나 그럴거라고 생각합니다. 처음부터 두루루루 완벽하게 짤 수도 없고, 그럴 필요도 없습니다.
심지어 컴파일이 되고 런타임상태일때도 프로그램은 많이 죽어요. 심지어 죽지 않더라도 로직버그들도 굉장히 많이 생깁니다.
프로그래밍 이라는 것은 그런 모든 것들을 계속 디버깅하고 찾아나가는 과정이라고 생각하면 됩니다.
기본적으로 컴퓨터는 바보기때문에 인간의 손길이 많이 필요하다 라는 측면에서 바라봐 주시고 포기하지 않는게 더 좋다고 생각해요.
전 컴퓨터 공부하면서 세미콜론 안찍고 오류나서 짜증나서 포기했다는 글을 볼때마다 슬픕니다.
그건 컴퓨터의 본질이 아니에요. 공부를 할 때는 좀 더 본질에 집중 하는게 좋을 것 같다는 생각이 항상 있습니다.
세미콜론 그까이꺼 아무것도 아닙니다. 결과적으로 중요한건 작동하는 프로덕트를 만들었느냐 못만들었냐 입니다.
Q4) 벼락치기 특화라 하루 공부하고 까먹고 하는걸 반복한다
A4) 위에서도 말씀드렸다시피 잊어버렸으면, 잊어버린걸 다시 보고 다시 잊어버리고 다시 보고 잊어버리고 하는걸 반복하는게 가장 중요합니다.
근데 이걸 위해서 가장 좋은것이 product 를 하나 만드는거에요.
지금은 고급 컴퓨터 지식에 대해서 배우고 계시는 단계는 아니기 때문에 네트워크를 사용하더라도 잘 포장된 네트워크 라이브러리들을 사용하면 되고
그래픽스도 Direct X, OpenGL 같이 거의 최 밑단 말고, 잘 포장된 라이브러리 들을 찾아보면 많이 찾을 수 있습니다.
(언어 + 그래픽 라이브러리 or 네트워크 라이브러리 등으로 검색하면 많이 나올거에요)
추후에 이런 애들이 어떻게 동작하는지 라이브러리 코드까지 뜯어보면 확실하게 공부가 되면서 개념이 체화 될 것 이라고 생각합니다.
아직까지 저도 많이 부족하고 항상 공부하는 입장이지만,
저도 옛날에 했던 어려운 고민들을 하시는 후배님을 보니 오지랖이 발동해서 글을 안 쓸수가 없었네요.
부디 재미있게 정말 중요합니다 "재미있게" 공부 하시고 즐기면서 현업에서 꼭 뵐 날이 오면 좋겠습니다.
긴 글 읽어주셔서 감사합니다.
웃대답글에서의 문답)
출처 | http://huv.kr/pds1128798 |