면책 조항 (답변을하기 전에 반드시 읽어주십시오) :
질문하고 싶은 것과 비슷한 질문을 많이 보았으므로 다음 과 비슷한 질문이 있습니다.
IMHO 그들은 내가 요구하는 바가 아니거나 내가 원하는만큼 철저하지도 않습니다 (아래 질문에 대한 답을 솔직하게 말하거나 질문자를 불신하는 것이 아닙니다. 단지 좀 더 철저하게) :
다음을 묻지 않겠습니다.
- 처음부터 프로그래밍을 가르치는 법 (CS 학위없이)
- CS를 학위없이 우수한 소프트웨어 개발자로 마케팅하는 방법
- CS에서 학위를받지 않고 소프트웨어 개발자로서 높은 임금을받는 방법
약간의 맥락 :
이제 면책 조항을 벗어 났으므로 소프트웨어 개발자로서의 경험에 대한 간략한 역사부터 시작하여 내 질문을 해결해 보겠습니다.
우선, 나는 매우 운이 좋았다. 소프트웨어 개발에 대해 내가 아는 모든 것을 실제로 배울 수있는 몇 가지 직업 기회 (두 개의 무거운 백엔드 PHP / MySQL 프로젝트 및 XAML / C #의 여러 WP7 앱)를 받았습니다. 내가 가진 거의 모든 소프트웨어 개발 작업은 내가 정당하게 자격을 갖추지 못한 작업이었습니다. 나는 그것이 정당하지 않은 곳에서 나 자신을 인정하고 싶지 않지만, 완벽한 겸손은 겸허 함을 없애는 것이라고 말할 것 입니다.
내가 가진 거의 모든 단일 개발 작업에서, 나는 고용주의 기대를 넘어서 귀중한 자산으로 판명되었습니다. 물론 예외가 있습니다 1 . 그러나 내 요점은 상당히 똑똑하고 직장에서 성공하기 위해 알아야 할 것을 스스로 가르 칠 수 있다는 것입니다. 내가 가진 각 직업마다 점점 늘어나고있었습니다.
저는 워싱턴 대학교 의 시애틀 캠퍼스에 다니고 있으며 현재 수학 학위를 받고 2 년 남은 4 년차입니다. 내가했던 다양한 일을하는 동안 ( 이 목록을 원하면 이력서를 참조하십시오 ) 저는 정규 학생으로 학교에 다녔습니다.
나는 대부분의 개발자가 포함 전형적인 일반 에드 학사 과정, 연구, 동의 할 생각으로 입문 프로그래밍 과정을 절대적으로, 실제 코드를 작성하는 건물에 비해 창백 실제 이 개 제품을 작업 멋진 사람, 긍정적들의 삶에 영향을 미치는 사용자 3 .
그래서 .. 일이 갈수록 … 나는 공부에 집중하는 대신 훨씬 더 많은 시간과 에너지를 소비했습니다. 때때로 나는 매우 끔찍한 공연을 했지만 대부분의 경우 나는 성적에 따라 떠 다닐 수있었습니다.
그러나 컴퓨터 과학 프로그램 UW에서는 매우 , 매우 , 매우 , 매우 경쟁력.
따라서 프로그램에 의해 거부 당했을 때 놀라운 일이 아니 었습니다. 두번. 아이러니하게도, 이메일을 통해 혐오스러운 거부 통지를 받았음에도 불구하고, 항상 정중 한 동일한 30 분의 기간 동안, 나는 아마존으로부터 SDE로서 여름 인턴쉽 4 를 제공하는 전화를 받았습니다 .
소프트웨어 개발에서 나와 같은 목표를 공유하는 다른 ‘나이 (21)’를 둘러 보면서 내가 어디에서, 무엇을 배우고 있는지, 누구인지, 무엇에 대해 기분이 좋았습니다. 내가 할 수있는. 물론 나보다 훨씬 더 많은 21 세의 노인들이 있습니다. 나는 군중 속에서 눈에 띄는 말은 아닙니다. 단지 평균 동료의 진도에 뒤 떨어지지 않는다고 느낍니다. .
저는 소프트웨어 세계에서 성공할 수있는 능력에 대해 확신합니다. 더 중요한 것은, 내가 정말로 필요할 때 계속 성장하고 배우며 창피하게 겸손 해지기를 원하는 나의 능력과 욕구에 대해 자신감을 느낀다는 점입니다.
수학 학위
나는 학위를 갖는 유일한 목적으로 수학 학위를 추구한다는 것을 알게되었습니다. 내가 탈퇴하고 지금 일을 시작해야한다고 말하는 사람들이 있고 (내가 할 수있는 기회가 있었음), 실제로 학위를 마치 야한다고 말하는 사람들이 있습니다. 나는 캠프 중 하나가 떠오르는 경향과는 완전히 다른 이유로 학위를 계속 진행하겠다고 결심 했으므로 그 문제에 대해 어떤 식 으로든 나를 격려하지 마십시오. “닫힌”문제를 고려하십시오. 🙂
* 심층 호흡 * … 죄송합니다. 예상보다 오래 됐습니다 .
본질적으로 이것은 내 질문입니다.
- CS 학위를 통해 지금까지 부족하거나 부족한 분야의 연구, 일반 지식 및 기타 기술을 객관적으로 결정하려면 어떻게해야합니까?
-
이러한 기술을 가장 중요한 순서로 어떻게 정렬합니까?
-
저명한 대학교에서 학부 수준의 CS를 달성하거나 능가하는 방식으로 이러한 속성을 달성하기 위해 내 교육을 보충하는 가장 좋은 방법은 무엇입니까?
다음은 이미 수행중인 단계입니다.
- 개발 커뮤니티에 문의 (이 게시물)
- 나와 비슷한 직업 경로를 공유하는 노련한 개발자와 멘토링을 추구하십시오.
- 단기 및 장기 “학습”목표 및 학습 주제를 요약하는 후속 음절을 정의
- 열정적 인 프로젝트에 대한 코드 작성 및 작업 계속
당신이 이걸 얻었 으면, 당신은 쿠키 를받을 자격이 있습니다.
그래서 … 개발 커뮤니티, 노련한 개발자, 나와 같은 보트에있는 동료 학생들에게 어떤 조언을 하시겠습니까?
또한 …이 게시물 상단에 내가 요구 하지 않는 것에 대한 면책 조항을 명심하십시오 .
최신 정보:
나는 내 질문에 대한 성공적인 “답변”으로 간주되는 것에 대해 매우 구체적인 매개 변수를 제공하지 않았다는 것을 알고 있습니다. 나는 그 질문이 매우 모호하며 많은 “올바른”답변을 보증 할 수 있다고 생각한다.
합리적인 시간이 지나면 다음 특성에 맞는 답변을 선택하겠습니다.
- 그들의 답변 뒤에 왜 이유를 설명
- 어느 정도의 경험을 통해 말할 수 있음
- 간결하지만 철저하고, 바람직하게 특정 예와 결합 된 넓은 원리를 제공
- 마지막으로 위의 내용을 일치시키는 데 필요한 길이를 고려할 때 읽기 좋은 답변을 잘 전달하십시오. 미래에 이것에 관심이있는 다른 사람들은 그 응답에 의해 교육을 받았을뿐만 아니라 즐겁게 될 것입니다.
따라서 “올바른”매개 변수가 있습니다. 그것들은 제 생각에 매우 높지만, 제가 “최고의”답변이 될 것이라고 생각하는 것에 대한 개요로 그들을 설계했습니다. 시간이 충분히 주어지면 가장 가까운 응답을 “답변”으로 선택하겠습니다.
(1)-이 웹 사이트의 이전 버전에서 작업했지만 명시적인 내용은 없었습니다. 그것에 대해 대화, 나는 전혀 잘 할 수 없다고 느꼈다 (이것은 할 수 있습니다 그들이 웹 사이트를 완전히 변경했다는 사실에 의해 입증 됨) (2)-첫째, 예, Chrome 에서이 게시물을 작성하고 있지만 실제 제품입니다. 엉덩이를 차 버린다. 둘째로, 나는 시험에서 고등학교 인턴 개발자였습니다. IE8의 새로운 기능 중 일부에 대한 개념 코드 ... 그래서 오래 전입니다. (3)-이 게시물을 작성할 당시 저는이 앱을 작성한 개발자입니다. 코드베이스에 대한 책임 (4)-내 인턴쉽은 2012 년 6 월에 시작되며 웹 스토어에서 일할 것입니다 팀.
답변
좋아, 나는 당신의 질문에 대답하지 않는 것이 너무 유혹적이므로 여기에 있습니다 …
나에 대한 몇 가지 먼저
저는 26 살 이고 아버지 (수학자, 현재는 교수로 일하는 btw) 덕분에 인생의 초기 단계부터 컴퓨터를 둘러 볼 수있는 기회를 얻었습니다. (1986 년에 내가 태어 났을 당시, 가장 일반적인 것은 아니지만, 집에 항상 한두 대의 컴퓨터가있었습니다). 그 말은, 그리고 호기심이 많고 수학적으로 기울어 지거나 문제 해결 지향적 성격 때문에 분명히 프로그래밍과 사랑에 빠지기까지 오래지 않았습니다. 7-8 세의 나이에 Pascal을 시작한 다음에 거의 모든 것이 뒤따 랐습니다.
먼저, 학교에 다니는 동안 수학을 좋아한다는 이유만으로도 항상 수학과 관련된 모든면에서 뛰어 났으며 솔직히 말하면 아버지의 모범을 쉽게 따르고 수학자가 될 수 있습니다. 그러나 그것은 일어나지 않았습니다.
무엇이 일어 났는가 아마 내 인생 (지금까지)의 가장 큰 실수 : 당신은 무엇을 부를 것이다 때 누군가가 코드와 사랑 , 말하는 마이크로 커널과 웹에 컴파일러에서 코드 라인의 수천 (15 개 + 언어 및 작성했습니다 프레임 워크) 18 세까지, 갑자기 (이유는 여전히 모호하지만 여전히 미묘하지만 환경에 미치는 영향은 결코 무시할 수없는) 의학 분야에서 경력을 쌓기로 결정합니다 . 나는 “실수”를 추측한다.
결과? 5 년 후 (23 세), Med 학위를 마치기 1 년 전 (여전히 취미로 개인 오픈 소스 프로그래밍 프로젝트를 계속 진행하고 있음), 나는 내가 충분하다고 결정하고 종료하기로 결정했습니다. 그리고 나는이 새로운 분야 (의학)을 싫어뿐만 아니라이었다 너무 많은,하지만이 모든 상황, 만족할 줄 모르는 가려움 숨겨진 깊은 내부에서 동요 무언가가 있다는 것을 ( 이 경우이었을 것입니다 무엇을 …? ) 더욱이, 나는 내가 위대 하다고 생각 했지만 실제 직업으로 상상조차하지 못한 나의 취미 는 돈을 가져올뿐만 아니라 많은 돈을 가져다 줄 수 있다는 것을 깨달았습니다 . 그래서 나는 그만두기로 결정했습니다. (= 조금 늦어도 최선의 선택).
그래서, 나는 여기, 지금 한 번거야 – 수 – 의사입니다 (온 – 더 – 직전 – 중 – – 신경 항복 정신과 의사가 정확하게하기; 바보 나!)를가는 CS 학위 실제로 내 3 년에 (; 그리고 솔직히 말해서, 두려운 전형적인 자격 이 부족하지 않기 위해 그것을 추구하는 …) 그리고 내가 좋아하는 것, 그리고 내가 가장 많이 제공 해야하는 주제에 대해 더 행복해하는 전문가.
몇 가지 관찰 (내 자신의 경험에서)
-
프로그래밍은 아주 좋은 분야가 무엇이든 항상 자신의 길을 찾을 수있는 매우 소수의 분야 중 하나입니다. 그리고 이것은 전형적인 자격 의 문제가 아닙니다 (솔직히, 회사가 있고 프로그래머를 모집하고 싶다면, 학위가 있는지 여부에 관계없이 몇 분 만에 누가 좋은지 쉽게 알 수 있습니다)
-
좋은 프로그래머가되기 위해 필요한 것은 수학 중심의 지능 (수학 자체는 아님)과 열정 (무엇보다 즐거움을 배우는 끝없는 시간을 만들어 줄 것입니다.) 나는 내 인생에서 주제에 대한 자료의 톤을 순수하게 연구했습니다 .) 공식 교육은 좋은 일이지만 약간 과대 평가되었습니다. 성공의 핵심 요소는 처음 두 가지입니다.
-
수학은 CS가 태어난 곳입니다. 그러나 CS는 더 이상 수학이 아닙니다. 나는 항상 강한 수학 중심의 뇌를 가졌지 만 결코 수학 전문가가 아닙니다. 그리고 솔직히 매일 프로그래밍에서 (그래픽 엔진이나 너무 현지화되지 않은 경우가 아니라면) 간단한 산술 (더하기, 빼기, 곱하기, 나누기, 모듈로)과 다른 것들은 필요하지 않을 것입니다 배열에 대해. (수많은 수학 자나 너무 학계 지향적 인 프로그래머 일 것입니다. 그러나 반드시 미적분학을 익히는 것이 좋은 프로그래머가되는 것은 아닙니다). 수학 배경이 양호하면 수학 자체로는 도움이되지 않을 수 있습니다. 이 두 분야가 공유하는 하나의 공통점, 즉 문제 해결 기술을 기반으로 도움을 줄 것입니다.
-
수학은 과학 (그리고 내가 존중하는 과학)입니다.
-
프로그래밍은 예술입니다. (그리고 당신이 주장한다면 응용 과학도 마찬가지입니다) 그러나 그것을 명심하십시오 : 예술-그것이 항상 그것을 다루는 방식입니다. 그리고 모든 예술과 마찬가지로 가르 칠 수 없습니다. 나는 당신에게 얼굴을 그리는 공식적인 방법을 가르쳐서 평균보다 더 나아지게하지만 다빈치 나 클림트를 만들지는 않습니다. Mona Lisas는 Da Vincis에 의해 그려졌으며 신중하게 교육받은 화가가 아닙니다. 훌륭한 코드는 훌륭한 코드 아티스트가 작성합니다. 그리고 기술과 헌신은 공식 교육의 균형을 쉽게 이룰 수 있습니다.
그렇다면 정말 훌륭한 프로그래머가 되려면 무엇이 필요합니까?
- 현명하고 훌륭한 문제 해결 기술과 주제에 대한 열정을 가지십시오 (가지고 있지 않은 경우 그대로 두십시오)
- 주제에 헌신 할 시간이 많다
- 모든 시간을 공부 ‘당신은 단순히 것 사촌 ( 결코 모든 것을 알 수 없습니다 및 노트 : 않는 이유는’? ‘그러니까 것은 어느 정도 관련이있을하는 나는 항상 훨씬 더 많은 즐거움을 내 자신의 페이스에 일을 발견했습니다 … )
- 항상 코드 작성 (읽은 책의 수에 상관없이 코딩 수준은 작성한 코드 양과 직접적으로 동일)
- 그리고 다시, 주제에 대한 사랑 (당신이 그것을 충분히 사랑하지 않는다면, 정말로 그것을 사랑한다는 것을 의미 한다면, 위의 모든 것이 조만간 참을 수 없게 될 것입니다. 나에게있어서 직업 코딩은 여전히 돈을받는 것과 같습니다 .. 영화 감상 : 절대적으로 터무니 없지만 간단하게 훌륭함)
당신의 질문에
- CS 학위를 통해 지금까지 부족하거나 부족한 분야의 연구, 일반 지식 및 기타 기술을 객관적으로 결정하려면 어떻게해야합니까?
비록 수학 학위에 무엇이 포함되어 있는지 정말로 알아야하지만, CS 학위에서 누락 될 가능성이 가장 높은 것을 요약 해 드리겠습니다 (코스 / 과목 등- 제 유니의 연구 프로그램에서 영감을 얻은 등 ). :
- 디지털 시스템의 논리 설계 (일부 저수준 회로 및 / 또는 xors / 등-겉으로는 관련이 없지만 교육적임)
- 컴퓨터 아키텍처 (일부 어셈블리 코딩과 함께; 당신은 그것을 사용 하지 않을 가능성이 높지만 프로그래머로서의 태도를 얼마나 형성 할 수 있는지는 알 수 없습니다)
- 데이터 구조 (링크 된 목록에서 복잡한 트리 등), 조만간 간단 해 보일 수 있지만 이에 대한 배경 지식이 필요합니다. 이해하지 못하는 기성 솔루션을 사용하는 것은 좋은 프로그래머가 아닙니다. 할것이다)
- 컴파일러 (예, 컴파일러! 컴파일러를 작성하겠습니까? 아마 아닐 것입니다.하지만 작성할 수 없다면 실제로는 어떻게 작동하는지 알 수 없습니다 …)
- 운영 체제 (위와 동일)
- 컴퓨터 네트워크
- 인공 지능 및 전문가 시스템 (Prolog에서도 코딩하지는 않지만 코딩 두뇌를 형성하고 근본적으로 다른 관점에서 볼 수있는 것 중 하나임)
- 이러한 기술을 가장 중요한 순서로 어떻게 정렬합니까?
A – CS는 항상 도박 것 같이 항상 변화하는 분야에 우선 순위를 알면 추측 게임 .
당신이하고 싶은 것을 알고, 당신의 강자를 믿어 라. 물론, 확실한 기본 지식을 갖는 것이 필수적입니다. 그러나 당신이 탐구 할 것은 전적으로 당신에게 달려 있습니다. 또한,주의 깊게 당신의 경력을 계획 : 당신이 채택 될하려는 경우, 당신의 목표를 선택하고 그것을 잘 될 예에 의해 사용될 싶은 ( 구글 방법과 간단한을 읽는 파이썬 스크립트가 아마 그없는 이동 상황 중 하나입니다 모르고 ) . 혼자서 (회사) 무언가를 시작하고 있다면 만족할 “보스”가 없습니다. 가장 적합한 것을 선택하십시오.
예를 들어, 웹 관련 작업을 수행하려면 PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX)로 이동하는 것이 좋습니다. 그러나 그것은 단지 나입니다. 누군가가 PHP보다 Ruby / Rails를 좋아할 것입니다.
예를 들어, 나는 현재 주로 Objective-C / Cocoa로 코딩하고 있습니다. 나는 당신이 그것을 추구하도록 조언 하시겠습니까? 기필코 아니다. 즉, Mac을 사용하지 않거나 Mac / iPhone 관련 소프트웨어를 판매하는 경력을 원치 않는 한. Windows 개발을하고 있다면 C # / .NET Framework를 사용하는 것이 최선의 선택 일 것입니다. (내가 주로 무엇에 대한 아이디어를 얻으려면 내 StackOverflow 프로필을 살펴보십시오 )
- 저명한 대학교에서 학부 수준의 CS를 달성하거나 능가하는 방식으로 이러한 속성을 달성하기 위해 내 교육을 보충하는 가장 좋은 방법은 무엇입니까?
많은 책 (책, 인터넷, 다른 사람들의 코드 등)을 공부하고 최대한 많은 코드를 작성하십시오.
아, 그리고 코드와 관련된 어떤 일을하려고 노력하십시오. (저는 처음 프리랜서로 일하기 시작했으며 실제로 세상에서 일이 실제로 어떻게 일어나는지 보는 것은 정말 귀중한 경험이었습니다.)
내 .2 친화적 인 센트 … 🙂
사이드 노트 : 내 요점 중 일부는 논란의 여지가있는 것으로 알고 있으며, 나와 동의하지 않는 사람이 많이있을 것입니다. 괜찮습니다. 그러나 그것은 내가 보는 방식, 특히 내가 좋아하는 것을 바꾸지 않습니다.
답변
CS 학위를 통해 지금까지 부족하거나 부족한 분야의 연구, 일반 지식 및 기타 기술을 객관적으로 결정하려면 어떻게해야합니까?
UW에서 CS 부서의 커리큘럼을 찾아보고 필요한 독서를 빌려서 찾아보고 이전 시험과 실습 (숙제 과제)을 살펴보십시오. 문제에 어떻게 접근 할 지에 대해 잘 모를 경우 지식에 구멍이 생깁니다.
이러한 기술을 가장 중요한 순서로 어떻게 정렬합니까?
앞으로 어떤 종류의 프로그래밍을하고 싶은지 생각해보십시오. 웹 사이트 및 CRUD 응용 프로그램을 작성하는 데 만족한다면 이미 필요한 모든 지식이있는 것 같습니다.
CS 교육은 어떻게 [분포] 데이터베이스, 웹 서버, 컴파일러 및 통역, 운영 체제, 네트워크 프로토콜 등의 작업에 관심을 이해하면 사진에 진입 후드 , 그리고 이러한 시스템을 직접 구축에 관심이 있습니다.
저명한 대학교에서 학부 수준의 CS를 달성하거나 능가하는 방식으로 이러한 속성을 달성하기 위해 내 교육을 보충하는 가장 좋은 방법은 무엇입니까?
나도 몰라. 저에게있어 대학의 가장 큰 장점은 1) 내 시야를 넓히고 (유니에서 배운 세부 사항의 90 %를 잊었지만 개념과 아이디어를 기억합니다) 2) waning : 졸업 할 때까지 시험, 다른 시험 등 목표를 향해 노력할 때 동기 부여를 유지하는 것이 더 쉽습니다. (또한 자기 교육을 구성하는 것은 쉬운 일이 아닙니다.)
[추가 : CS 프로그램을 따르고 싶은 대학교를 선택하고, 관심있는 주제의 코스를 선택하고 직접 커리큘럼을 진행하십시오 : 숙제 과제, 시험 등 대부분의 코스는 초창기부터 강의 슬라이드 및 과제 / 시험을 게시합니다. .]
충고 한마디 : 수학 학위를 포기하지 마십시오. 모든 밝은 사람은 스스로 프로그램을 가르 칠 수 있지만 유체 및 기계 시뮬레이션, 컴퓨터 그래픽, 이미지 처리, 인식 및 기계 학습 응용 프로그램과 같이 CRUD / 프런트 엔드 이외의 응용 프로그램에서 작업하려는 경우 수학은 경쟁 우위를 제공합니다. (금융도!) 등
업데이트 2-경험 [긴] : EE 교수진에서 석사 학위를 취득했습니다. 처음 2 년은 일반적인 커리큘럼 (물리, 전기 공학, 아날로그 및 디지털 전자 공학 및 많은 수학-선형 대수학; 이산 수학; 실제, 벡터 및 복잡한 응용 분석.) 이것은 매우 귀중했습니다. EE 및 전자 부품-혼합 HW-SW 프로젝트를 수행 할 수 있었으며 HW 디자이너와의 협력은 매우 흥미로 웠습니다. 나는 HW 디자인에 아무 것도 기여하지 않았지만, HW 디자이너가 그의 회로도를 “디버깅”하고 합리적인 질문을 할 수있었습니다. [버그가 SW인지 HW인지 확실하지 않았습니다. -)].
그런 다음 선이 분기되어 CS 선을 선택합니다. “세부 사항”중 일부는 개념을 세분화하는 데 기여했습니다 (예 : Dijkstra의 알고리즘을 수동으로 실행). 또한 나는 배운 세부 사항 오래된 모토로라 68000, 이미 다음의 예에서 (버스 다이어그램, 실행 등을 해석, 버스 신호) 방식의 CPU 작업에 대한,하지만 세부 사항을 통해 배운 개념 중 하나 현대 CPU에 대한 매우 다르지 않다.
기타 세부 사항, 예 : SW 구현 (예 : Dijkstra 구현)은 디버깅을위한 무의미한 연습이었고 개념 이해에 ZERO에 기여한 [고등학교 코딩에 상당히 능숙했기 때문에] 나에게 적합했습니다.
그리고 박사 과정에 등록했는데 의무 과정을 이수해야했습니다. 코스 선택에 실망했습니다. 많은 코스가 산업의 요구에 더 초점을 맞추는 것처럼 보였습니다 (예 : 과학적 데이터 분석을 위해 Python을 사용하는 경우-감사합니다. 프로그래밍 할 수 있으며 스스로에게 많은 것을 가르 칠 수 있습니다. -기본 개념을 가르치는 것보다 많은 무의미한 코딩이 다시 포함되었습니다 (다행히, 나는 이산 최적화, 프로그램의 정적 분석 및 Promela의 공식 분석에 대한 과정을 파헤 쳤습니다).
따라서 일부 세부 사항은 개념을 세분화하는 데 유용했고 일부는 명백한 불필요한 부담이었습니다 (다른 예 : 두 컴퓨터 간의 직렬 포트 통신 프로그래밍). 그런 다음 이미 HW 사양을 읽고 해석하고 레지스터를 통해 HW를 프로그래밍하는 데 익숙했습니다. 평범한 CS 엔지니어가 HW 문서를 읽는 방법에 대해 교육받을 필요가 없다고 가정하면 순진 할 것입니다.
결론 : 다양한 개념 (높은 수준의 아이디어)에 자신을 노출시키고 우선 순위를 정하고 극도로 능숙 해지는 개념에 대해 자세히 설명하십시오. [당신은 모든 것을 매우 잘할 수는 없습니다!]
답변
나는 대학을 졸업 한 후배들을 모집하는 데 참여하고 참여합니다. 나는 그들이 어떤 프로그램을 선택하든 그들이 선택한 주제 기술을 기반으로 한 사람을 아직 고용하지 않았습니다. 그 이유는 간단합니다. 제가 경험 한 CS 프로그램 (또는 다른 프로그램)은 전문적이고 상업적인 수준의 프로그래밍 또는 소프트웨어 개발과 관련된 구체적인 기술을 가르치지 않습니다 . 복잡한 미분 방정식에 대한 모델과 솔루션을 정리하고 최적화 된 특수 목적 분류 알고리즘을 작성하는 것은 학문적 및 / 또는 과학적 가치를 지닐 수 있지만 일반적인 소프트웨어 개발에는 영향을 미치지 않습니다.
그때 무엇을 찾아야합니까? 글쎄, 나는 대학 졸업생이 학습의 예술을 완성했을 것으로 기대합니다. 그것은 결국 좋은 대학이 학생들에게 가르치는 것입니다. 일반적인 문제를 분석하고 예측 가능한 해결할 수있는 논리적이고 개별적인 구성 요소로 분석하고 분석하는 방법 솔루션에 대한 지식과 정보를 찾고, 평가하고, 구성하고, 적용하기위한 체계적인 접근 방식.
또한 저는 함께 일하고 의사 소통하는 사람들 그룹이 개인의 합보다 훨씬 더 가치가 있다는 것을 이해하는 사람들을 찾습니다. 그것은 성숙과 겸손과 도움을주고 요청할 수있는 능력을 필요로합니다.
따라서 질문의 범위로 돌아가려면 CS 학위가 대학에서 첫 번째 인터뷰를받을 가능성을 향상시킬 수는 있지만 개발자로서의 성공 또는 숙련도와는 거의 관련이 없습니다. 나는 항상 “태도에 대한 고용, 기술에 대한 훈련”이라는 철학을 따랐으며, 그 결과는 훌륭합니다.
내 충고 : 관심있는 것이면 수학 학위를 계속하십시오. 모든 과학 교육은 당신을 잘 지원할 것이므로 가장 좋아하는 것을 가장 좋아하는 것을 선택하십시오. 그런 다음 중요한 것을 배우는 데 중점을 둡니다 : 학습 방법, 문제 해결 방법에 대한 분석 및 접근 방법 체계적인 방법, 다른 사람들과 상호 작용하고 협력하는 방법, 자신과 팀원의 전달을 위해 리더십과 책임을지는 방법. 나머지는 기술과 코딩, 무역 도구입니다. 그것들은 스스로 배울 수 있고 배울 것입니다. 대중적인 디자인 패턴 및 건축 패러다임과 같은 일반적인 지식을 수집하고 연구합니다. 연습 할 프로그램 작성을 시작하십시오. 상당히 최신의 언어 및 기술 기반을 선택하십시오. s 배우는 마지막 것. 도구와 언어는 항상 바뀌므로 소프트웨어 개발은 끊임없이 학습하는 과정입니다.
답변
본질적으로 이것은 내 질문입니다. 현재 CS 부족을 통해 어떤 연구 분야, 일반 지식 및 기타 기술을 습득했을지 객관적으로 결정하려면 어떻게해야합니까?
답변 1
연구에서 새로운 것을 배우는 경우 . 그런 다음 CS 학위를 통해 이것을 획득했다고 객관적으로 말할 수 있습니다 .
A1. 왜
CS 학위는 개념적으로 학습에 관한 것입니다. 순차가없는 CS 학위에서 돌아 오면 핵심 목표를 달성 할 수 없습니다. 시험과 코스워크는 배운 것을 “공식적으로”측정 한 것입니다. 그러나 개인 이해력 (새로운 것을 배웠습니까?)이 더 객관적인 척도가되어야합니다.
A1. 경험
나는 학계에 있었고 지금은 전문적으로 일합니다. 나는 이해를 넓히고 싶었고 학습에 대한 열정이 있기 때문에 컴퓨터 과학 석사 학위를 선택했습니다.
컴퓨팅 분야에서 석사를 취득한 결과 내 세상이 확장되었습니다. 저의 세계는 전문적으로 일하는 것에서 확장되었습니다.
이러한 기술을 가장 중요한 순서로 어떻게 정렬합니까?
답변 2
중요성은 누가 질문을하고 어떤 상황에 대해 상대적 입니다. 개인적 성장을 위한 것이라면 모든 것이 중요합니다. 산업에 적합하다면 알고리즘 및 우수한 OOP / 표준 소프트웨어 사례가 중요합니다.
A2. 왜
중요한 “범위”는 “컨텍스트”에 크게 의존합니다. 상황이 없으면 기술의 장점을 분류하기가 어렵습니다.
A2. 경험
“대학”과 “현장”에서 얻은 기술이 다릅니다. 대학의 “기술”은 더 많은 “이론”이며, 산업에서 “연습”이 더 높습니다. 이러한 이유로이 차이는 기술의 중요성이 실제로 다르게 평가됨을 의미합니다.
저명한 대학교에서 학부 수준의 CS를 달성하거나 능가하는 방식으로 이러한 속성을 달성하기 위해 내 교육을 보충하는 가장 좋은 방법은 무엇입니까?
답변 3
자신 을 파괴 점 이상으로 밀어 내고, 중단 할 때 자신을 다시 끊으 십시오.
무슨 뜻이야?
당신이 이해하지 못하는 지점에 도달하면, 당신은 자신을 부러 뜨린 것입니다. 이해할 때까지 계속 배우십시오 . 그런 다음 이해하지 못하는 다른 것을 찾을 때까지 더 밀어 넣으 십시오 (ad infinitum) .
A3. 왜
당신이 배우고 당신의 경계 안에서만 머무르면, 당신은 “확인”만 될 것입니다. 당신은 단지 “확인”되고 싶지 않습니다. 당신은 당신이 할 수있는 “최고”가되고 싶어합니다. 경계를 넘어서지 않으면 실제 잠재력에 도달 할 수 없습니다.
A3. 경험
나는 항상 평생 학생이 될 것입니다. 나는 현재의 기술 세트를 열거하지 않을 것입니다. 궁금한 경우 내 프로필을 볼 수 있습니다.
한 가지 말하겠습니다. 나는 나의 현재 지식으로 결코 성취되지 않습니다. 나는 더 높이 날고, 더보고, 더 깊이 가고 싶습니다.
답변
CS 학위를 통해 지금까지 부족하거나 부족한 분야의 연구, 일반 지식 및 기타 기술을 객관적으로 결정하려면 어떻게해야합니까?
학위 요건을 확인한 다음 각 수업에 대한 강의 계획서를 찾으십시오.
이러한 기술을 가장 중요한 순서로 어떻게 정렬합니까?
가늠자의 도움 없이는 직접이 작업을 수행 할 수 없습니다. 대부분의 자기 교육 프로그래머에게 부족한 가장 중요한 것은 알고리즘 분석과 디자인이라고합니다. 나머지는 한 조각 식사를 할 수 있습니다.
저명한 대학교에서 학부 수준의 CS를 달성하거나 능가하는 방식으로 이러한 속성을 달성하기 위해 내 교육을 보충하는 가장 좋은 방법은 무엇입니까?
프로그램에 입학하지 않아도 다른 부서의 수업을 선택 과목으로 수강 할 수 있습니다. 내가 가장 좋아하는 수업 중 하나는 항공 우주 공학의 프로젝트 수업으로, 작은 위성용 전자 장치 및 펌웨어에서 일했습니다.
원하는 수업에서 사용하는 교재를 구입할 수도 있습니다. 나는 몇 가지 수업에 대해 내 일정에 맞지 못했습니다. 또 다른 옵션은 MIT 오픈 코스웨어 입니다.
답변
CS 학위가 성공적인 프로그래머 가되기 위해 왜 그렇게 중요하다고 생각 하십니까?
성공적인 프로그래머가되기 위해 필요한 것은 :
- 프로그래밍에 대한 열정
- 새로운 기술에 대한 지식에 대한 끊임없는 갈증
- 어쨌든 업계에 진입
일반적으로 CS 학위는 업계에 당신을 데려다 줄 것이지만 지식에 대한 열정과 갈증이 없다면 고통을 겪을 것이고 결코 훌륭한 프로그래머가 될 수 없습니다.
이미 업계에 진출한 것처럼 보이며 지식에 대한 열정과 갈증이 모두있는 것 같습니다.
당신이 알아야 할 것은 계속 연구하고 배우고 경험을 얻는 것입니다. 업계는 학위없이 당신을 감사하는 방법을 알 것입니다.
내가 같이 일하는 사람의 예
우리 팀에서 일하는 소프트웨어 개발자 중 한 명이 법학 학위를 받았습니다. 몇 년 후 그녀는 법이 마음에 들지 않으며 프로그래머가되고 싶다는 것을 알게되었습니다. 프로그래머가 아니고 (경험이없고, 학위가없는) 직업을 가질 수 없었기 때문에 6 개월의 컴퓨터 과정을 수료 한 후 직업을 얻었고 그 이후로 훌륭한 개발자입니다.
답변
IMHO 프로그래밍 작업 (또는 영업 작업 또는 sysadmin 작업 등)이없고 문제 해결 작업 만 있습니다. 우리는 문제를 해결하기 위해 사람들을 고용하고 지불합니다. 코드 작성은 문제 해결의 일부일뿐입니다. 그렇습니다. 판매조차도 문제 해결의 한 형태입니다. 따라서 수학 학위는 CS 학위뿐만 아니라 문제를 해결할 수 있음을 증명합니다.
귀하의 게시를 통해 많은 경험 / 인턴십을 받고 있음이 분명합니다. 큰! 졸업 후 취업을 걱정하지 마십시오.
질문에 대답하려면 :
클래스? 코드 작성 클래스 대신 이론적 CS 클래스를 선택하십시오. CS / math 클래스가 아닌 다른 클래스를 찾으십시오. 철학 그것은 군중에서 눈에 띄는 데 도움이됩니다
우선 순위? 새로운 것을 배우십시오 (이미 반만 아는 쉬운 수업이 아닙니다)
다음 2 년? 사람들과 대화하고, 배우고, 관계를 구축하고, 외부 활동을 찾으십시오. (취업 / 학습에서 벗어난 취미 / 스포츠 / 통행 시간은 지원자가 얼마나 동기를 부여했는지를 보여주는 단서입니다.)
최종 팁 : 가능한 빨리 졸업하십시오. 연락처 네트워크를 구축하십시오. 그리고 유일한 안전한 직업은 자신의 직업을 만드는 것입니다. 자신의 사업을 시작할 수있는 아이디어 / 기회를 찾으십시오. 행운을 빕니다.