대학을 졸업 한 모든 프로그래머가 갖추어야 할 기술은 무엇입니까? [닫은]


9

우리는 우리 학교에 초빙 강사를 가졌습니다. 그는 졸업 할 때, 그리고 그가 기대하는 기술 수준에 미치지 못하는 사람들에 대해 접선을했습니다. Java, C ++ 또는 C #과 같은 대규모 컴파일 언어, Python 또는 Ruby와 같은 스크립트 언어, 하나의 웹 프레임 워크에 대한 지식 졸업생에게 절대적으로 중요하다고 생각하는 다른 기술은 무엇입니까?


나는 당신이 대학을 졸업하는 것을 의미한다고 가정합니까?
Michael Shaw

1
@ 프톨레마이오스 : 미국에서는 대학이라는 용어가 정확합니다.
Macneil

1
엉덩이에 자신을 발로하고 문자 메시지를 배울 수있는 의지, 젊은 펑크! socializedpr.com/…
Job

답변:


27

지금까지 저는 배우고 싶어합니다. College는 실제로 프로그래머가되기 위해 필요한 기술을 제공하기위한 것이 아닙니다. 이 기술을 배우는 데 필요한 기술을 가르쳐주기위한 것 입니다.


더 잘 말할 수 없었습니다.
Chris

4

신입생은 배우고 자하는 것 이상의 것이 필요하고, 학습에 대한 집착, 학습 방법에 대한 이해, 소프트웨어의 현실에 대한 확고한 기초가 필요합니다. 나는 일반적으로 당신이 알고있는 언어에 관심이 없지만 모든 주니어는 :

  1. 역사를 이해하십시오 . 컴퓨터 과학은 잘 연구 된 분야이며 많은 해결 된 문제가 있습니다. 이 사실을 아는 것은 당신 앞에 오는 것을 배우는 문을 열어줍니다. 지식을 채굴 할 풍부한 역사가 있다는 것을 아는 것조차도 많은 졸업생들이 애용했습니다. 여기에는 big-O 표기법, 알고리즘의 역사, 선지자의 원칙 (Knuth, K & R, Hofstdater 등) 및 일반적으로 허용되는 관행과 패턴과 같은 것들이 포함됩니다.

  2. 그것이 해결 될 수 있음을 아십시오 . 개발자가 문제로 인해 혼란에 빠지면 항상 놀랍습니다. 배우는 학습의 일부는 문제가 항상 쉽게 용해된다는 간단한 원칙입니다. 일단 당신이 이것을 알고 나면, 정답을 찾는 것에 대한 당신의 생각을 구성합니다.

  3. 분해 이해 . 문제를 해결할 수있을뿐만 아니라 그렇게하는 길은 나누고 정복하는 것만 큼 간단합니다. 간단한 구성 요소로 문제를 줄이면 항상 답이 나타납니다.

  4. 측정 방법을 알고 있어야합니다 . 새로운 개발자는 문제를 분해 할 수있을뿐만 아니라 이러한 문제에 대한 사실을 수집하는 방법을 알아야합니다. 얼마나 오래? 얼마나 커? 얼마나 빠릅니까? 얼마나? 간단한 사실은 이해와 객관적인 사고의 단계입니다. 사실없이 가정을하는 것은 문제 영역에서 쉽게 길을 잃을 수있는 방법입니다.

  5. 객관하십시오 . 모든 문제는 간단히 분해, 측정 및 이해 될 수 있습니다. 이해할 수없는 문제는 단순히 추가 분해, 측정 및 이해가 필요합니다. 화를 내거나 좌절하는 데 쓸모가 없으며 이론이나 비난에 대해 논쟁하는 것도 생산적입니다. 문제 해결 과정과 관련된 비이성적 인 행동이나 신념은 독이 어서 해결책을 찾기가 매우 어렵습니다.

  6. 패턴과 원칙을 선호하십시오 . 일, 언어, 프로그래밍 모델, 컴퓨터 아키텍처 및 엔지니어링 방법을 수행하는 수십 가지 올바른 방법을 경험하게 될 것입니다. 올바른 방법은 없지만 반복해서 적용 할 수있는 확실한 기본 개념이 있습니다. 이러한 패턴을 배우는 것은 학습과 사고의 모든 단계를 안내 할 것이므로 배우십시오.


1
  1. 프로그래밍에 대한 열정
  2. 겸손
  3. 새로운 것을 빨리 배울 수있는 능력

0

고용주로서 저는 다음과 같은 프로그래머로만 사람들을 고용 할 것입니다.

  1. 코드를 한 단계 씩 실행 한 경험이 있습니다.
  2. 간단한 특정 문제를 해결하기 위해 적절한 디자인 패턴을 선택할 수 있습니다.
  3. 선택한 디자인 패턴을 반영하는 코드를 구현할 수 있습니다.

내 경험상 프로그래밍 작업에 지원하는 컴퓨터 과학 졸업생의 5 % 미만이 기본적으로 이러한 기술을 보유하고 있습니다. 이것들은 상업적으로 유용하기 위해 필요한 최소한의 기술이며, 모든 사람이 이러한 기술을 배울 수있는 것은 아닙니다.

다른 좋은 점은 다음과 같습니다.

  • 팀 프로젝트 작업 경험
  • 소스 컨트롤 사용
  • 단위 테스트 경험

이를 통해 기존 개발 팀과의 통합이 쉬워 지지만 일반적으로 업무에 대해 배울 수있는 과목입니다.


0

나는 한때 새로 졸업 한 스태프들과 "상속"한 팀을 가지고 있었고 실제 프로그래밍을 한 다음에 (추가 돈을 벌기 위해) 다음에 실제 프로그래밍을 한 사람들이 가장 유능한 팀원이라는 내 경험을 가지고있었습니다. 따라서 경험이 핵심이며 언어는 중요하지 않습니다 .

그러나 모집자가 찾고있는 것을 찾으면 (jobserver.com과 같은 모든 공통 모집 사이트에서) C ++, C #, Java에 대한 많은 요청이 있지만 다른 사람들이 찾고 있음을 관찰하는 것이 흥미 롭습니다. 또한 COBOL과 같은 "이국적인"것들이 여전히 존재합니다.


0
  1. 대인 및 의사 소통 기술
  2. 실용적 접근 (학술적 이론이 아님)
  3. 기술적으로 기울어지지 않은 고객으로 생각할 수있는 능력
  4. 비용 / 이익 측면에서 중요 / 무시할 수있는 사항을 평가하는 기능
  5. 팀에서 일하는 능력
  6. 전략적 사고 능력 : 아키텍처, 확장 성, 확장 성
  7. 대학의 가르침이 실제 세계와는 거의 관련이 없음을 인정하는 개방성

이 직업의 학습 과정은 끝나지 않습니다. 끊임없이 자신을 배우고 개선해야합니다. 그렇지 않으면 그는 게임에서 "빠르게 빠져 나옵니다".


이것들은 모두 유용합니다. 그러나, 거의 제로의 대학 졸업생들이 가지고 있으며, 대부분은 직장에서 쉽게 습득되므로 중요하지 않습니다. 나는 당신이 다른 질문에 대답하고 있다고 생각합니다.
dbkk

@dbkk-나는 당신의 용서를 간청하지만, 문제는 "프로그래밍 프로그래머가 가진 기술"이 아니라 "무엇을 가져야 하는가"였습니다. 또한, 쉽게 구할 수 없습니다. 오랜 세월의 경험을 가진 사람들은 여전히 ​​대부분의 사람들이 빠져 있습니다.
Rook

1
이것들은 일반적인 기술이며, 많은 사람들이 학교에서 배우기에 적합하지 않습니다.
David Thornley

-1

다른 답변은 좋지만 대학에서 간과 된 기술은 실제 소프트웨어 엔지니어링 인 것 같습니다 .

OOP와 Java와 같은 언어를 가르치는 기본 수업은 훌륭하지만, 3 학년과 4 학년에 학생들이 (적어도 내 지역 대학에서) 좋은 아키텍처를 식별하고 만드는 방법을 배우는 대신 컴파일러와 운영 체제를 작성하는 이유는 무엇입니까? 요구 사항을 분석하고 기술 사양 목록을 작성하고, 가장 중요한 것은 작동하는 올바른 코드와 작동하지 않는 코드의 차이점이 무엇일까요?

우리 대학은 거의 같아 원하는 휘젓다하는 코더 대신 소프트웨어 엔지니어 . 나는 공학에 어떤 기술 / 재능을 보여주지 않은 사람을 고용하지 않을 것입니다.


4
사람들이 가르치는 것은 소프트웨어 공학이 아닌 컴퓨터 과학이기 때문입니다. 대학과 학생들이 컴퓨터 공학! = 소프트웨어 공학, 컴퓨터 과학은 과학, 컴퓨터 과학은 프로그래밍이 아니라 소프트웨어 공학이 프로그래밍 이상이라는 것을 깨달았다면이 문제는 사라질 것입니다.
Thomas Owens

-1. 언젠가는 누출 된 추상화에 직면 할 것이기 때문에 실제로이 레벨에서 작업을하지 않더라도 내부적으로 작동하는 방식 (컴파일러, OS, 어셈블리 언어 등)을 배우는 것이 중요합니다.
dsimcha

@dsimcha, 당신이 그것을 믿는다면, 당신은 현재 실제 회사에서 어떤 종류의 소프트웨어 엔지니어들이 고용되고 있는지에 대한 매우 좁은 견해를 가지고 있습니다. 그러한 것들이 가치를 더하지 않는 것은 아닙니다. 더 중요한 것을 가르치지 않는 기회 비용입니다.
니콜
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.