우리는 우리 학교에 초빙 강사를 가졌습니다. 그는 졸업 할 때, 그리고 그가 기대하는 기술 수준에 미치지 못하는 사람들에 대해 접선을했습니다. Java, C ++ 또는 C #과 같은 대규모 컴파일 언어, Python 또는 Ruby와 같은 스크립트 언어, 하나의 웹 프레임 워크에 대한 지식 졸업생에게 절대적으로 중요하다고 생각하는 다른 기술은 무엇입니까?
우리는 우리 학교에 초빙 강사를 가졌습니다. 그는 졸업 할 때, 그리고 그가 기대하는 기술 수준에 미치지 못하는 사람들에 대해 접선을했습니다. Java, C ++ 또는 C #과 같은 대규모 컴파일 언어, Python 또는 Ruby와 같은 스크립트 언어, 하나의 웹 프레임 워크에 대한 지식 졸업생에게 절대적으로 중요하다고 생각하는 다른 기술은 무엇입니까?
답변:
신입생은 배우고 자하는 것 이상의 것이 필요하고, 학습에 대한 집착, 학습 방법에 대한 이해, 소프트웨어의 현실에 대한 확고한 기초가 필요합니다. 나는 일반적으로 당신이 알고있는 언어에 관심이 없지만 모든 주니어는 :
역사를 이해하십시오 . 컴퓨터 과학은 잘 연구 된 분야이며 많은 해결 된 문제가 있습니다. 이 사실을 아는 것은 당신 앞에 오는 것을 배우는 문을 열어줍니다. 지식을 채굴 할 풍부한 역사가 있다는 것을 아는 것조차도 많은 졸업생들이 애용했습니다. 여기에는 big-O 표기법, 알고리즘의 역사, 선지자의 원칙 (Knuth, K & R, Hofstdater 등) 및 일반적으로 허용되는 관행과 패턴과 같은 것들이 포함됩니다.
그것이 해결 될 수 있음을 아십시오 . 개발자가 문제로 인해 혼란에 빠지면 항상 놀랍습니다. 배우는 학습의 일부는 문제가 항상 쉽게 용해된다는 간단한 원칙입니다. 일단 당신이 이것을 알고 나면, 정답을 찾는 것에 대한 당신의 생각을 구성합니다.
분해 이해 . 문제를 해결할 수있을뿐만 아니라 그렇게하는 길은 나누고 정복하는 것만 큼 간단합니다. 간단한 구성 요소로 문제를 줄이면 항상 답이 나타납니다.
측정 방법을 알고 있어야합니다 . 새로운 개발자는 문제를 분해 할 수있을뿐만 아니라 이러한 문제에 대한 사실을 수집하는 방법을 알아야합니다. 얼마나 오래? 얼마나 커? 얼마나 빠릅니까? 얼마나? 간단한 사실은 이해와 객관적인 사고의 단계입니다. 사실없이 가정을하는 것은 문제 영역에서 쉽게 길을 잃을 수있는 방법입니다.
객관하십시오 . 모든 문제는 간단히 분해, 측정 및 이해 될 수 있습니다. 이해할 수없는 문제는 단순히 추가 분해, 측정 및 이해가 필요합니다. 화를 내거나 좌절하는 데 쓸모가 없으며 이론이나 비난에 대해 논쟁하는 것도 생산적입니다. 문제 해결 과정과 관련된 비이성적 인 행동이나 신념은 독이 어서 해결책을 찾기가 매우 어렵습니다.
패턴과 원칙을 선호하십시오 . 일, 언어, 프로그래밍 모델, 컴퓨터 아키텍처 및 엔지니어링 방법을 수행하는 수십 가지 올바른 방법을 경험하게 될 것입니다. 올바른 방법은 없지만 반복해서 적용 할 수있는 확실한 기본 개념이 있습니다. 이러한 패턴을 배우는 것은 학습과 사고의 모든 단계를 안내 할 것이므로 배우십시오.
고용주로서 저는 다음과 같은 프로그래머로만 사람들을 고용 할 것입니다.
내 경험상 프로그래밍 작업에 지원하는 컴퓨터 과학 졸업생의 5 % 미만이 기본적으로 이러한 기술을 보유하고 있습니다. 이것들은 상업적으로 유용하기 위해 필요한 최소한의 기술이며, 모든 사람이 이러한 기술을 배울 수있는 것은 아닙니다.
다른 좋은 점은 다음과 같습니다.
이를 통해 기존 개발 팀과의 통합이 쉬워 지지만 일반적으로 업무에 대해 배울 수있는 과목입니다.
나는 한때 새로 졸업 한 스태프들과 "상속"한 팀을 가지고 있었고 실제 프로그래밍을 한 다음에 (추가 돈을 벌기 위해) 다음에 실제 프로그래밍을 한 사람들이 가장 유능한 팀원이라는 내 경험을 가지고있었습니다. 따라서 경험이 핵심이며 언어는 중요하지 않습니다 .
그러나 모집자가 찾고있는 것을 찾으면 (jobserver.com과 같은 모든 공통 모집 사이트에서) C ++, C #, Java에 대한 많은 요청이 있지만 다른 사람들이 찾고 있음을 관찰하는 것이 흥미 롭습니다. 또한 COBOL과 같은 "이국적인"것들이 여전히 존재합니다.
이 직업의 학습 과정은 끝나지 않습니다. 끊임없이 자신을 배우고 개선해야합니다. 그렇지 않으면 그는 게임에서 "빠르게 빠져 나옵니다".
다른 답변은 좋지만 대학에서 간과 된 기술은 실제 소프트웨어 엔지니어링 인 것 같습니다 .
OOP와 Java와 같은 언어를 가르치는 기본 수업은 훌륭하지만, 3 학년과 4 학년에 학생들이 (적어도 내 지역 대학에서) 좋은 아키텍처를 식별하고 만드는 방법을 배우는 대신 컴파일러와 운영 체제를 작성하는 이유는 무엇입니까? 요구 사항을 분석하고 기술 사양 목록을 작성하고, 가장 중요한 것은 작동하는 올바른 코드와 작동하지 않는 코드의 차이점이 무엇일까요?
우리 대학은 거의 같아 원하는 휘젓다하는 코더 대신 소프트웨어 엔지니어 . 나는 공학에 어떤 기술 / 재능을 보여주지 않은 사람을 고용하지 않을 것입니다.