프로그래밍의 고수가 되는 방법.. 진지하게 질문드립니다

안녕하세요,

JAVA 전문가과정 이수해서 기초 개발자 수준이라도 좀 갖춰보고 싶은 욕구가 있는 소년입니다.

손댄 언어는 C, JAVA, PYTHON, PERL 정도 이지만…

대체로 Hello World 수준에서 크게 벗어나지 못했고 그나마 직관적인 python 이 좀 낫습니다. -_-;

전문가과정 풀타임 돌리는 학원을 다니려고 계획중인데요,

어느 학원이 좋은지 잘 모르겠습니다.

광고만 믿고 가기도 좀 그렇고 ㅠㅠ

회원님들 고견을 부탁드립니다,

어느 학원이 좋은가요?

그냥 저는 순수하게 프로그램 자체가 사랑스럽습니다.

지금 수준이 높지는 않아도 특히 python 으로 뭘 만들고 있으면 시간가는줄 모르겠습니다.

제가 앞으로 관련 IT 분야에 취업을 하고 싶어요.

공부를 계속하고 싶기도 하지만, 집안 형편이 한계에 도달한것 같습니다.

제가 현실적으로 살지 않으면 여러명 고생할 것 같아서,

저도 즐겁고, 여러사람 고생시키지 않는 사람이 되는게 꿈이에요…

그런데 관련 IT 기업 채용 하는걸 보니, C 아니면 JAVA 이더군요.

개인적으로는 JAVA 가 제가 지금까지 배운 컴퓨터 언어중에 최악으로 느껴졌던 언어였습니다.

리눅스 기반으로 그냥 직관적으로 짜나가는게 좋은데,

뭐 겜할거 아니라면… 윈도우를 켜는 순간… 깝깝 합니다. 여기 우분투 유저 님들 모두 공감하실듯요…

JAVA 는 좀 그렇지 않은것 같아서요… 물론 제가 잘 못해서 그렇겠죠.

장차 취업을 목표로 하는 현실적 이유가 있구요,

개인적으로 꽤 능숙한 개발자가 되고 싶습니다.

그냥 프로그래밍 수업만 들어서는 이게 잘 안되네요…

그래서 여쭤봅니다.

고수님들 어떻게 공부해오셨는지…

그냥 진짜 혼자 인터넷 돌아다니는 코드를 하염없이 연습해보는 방법 뿐인가요?

[quote="ryan0802":36r5gh73]
손댄 언어는 C, JAVA, PYTHON, PERL 정도 이지만…
[/quote:36r5gh73]

컴퓨터 공학과를 다니고 있는 저보다 많은 언어를 해보셨네요;;; 저는 C, C++, 자바 밖에… 실제로 사용해보지 않았습니다.

[quote="ryan0802":36r5gh73]
개인적으로는 JAVA 가 제가 지금까지 배운 컴퓨터 언어중에 최악으로 느껴졌던 언어였습니다.
리눅스 기반으로 그냥 직관적으로 짜나가는게 좋은데,
[/quote:36r5gh73]

저의 경우는 JAVA가 사용은 가장 편했고… 최악으로 느꼈던 것은 MFC정도였습니다. 제가 작성한 코드보다 Visual Studio가 작성해주는 코드를 변경하기가 영 불편해서… 그냥 아예 Win32 API로 프로그래밍을 했던 적이 있습니다.
저의 경우는 현재 C++을 공부 중이고… 좀 있으면 졸업이라서 졸업작품 준비로… C++과 QT를 이용해서 프로젝트를 할 계획입니다.

일단, 저는 고수는 아닙니다… 저도 그냥 학부생 정도의 수준에서 크게 벗어나질 못하겠더군요…;;;
저의 경우는 친구들이랑 같이 하는 편입니다. 그래서 서로 발표를 해가면서 공부를 하는 편입니다.

저도 요즘에 이런 것들 때문에 고민이 많습니다.
토익을 공부해야 정상적으로 졸업을 하겠는데…
토익은 하기 싫어도 해야하고… 프로그래밍은 공부하고 싶고 해야할 것이 쌓여있는데, 토익을 하는 시간 때문에 못 하는 것들도 있고…

어쨌든 제가 추천드리고 싶은 공부방법은 같은 관심사를 가진 친구들을 찾아서 같이 스터디 그룹을 만들어서 발표를 해가면서 공부를 하는 것이 가장 효과적이였던 것 같습니다.

제 학창시절을 보는것 같습니다. ^^
저도 학창시절에 님과 똑같은 꿈을 꾸고 있었죠.
결론적으로 10년넘게 다른일을 하고는 있지만,
아직까지 그 꿈을 버리지는 않았습니다.

단지, 이젠 프로그래머로 먹고 살겠다는 생각은 버렸고,
아주 예전에 데비안을 접하고 나서부터 오픈소스 프로그래머로 목표가 바뀌었습니다.
현재까지도 10년전 수준을 벗어나지는 못했지만, 꾸준히 공부하면서 방향만 잃지않으면 꼭 성공하리라 믿습니다.

그래서 말인데, 우분투 사용자 모임에 프로그래밍 스터디 그룹이 있으면 어떨까 생각이 드는군요.(포럼주제와 쪼끔벗어나긴하지만말입니다.)
다른 포럼들에 많은 프로그래밍 스터디 그룹이 있지만, 조금 많이 살벌하고, 수준이 하늘과 우주를 넘나들어
적응이 힘들더군요.
윗분 말씀처럼 여럿이 같이 하면 배움도 많고 재미있을거 같은데요.

[quote="atto":2igv16rq]그래서 말인데, 우분투 사용자 모임에 프로그래밍 스터디 그룹이 있으면 어떨까 생각이 드는군요.(포럼주제와 쪼끔벗어나긴하지만말입니다.)
다른 포럼들에 많은 프로그래밍 스터디 그룹이 있지만, 조금 많이 살벌하고, 수준이 하늘과 우주를 넘나들어
적응이 힘들더군요.
윗분 말씀처럼 여럿이 같이 하면 배움도 많고 재미있을거 같은데요.[/quote:2igv16rq]오오… 우분투 어플 프로그래밍에 관해 정보를 얻을 수 있다면 좋겠네요.
저도 찬성입니다.

저 또한 MFC가 가장 어려웠고(입맛대로 고치기가)
Java가 가장 쉬운 편이었지만, 제가 접했을 당시에는 성능이… 그래서 일찌감치 접었구요.
지금도 연구 센터에서 프로그래밍으로 밥먹고 살고 있습니다.

현재는 성능과 유연성을 타협해서 C++을 주로 사용하고 있구요.
적어도 윈도우즈에서는 C#도 괜찮은 편이라 생각합니다.

전 중학교 때부터 두꺼운 C프로그래밍 책들을 사서 혼자 공부한터라
체계도 없고, 이론적 바탕 지식도 없고…
이것 저것 삽질하며 알아낸게 전부였습니다.

그런데 컴퓨터공학과에 오니 제가 삽질해서 알아낸 방법들을 이론적으로 설명해 주더군요.
제가 힘들게 머리써서 구현한 것이 링크드 리스트였다는 것을 학부 2학년 수업을 듣고 나서 알았습니다.
그래서 수업이 재미있었습니다.
제가 다닌 학교에는 이론적인 수업들만 있고 실질적으로 사용할 수 있는 MFC나 Visual Studio, 디버거 등을
가르쳐주지 않는다고, 제 동기들은 "우리 학교는 쓸만한 수업이 없다"고 말하고 다녔지만…
전 그런 이론적 수업이 너무 좋았습니다.
집에 와서 C++과 Java로 직접 구현해서 비교해보기도 하고 재미있었죠.

무언가 조그만 목표로 삼고 끝까지 개발해 보는 것도 좋은 경험입니다.
전 알고리즘 문제들을 타겟으로 연습을 많이 했었구요.
학부 때 프로젝트로도 많은 경험을 할 수 있었습니다.
Java로 8인용 온라인 슈팅 게임 만들기, VC6과 OpenGL로 3D 탱크 게임 만들기 등을 했는데
그 때마다 필요한 기술들을 조사하면서 많이 배웠었지요.

언어의 기본적인 기술들을 잘 연마하고 나면, MFC나 Qt 같은 도구들은 비교적 쉽게 익힐 수 있습니다.
그리고 그러한 도구들에 숨어있는 기술들을 살펴보면서 감탄하기도 하지요.

취업을 목표로 하는 것이라면 자잘한 연습보다는
포트폴리오에 넣을 수 있을만한 완성도 높은 굵직한 프로젝트를 갖는게 좋을 것이구요.
작은 회사라도 들어가서 경력을 쌓는 것이 도움이 됩니다.

예전에 제가 아르바이트했던 중소기업은 개발진을 새로 꾸미는데 개발자를 찾을 수 없어서 결국 개발 계획이 무산된 적이 있습니다.
(지원자가 1명 있기는 했습니다만, "MFC에 대해서 간략하게 설명해 보세요"라는 질문에 'MFC가 뭔가요’하는 눈빛을 보내는데… Windows Mobile 개발자로 뽑을 수 없었습니다. 그분께 죄송…)
이름 있는 회사만 알아보지 마시고 적극적으로 자신을 홍보해 보십시오.
그리고 취업이 된 직후에 회사에서 익히는 경험으로도 실력이 많이 향상되고
자신의 부족한 점을 충분히 돌아볼 수 있을 것입니다.

전 대학생 때 용역업체에서 아르바이트하면서 낮에는 용돈을 벌고
퇴근하고 집에 들어와서 열심히 개발을 하고 한 적도 있습니다.
(근무시간이 적은 업체라 6시 칼퇴근에 주 5일제로 여유 시간이 많아서 선택한 일자리였죠.)
나이가 아직 젊다면 이처럼 여유 시간이 많은 아르바이트를 하면서 실력을 연마하는 것도 괜찮은 선택 같습니다.

프로그래밍하는 것 자체가 재미있다고 하시니
뭘 하시더라도 잘되리라 생각합니다.
화이팅!

제가 고수가 아니라서 이런 말하면 우습지만 적어봅니다.

첫째로 목표 설정을 잘 하셔야죠.
컴퓨터 프로그래밍도 다양한 방면이 있는데 어느쪽인지 명확히…
산업기기, SI, 웹, 게임 정도로 일단 나눠봤을 때 어느쪽을 지망하십니까?

혹시 RMS 같은 수준이 되고 싶으신가요?
그렇다면 택시 안에서 시거잭으로 충전하면서 작업할 정도의 집중력을 기르셔야 할 듯…^^
(몇년 전에 RMS가 한국에 왔을 때 에스코트한 분으로부터 들은 얘기 입니다.
정말 프로그래밍 신으로 불러야 될 정도의 집중력이었습니다;)

둘째로 좋은 멘토를 찾으시라는 겁니다.
학원이던 대학이던 정말 자신이 가고 싶은 방향으로 이미 수십년 해온 사람이 있을 겁니다.
저 또한 이제 겨우 학부 마치고 취업했습니다만, 멘토는 사방에 널렸습니다.

저희 학과에 수업 시간에 맨날 혼잣말하시는 교수님이 계신데,
알고보니 카이스트 나오고 정말 실력 뛰어난 분이었습니다.
심지어 제가 산 책의 머릿말에 ***교수에게 감사 드린다고 이름이 나올 정도로
(이미 제가 찾은 레퍼런스의 레퍼런스 급이란 의미죠…;)

저희 회사에(작은 회사입니다만) 선배 프로그래머들로부터도 배울게 너무 많습니다. 이쪽은 실험적이거나 재밌는것 보다는 협업을 위해 좀 더 잘 구조화하고 안정적으로 작업하는 법에 대해 알려 주고 있습니다.

암튼 좋은 멘토를 찾는게 중요 합니다. 누가 그러더군요. 배운다는 것은 받아 들이는 것이라고.

셋째로 집중하되 조급해하지 마시라는 겁니다.
스터디 그룹에 한동안 참여하면서, 정말 대단한 분을 만났습니다. 주말에는 흥미있는 코드를 프린트해서 잡지나 만화 보듯이 슬슬 넘겨가며 보낸다고… (아직 총각(;;)이신 걸로…;)

이거 저거 해보지 마시고 시스템 언어와 스크립트 언어 두개만 정해서 파시는게 어떨까 싶습니다.
천천히 재밌게 하는게 결국 남는 것 같습니다…^^

암튼 저도 부족한 점이 많지만 짧게 적어 봅니다.
어쩌면 위에 적은 건 제가 그러지 못했고 앞으로 이렇게 해야겠다는 생각을 적은 건지도 모르겠습니다…

[quote="akudoku":2r6uf62k]
이거 저거 해보지 마시고 시스템 언어와 스크립트 언어 두개만 정해서 파시는게 어떨까 싶습니다.
[/quote:2r6uf62k]
우왕, 제 스스로 평가하기에 저의 단점 중 가장 시급히 보완해야 할 것이 수족처럼 사용할 스크립트 언어가 없다는 건데, 시간이 가면 갈 수록 점점 절실해집니다. 공부할 시간은 없고… 사실 시간 없다는 건 스스로 만들어낸 핑계겠지만 ^^

이번에 python.or.kr을 통해 스터디 모임을 가지자는 제안이 있었는데,
서울이시면 함께 하시기도 좋을 텐데… 포항이셔서, 안타깝습니다…

[quote="akudoku":fbto2x79]이번에 python.or.kr을 통해 스터디 모임을 가지자는 제안이 있었는데,
서울이시면 함께 하시기도 좋을 텐데… 포항이셔서, 안타깝습니다…[/quote:fbto2x79]
크리스마스가 지나면 서울로 갑니다. 하핫…

앗 그러셨군요.
아마 크리스마스 직후부터 강남에서 모임이 있을 것 같습니다.
직접 모임장께 연락 주셔서 모임이 꼭 이뤄지게 프레셔 좀 주세요^^;

http://python.kr/viewtopic.php?t=25893

파이썬을 맛보는 좋은 기회가 될 것 같습니다.

미국에서 수학 석사 공부하고 있습니다.
우연히 교수님 리서치 어시스턴트로 채용이 되어서 프로그래밍을 하는데요.
전공은 경제학이고 컴퓨터관련 공부는 C언어(C++도 아닌)를 초,중학교때 배운게 다입니다.
그런데 요즘 C언어로 Parallel computing에 GPU를 이용한 프로그래밍까지 하고 있죠.
거기에 MATLAB에서 C를 import해서 속도를 높이는 단계까지 하고 있습니다.
다행히 하는 분야가 속도를 중요시하는 곳이라서 C++를 안씁니다만…
중학교때 배운 지식으로 6개월만에 여기까지 온 이유는 다 하나…
수도없이 무조건 모방하고 고쳐보고 직접 만들어 본다 입니다.
교수님이 뭐 해달라고 하면 인터넷 뒤져서 지식얻고 코드가 공개되어 있으면 카피해다 써보고
나한테 맞게 바꿔보고 에러나면 이것저것 바꿔서 다시 컴파일해보고…
시간은 무지하게 많이 걸리는데 하다보면 기존 코드 없이도 제가 그냥 만들게 됩니다.
밥줄이 달린 일이라서 죽자살자 덤벼든 이유도 있지만
어쨌든 중학교때 하던 실력으로 돈받고 잘 있습니다.^^
직접 연습이 무조건 중요합니다.
스터디든 혼자 공부든 시간투자하고 카피해보고 에러잡고 해보고 또해보고
방법은 그거밖에 없을듯 합니다.
그리고 하나더…
시간이 되면 이론적인 지식도 꼭 습득하세요.
기초없이 프로그래밍하다보니 넘을수 없는 벽도 있습니다.^^
화이팅

namhoonkim 님께서 말씀하신 것 처럼 C같은 언어는 비전공자들도 잘 사용하고,
어느 학원을 가도 4~5개월만 하면 쓸만한 수준으로 합니다. 다른 언어도 크게 다르진 않습니다.
언어라는게 '문법’과 '단어’만 익숙해지면 쓰는데 지장이 없으니까요 ^^

많은 언어를 접해보는 것도 프로그래밍에 대한 사고를 전환하기 좋은 방법일 수 있습니다만,
제 생각에 "프로그래밍 고수"가 되시려면, 언어가 아닌 알고리즘에 대해 공부하시는 게 좋습니다.

P.S) 개인적으로는 Perl을 선호합니다. 급하게 만들게 있을 때 막만들기 쉽기 때문에요^^

P.S) 국내대기업을 알아보신다면, 학업에 충실하면서 영어공부를 하시는 게 좋습니다.
국내에서 프로그래머로 취업코자 하신다면, Perl이나 Python 같은 언어는 별로 쓸모없을 듯 합니다. :slight_smile:

옛말(?)에 백문이 불여일견이요, 백견이 불여일타라고 했지요. ㅎㅎ

코드 백 날 쳐다봐봐야 한 번 코딩해보는 것보다는 못하다는 겁니다.

저 같은 경우, 컴퓨터 공학을 전공하였는데요, tinywolf 님처럼 대학에서는 언어 같은 걸 가르치지 않았기 때문에(대신 전통적인(?) 이론 위주의 커리큘럼이었습니다), 프로그래밍 언어는 항상 독학해 왔습니다.

독학하는 방법은 간단합니다. 독서대에 프로그래밍 책 펼쳐 둡니다. 책에 나와 있는 모든 코드를 다 쳐보고 다 실행해 봅니다. 문제 다 풉니다. 무조건 코딩합니다. 코딩코딩코딩코딩… '코딩만이 내 세상’이라는 노래도 있죠. (어디에!!!)

그리고 책은 단숨에 봅니다. 알고리즘 같은 책이 아니라 언어 자체, 특히 syntax 위주의 책이라면 일단 단숨에 보아야 한다는 게 제 지론입니다. 물론 그렇게 쉽게 단숨에 봐지지는 않습니다. 책에 나오는 모든 코드를 다 쳐보고 게다가 실행 가능하도록까지 코딩해서 돌려보는데 어떻게 빨리 볼 수가 있겠습니까. ㅎㅎ. 그러나 아무튼 syntax는 최대한 빨리 봐버리고 언어의 패러다임에 관해 더 공부하거나, 실전적인 예제를 접하면서 API의 사용법이나 실제 응용을 작성하는 데에 시간을 좀 더 할애하는 것이 언어를 배우는데에 더 좋다고 생각합니다. syntax는 어차피 static한 것이고 코딩을 열심히 하다보면 자연스레 익숙해 지기 마련이니까요. ㅎㅎ.

참, 위에서 패러다임 이야기가 나왔는데, 언어의 패러다임도 참 중요합니다. 객체지향 프로그래밍이니, 절차형 프로그래밍이니 많이 들어보셨을 겁니다. C++ 같은 경우 객체지향 프로그래밍 패러다임을 도입한 언어인데, 이게 자칫 잘못하면 얼마든지 C 처럼(즉 절차형으로) 짜는 것이 가능(?)합니다. 언어 자체의 특성과 언어가 지원하는 패러다임을 정확히 알고 '적확’하게 사용할 줄 아는 것이 참 중요하다라는 것이지요. 대학에서는 프로그래밍 언어론이라는 과목이 있습니다. 이는 프로그래밍에 대해서 배우는 것이 아니라 프로그래밍 언어의 역사와 종류, 그리고 그 패러다임에 관해 공부하는 학문입니다. 프로그래밍 자체의 스킬 향상에는 직접적인 도움이 되지 않을지 몰라도 다양한 언어들과 그 역사 및 프로그래밍 패러다임에 대해 잘 알아두는 것은 아주 중요한 것입니다. 또한 알고리즘과 자료 구조에 관해서도 잘 알아두는 것이 여러 언어의 syntax를 아는 것보다 훨씬 더 중요합니다. 알고리즘이나 자료 구조 때문에 같은 기능을 하면서도 현격한 성능 차이가 나는 것을 여럿 보았습니다.

이런 말이 있습니다. '프로그래머’가 될 것이냐 '코더’가 될 것이냐… 물론 전자 쪽이 되어야 겠지요. 프로그래머와 단순 코더를 구분하는 것이 위에서 언급한 것들입니다. 단지 많은 언어로 프로그래밍을 해보았다고 하여 고수가 되는 것이 아니라 그 언어 자체의 내면과 언어 외적인 것들 또한 동시에 잘 알아야지만 고수가 되는 것이 아닐까 합니다…

아참, 그리고 자바가 최악이라고 하셨는데, 프로그래밍 하실 거면 자바는 필수로 하셔야 할 것 같은데요. ㅎㅎ. 몇 년 전 데이터이지만 자바가 프로그램 언어 랭킹 1위거든요.;; 엔터프라이즈 쪽 프로그래밍하실 거면 아마 자바는 필수로 하셔야 할 겁니다. 참고로 요새(라고 하기엔 좀 철지났을 수도.; ) 프로그래밍 계(?)의 트렌드라고 하면 framework를 사용한 프로그래밍인데 자바 쪽에서는 스프링이 가장 유명한 것 같고 루비 같은 언어에서는 레일스 같은 것을 들 수 있겠네요. 언어 syntax를 공부한 뒤에는 이런 framework를 이용한 프로그래밍을 공부해 보시는 것도 좋을 듯 합니다. 게임 쪽 프로그래밍은 C나 C++로 많이 하시는 것 같고, WoW에서도 사용되고 있는 루아(Lua)라는 스크립트 언어가 게임 쪽 스크립트 언어로 유명하더군요. 개인적으로 관심 가지고 있는 병렬 프로그래밍 언어인 얼랭(Erlang)이라는 것도 있고…

세상은 넓고 프로그래밍 언어는 많군요. ㅠㅜ (어째 결론이…;:wink:

저는 전산 언어에 문외한이지만…
자기가 좋아하는 언어가 무엇인지를 아는것이 가장 중요하지 않나요?

위에 어떤분이… RMS의 집중력을 언급하셨는데… 미치면 그리될거라 생각합니다…
미치는게 중요하죠… 애인도/아내도 버리고… 한곳에 미쳐야 해요… 남자는!

그럼 못될게 뭐 있을까 생각되네요… 안미쳐서… 못미쳐서… 평범하게 사는게 아닐런지요…

요즘 저의 화두는… Gnus 에 미치는것입니다… 이상 잡설 끝… -_ -

알고리즘은 공부 하셨나요 ?
알고리즘 까지만 공부하셔도 hello world 수준은 아니라고 보는데요 ㅎㅎ;

수학공식이 많이 필요하긴 하지만 , ,그냥 들이대서 코드이해하고 풀어보고 , 바꿔보고 하면 실력은 자연히 늘어난다고 생각해요 ,

학원이라 . . 솔직히 학원이 큰도움이 될거같진 않네요 . .자기가 에러를 직접 찾아보고 왜 이렇게되는건지 생각도 많이해봐야하는건데 학원강의 들으면서 생각할 시간이 많을것 같진 않아요 ; ;

또 , 카페나 , 프로그래머 온라인 모임같은곳에 많은분들이 코드를 공개해놓으셨던데 , 그런것도 도움이 많이 되더군요 …

헤더파일까지 직접 만들고 어렵게 꽈서 짜신분들도 종종 있지만 … _-;;

하고싶은 말은 …

그냥 삽질이… 가장 기억에 오래남고 좋다고 생각합니다 . .