대학 직후에 좋은 프로그래머가되어야합니까?


28

가능한 중복 :
나는 컴퓨터 과학 학위를 졸업했지만 전문 프로그래머가되는 것조차 느끼지 않습니다.

나는 최근에 대학을 졸업 한 후 개발 팀에 합류하여 경력이 가장 적은 개발자로 내 벨트 아래에 몇 가지 작업 조건이 있습니다. 한편, 팀의 나머지는 5-10 년의 경험을 흔 듭니다.

병에 든 과제와 시험을봤을 때 나는 아주 좋은 학생이었고 아주 좋은 프로그래머였습니다. 나는 일부 프로젝트를 성공적으로 수행했지만 지금은 더 큰 코드 기반으로 작업하고 있으며 학습 곡선이 훨씬 높습니다.

나는 다른 많은 개발자들이 팀에서 경력을 쌓기 시작하고 그들이 빨랐던 것처럼 떠 났는지 궁금했습니다. 언제 변경됩니까? 프로세스 속도를 높이려면 어떻게해야합니까? 내 선배들이 나를 돕고 있지만 나는 위대하고 내 가치를 지금 보여주고 싶다.

답변:


50

소프트웨어 개발의 흥미로운 점은 그것이 얼마나 좋은지 중요하지 않다는 것입니다. 몇 달 전에 작성된 코드를보고 경험 수준에 관계없이 코드가 빠르다고 생각하는 것도 드문 일이 아닙니다.

저는 저의 기술과 동료의 기술 사이의 차이를 깨달았을 때, 다른 사람들의 코드, 블로그 게시물, 서적, 동료가 일을 수행하는 방법에주의를 기울이는 등 다른 사람들의 코드, 블로그 게시물, 서적을 읽은 적이 없었던 것처럼 배우기 시작했습니다. University는 컴퓨터 공학을 위해 나를 준비했지만 실제로는 소프트웨어 개발을 위해 준비하지 않았습니다. 거의 4 년 후, 나는 예전보다 훨씬 강력한 소프트웨어 개발자입니다. 그러니 거기에 매달아 주변 사람들로부터 가능한 많은 것을 배우십시오. 더 나아질 것입니다.


+1. 나는 또한 팀에서 무언가를 빨아 먹는 것을 매우 좋아했으며, 제 지식을 조정해야했습니다.

27
+1University prepared me for computer science, but not really for software development.
George Marian

1
나는 uni를 끝내고 프로그래밍 사업에서 첫 번째 (오, 잠깐, 두 번째) 일을 할 때 같은 경험을하기를 바랍니다.
gablin

4
@George : 더 나쁜 것은 현실 세계에서 많은 소프트웨어 개발이 "IT"에 속한다는 것인데, 이는 보통 못생긴 사용자 인터페이스를 데이터베이스 테이블에 두드리는 것으로 요약된다. :( 정확히 대학이 당신을 준비시킬 수있는 것은 아닙니다.
Adam Paynter

@ 아담. 필자가 때때로 그 필요성을 이해하고 있지만 "충분히 좋은"접근 방식은 저를 혼란스럽게합니다.
George Marian

23

아니요. 저는 대학을 떠난 후 처음 6 개월 동안 프로그래밍 / 소프트웨어 공학에 대해 전년도에 비해 많은 것을 배웠습니다. 그러나 이것이 대학이 시간 낭비라는 것을 의미하는 것은 아니며, 제 마음을 준비하고 구축 할 배경 지식을 제공했습니다.

그리고 다시 돌아와서, 나는 여전히 내가 6 개월 동안 무엇을하고 있는지 알지 못했습니다.


4
교수님은 항상 "업계와 학계 사이에는 큰 차이가 있습니다"라고 말했습니다. 당신이 현실 세계로 빠져 나와 실제로 그곳에 있다는 것을 깨닫기 전까지는 믿기가 어렵습니다!
Chris

이. 이것이 바로 인턴쉽, 무급 또는 무엇이든 얻을 수있는 가치가있는 이유입니다. 심지어 비 프로그래밍 인턴쉽조차도 어떤 사람들이 경험할 수있는 것보다 훨씬 더 가치있는 경험이 될 것입니다. 왜냐하면 사람들과 함께 일하는 것의 일부 함정을 배우기 때문입니다.
Kzqai 2016 년

10

교육은 기초를 제공하지만 실제 생활에서 소프트웨어 개발을 준비하는 것은 아닙니다. 그것은 경험과 함께 제공됩니다. 나는 직업 프로그래밍을 처음 시작할 때 당신과 같은 상황에 있었다. 계속 배우고, 책을 읽고, 블로그 게시물을 읽고, 배운 내용을 직업에 적용하는 한 향상 될 것입니다. 열쇠는 배운 것을 적용하는 것입니다. 읽는 것만으로는 도움이되지 않습니다. 새로운 지식을 적극적으로 적용해야합니다.


배운 내용을 적용한 +1 나는 그 부분을 언급하는 것을 잊었다. :)
Adam Lear

7

나는 확실히 내가 생각했다. 그러나 나는 아니었다.

당신의 경력의 어느 시점에서 돌아가서 작성한 코드로 작업하려고하지만 몇 년 동안 만지지 않았고 필사적으로 다른 전문 개발자가 해당 코드를 보거나 작성한 것을 절대로 원하지 않기를 바랍니다. 그것은 당신이 성장하고 있음을 의미합니다.


4

어떤면에서 프로그래밍 언어를 선택하는 것은 자연 언어를 선택하는 것과 매우 비슷합니다. 학교에서 상당한 양의 이론을 배울 수 있습니다. 문법과 어휘의 기본 요소를 배우고, 원어민과 대화를 나눌 때까지 자신이 꽤 좋다고 생각하고 완전히 잃어 버립니다.

원어민과 대화 할 때 자신의 언어를 실제로 배울 수있는 방법은 실제로 매일 매시간마다 언어를 말하는 것입니다. 이것은 일반적으로 말하는 곳 어딘가에 사는 것을 의미합니다. 그리고 흥미로운 일이 일어날 때입니다. 학교에서 배운 것은 그 자체로는 가치가 없지만 외국의 거리에서도 실용적 언어 학습을 훨씬 쉽게 만들어주는 훌륭하고 견고한 이론적 기초를 제공합니다. (적어도 스페인어에 대한 나의 경험이었다.)

프로그래밍도 마찬가지입니다. 학교에서 배운 것은 실제 프로그래머로서해야 할 일을 준비 시키지는 않지만 (인기의 이익을 위해 모든 것을 멍청하게하지 않는 유능한 학교에 있다고 가정) 준비하는 데 도움이됩니다. 실제로 좋은 코더가되는 법을 배울 때 필요한 기본 개념이 이미 갖추어져 있습니다. (적어도 저의 프로그래밍 경험이었습니다.) :-)


2
좋은 대답이지만 "학교에서 배운 것은 무가치하다"고 말하지 않을 것입니다. 그러나 나는 당신이 무엇을 목표로하고 있는지 알고 있습니다.
gablin

4

많은 훌륭한 프로그래머들이 대학 컴퓨터 과학 학위에서 나옵니다.

컴퓨터 과학에 관한 것은 사람들이 위에서 논의했듯이 프로그래밍과 동일하지 않다는 것입니다. 제가 대학에서 공부 한 많은 것들이 기본적으로 준비되지 않았습니다. 제가 강의를들을 때 하늘의 학문적 말도 안되는 것처럼 보이는 많은 것들이 있었지만 몇 년 후 저는 내가 쓸모없는 것으로 정리 한 것들을 다시 배우면서 결국 더 많은 관심을 기울였습니다. 실제로 컴퓨터 과학 학위를 시작하기 전에 상업 환경에서 몇 년간 프로그래밍을 할 수 있다고 생각합니다.

또한 나는 종종 대학에서 배우는 법을 모른다고 생각합니다. 내가 실수로 또는 다른 개발자들로부터 배운 많은 것들이 반드시 내 강사들과 대학원생들이 대학에서 알고있는 것들이지만, 그것들을 이해하는 것이 도움이 될 줄은 몰랐습니다. 무언가를 배우는 동안 사람들이 겪고있는 문제에 대해 물어 보면 (이것은 실제로 무엇이든 적용됩니다) 학습 과정이 더 매끄럽고 덜 고통 스럽습니다. 내가 스스로 배운 많은 교훈들이 나의 고통스러운 실수로부터 배운 것을 감안할 때, 나는 너 자신이나 다른 사람들로부터 배울 수있는 대부분의 것들, 내가 할 수있을 때 다른 사람들로부터 배우기를 선택한다 ...


2

Brian Hurt의 게시물을 인용하겠습니다.

컴퓨터 과학과 프로그래밍은 별개의 것입니다

또한 Joel Spolsky의 학부 프로그래밍소프트웨어 엔지니어를 죽인 사람 이라는 훌륭한 기사를 언급합니다.

이 모든 토론은 현실을 상당히 잘 설명하고 있으며, 대학이 좋은 프로그래머가되지 않기 때문에 귀하의 질문에 "아니오"라고 대답하십시오. 스스로 좋은 프로그래머가되어야합니다.

CS를 전공하지는 않지만 8 년 동안 전문적으로 소프트웨어를 프로그래밍하고 개발해 왔습니다. 내가 가진 모든 프로그래밍 기술, 나는 나 자신을 배웠다.


1

전혀, 나는 프로그래머 인 척하고 어려운 방법을 배웠다. 저는 첫 번째 고객을 프리랜서로 받아 C / C ++와 매우 심하게 싸워 결국 승리했습니다. 구조체에서 malloc을 수행하는 것만으로는 구조체의 포인터에 대한 메모리를 할당하기에 충분하지 않다는 것을 이해하는 데 몇 시간이 걸렸다는 것을 기억합니다.


원래 학위는 무엇입니까? 당신의 노력은 마침내 돈을 지불 했습니까?
rwong

저는 전자 엔지니어입니다. Matalb는 훌륭하지만 C / C ++ 및 Java에 대한 지식은 거의 없습니다. 필자의 첫 번째 실제 프로그래밍 작업은 Windows CE 용 드라이버를 작성하고 eurotech.com/EN/innovation.aspx?pg=wearable 과 같은 장치로 포팅하는 것 입니다. 나는 회사의 도움을 거의받지 못했지만 기본적으로 집에서 혼자 일하면서 아주 작은 일에 큰 시간을 허비하고있었습니다. 하지만 당신은 내가 아무것도 잊지 않았다 내기! 나는 아직도 배우고 있지만 지금은 실제로 큰 프로그램을 수행하는 신생 기업을 소유하고 있습니다.
martjno

1

대학을 졸업했을 때 상당히 좋은 프로그래머였습니다. 나도 졸업하기 몇 달 전에 멋진 직업 제안을 받았다 (나는 심지어 고등학생을 위해 거절 할 수 있었다).

핵심은 제가 취미로, 학년도 동안 웹 개발 작업을하고, IBM ( "ExtremeBlue speed-teams"및 ExtremeBlue 프로그램이 적절 함)과 양질의 여름 인턴십 을 하면서 취미로 많은 일을했다는 것 입니다. 사전 전문적인 경험 있으면 졸업 후 약간의 초급 단계를 건너 뛸 수 있습니다.

(저는 여전히 6 개월 정도의 실제 직업 (tm)에서 프로그래밍에 훨씬 능숙했습니다. 나중에 수행 한 것이 아니라 실제로 많은 것을 보여주었습니다.)


1

고등학교에서 일을해서 곧바로 답을 줄 수 있습니다. 나는 스스로 생각하는 프로그래머로 일하기 시작했으며, 고용주가 제공하는 프로젝트에서 거의 즉시 생산적이었습니다. 나는 컴퓨터 공학 학위를 가진 동료들도 있었으며 그들은 전혀 생산적이지 않았습니다.

시간이 지남에 따라 일부 졸업생 동료들은 기술을 크게 향상 시켰지만, 그렇지 않은 동료들은 GPA와 관련이 없었습니다.


1

대학은 당신에게 실제 프로그래머가되는 것을 가르치지 않습니다. 나는 이것이 학위 프로그램에 비해 많은 직업과 비슷하다고 생각합니다. 나는 학위에서 아무것도 얻지 못했다고 말하지는 않지만 실제로 4 년 동안 일하는 것보다 훨씬 유용하지 않았습니다.

하지만 괜찮습니다. 내가 시작한 모든 직업은 아마 자격이 부족했을 것입니다. 자신의 능력에 자신감이 있고 학습에 전념한다면 한 걸음 더 나아가서 일을 할 수 있습니다.


1

나는 대학에서 적어도 노출되지 않았다는 일반적인 프로그래밍에 관한 사실을 배운 적이 없다고 생각합니다. 물론, 여기저기서 새로운 프로그래밍 언어를 선택하고 새로운 API, 새로운 코드 기반 및 새로운 도구를 배웠지 만 일반적인 개념은 모두 학교 밖에서 나타났습니다.

경험을 통해 얻는 것은보고 된 버그의 범위를 좁히는 속도를 높이거나 새로운 코드를 작성하는 가장 강력한 방법으로 바로 연결되는 본능입니다. 새로운 경우에도 동일한 버그를 수정하거나 동일한 기능을 구현할 수 있지만 시간이 더 걸리고 예상치 못한 문제로 돌아가서 수정해야 할 가능성이 높습니다.

그렇기 때문에보다 숙련 된 동료를 고용하여 멘토링하는 것이 중요합니다. 그들에게 가서 "이것이 내가 다루어야 할 방법이라고 생각합니다. 더 나은 방법을 생각할 수 있습니까?" 그것은 당신에게 그것을 알아내는 경험과 다른 사람들의 경험으로부터 배우는 것의 이점을 당신에게 제공합니다.


0

저는 대학 교사보다 더 나은 프로그래머였습니다.

그런 다음 일을 시작할 때 훌륭한 프로그래밍 방법을 배웠습니다.


0

좋은 프로그래머는 항상 배우고 있습니다. 다른 방법으로 배우거나 더 나은 방법으로 배우십시오. 당신의 동료 프로그래머가 당신에게 가르쳐야하는 것이 무엇이든간에, 나는들을 것입니다.


0

아무도 언급하지 않은 것 중 하나는 학교에서 해결해야 할 문제가 의도적으로 바보가되어 배우는 특정 기술로 사용하는 방법을 쉽게 알 수 있다는 것입니다. 당신은 보통 당신이 그 특정 문제에 대해 어떤 기술을 사용해야하는지 알고 있습니다. 전체 학기 프로젝트는 약간의 베팅이지만 실제 세계에 비해 범위와 복잡성이 여전히 제한적입니다.

실제 프로젝트는 지저분하고 수년에 걸쳐 발전하며 (소프트웨어는 10 년이 넘었고 그 기간 동안 지속적으로 변경되어 왔습니다) 다양한 기술 수준을 가진 많은 사람들이 감동을받습니다. 여전히 10 년 전의 데이터베이스 버전을 사용 중일 수 있으며 최신 SQL 기술을 전혀 사용할 수 없습니다. 8 년 전에는 훌륭한 도구를 사용했을 수도 있지만 학교에서 배우지 않은 도구는 다른 도구로 대체되었습니다. 그러나 회사는 완전히 교체하기 위해 수개월의 개발 노력에 대해 비용을 지불하고 싶지 않습니다.

당신은 개발 시간이 고객이 지불 할 비용과 때로는 (정상적으로는) 인공적인 마감일이 무엇인지에 의해 엄격히 제약받는 세상에 갇혀 있습니다.

클라이언트가 특별히 요청한 도구를 사용하도록 제한 될 수 있습니다. 모호한 요구 사항이나 이해가되지 않는 요구 사항이있을 수 있습니다. 당신은 당신이 모르는 매우 복잡한 비즈니스 영역을 다룰 수 있으므로 요구 사항이 적합한 지 판단조차 할 수 없습니다.

실제 문제는 학교에서 당신에게주는 멋진 문제와 비교할 수 없습니다. 당신이 혼란스럽지 않고 첫해 대부분의 시간을 외면하지 않는다면, 나는 당신에 대해 걱정할 것입니다.


0

이 직업보다 몇 년이 지난 후에는 배운 것에 대해 꽤 기분이 좋을 것입니다. 그러나 일자리를 바꾸면 새로운 회사 (혹은 같은 회사 내의 새로운 그룹)가 다른 방식으로 일을하게되며 정사각형으로 돌아간 것처럼 느껴질 것입니다. 다른 코드, 다른 코딩 표준, 다른 도구 및 프로세스가 있으며 이틀 후에 마지막 직장에서 실제로 무엇을 배웠는지 궁금 할 것입니다. 이번에는 그 수중 물고기 느낌을 더 빨리 극복 할 수 있지만, 여전히 원하는 시간보다 오래 걸릴 것입니다.

작업을 전환 할 때마다 적응 기간이 있습니다. 경험을 쌓으면 짧아 지지만 항상 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.