답변:
"때에 따라 다르지"
<> 지식 또는 이해를 경험하십시오.
프로그래머 1은 아주 좋을 수도 있고 전문가 일 수도 있고 지난 5 년 동안 언어에 익숙하지 않은 사람 일 수도 있습니다.
프로그래머 2는 사용하는 언어와 독립적으로 개념을 이해하는 사람 일 수 있습니다. 또는 언어 B가 너무 어려워서 A가 더 쉬기를 희망하는 사람.
코딩 공포의 "경험의 신화" 는 읽을 가치가 있습니다
때에 따라 다르지.
한 언어를 고수하는 친구가 있으므로 "프로그래머 A"라고 생각하면 그 언어에 대해 1 년의 경험을 5 번받습니다.
다른 언어로 다른 일을 할 수 있습니다. 내가 특히 좋아하는 에세이 하나는 Paul Graham의 " Beating the Averages "입니다. 그것으로 그는 사람들에게 lisp를 배우도록 설득하려고 노력하지만, 또한 매우 유용한 포인트를 만듭니다.
프로그래머는 좋아하는 언어에 매우 매료되어 다른 사람의 감정을 상하게하고 싶지 않으므로이 점을 설명하기 위해 Blub라는 가상의 언어를 사용합니다. Blub는 추상화 연속체의 한가운데에 떨어집니다. 가장 강력한 언어는 아니지만 Cobol 또는 기계어보다 강력합니다.
사실, 우리의 가상 Blub 프로그래머는 둘 중 하나를 사용하지 않을 것입니다. 물론 그는 기계 언어로 프로그래밍하지 않았습니다. 이것이 컴파일러의 목적입니다. 그리고 Cobol에 관해서는, 그는 어떻게 누군가가 그것으로 무엇을 할 수 있는지 모릅니다. x (선택한 윤활 기능)도 없습니다.
우리의 가상 Blub 프로그래머가 전력 연속체를 내려다보고있는 한, 그는 아래를 내려다 본다는 것을 알고 있습니다. Blub보다 덜 강력한 언어는 그가 사용했던 일부 기능이 없기 때문에 분명히 덜 강력합니다. 그러나 우리의 가상 Blub 프로그래머가 힘의 연속체를 다른 방향으로 바라 볼 때, 그가 찾고 있다는 것을 깨닫지 못합니다. 그가 보는 것은 단지 이상한 언어 일뿐입니다. 그는 아마도 그것들을 Blub과 동등한 능력에 대해 고려할 것이지만, 다른 모든 털이 많은 것들도 마찬가지입니다. 그는 Blub에서 생각하기 때문에 Blub는 그에게 충분합니다.
그러나 전력 연속체보다 높은 언어를 사용하는 프로그래머의 관점으로 전환 할 때 우리는 블 러브를 내려다 본다는 것을 알게됩니다. Blub에서 어떤 작업을 수행 할 수 있습니까? 심지어 y도 없습니다.
일반적으로 조언은 둘 이상의 언어를 배우고 언어의 강점과 약점을 배우는 것입니다.
물론, 한 언어에서 수년간의 경험을 가진 개발자는 해당 언어의 핵심 라이브러리와 특유성을 더 잘 이해할 것입니다. 언어가 동일한 패러다임 (제국과 기능적)을 수용한다면, 그 언어를 배우는 것 외에 다른 언어를 선택하는 데 더 이상 어려움이 없어야합니다.
새로운 언어를 선택하는 데있어 가장 큰 어려움은 C #에서 Erlang으로 전환하는 데있었습니다. 새로운 구문뿐만 아니라 프로그래밍에 대한 새로운 사고 방식을 나타 내기 때문입니다.
언어는 문제가되지 않습니다. 며칠 만에 전체 언어를 배울 수 있습니다. 흡수하는 데 더 오래 걸리는 것은 규칙, API 및 다양한 타사 프레임 워크입니다. 사람들이 5 년의 X를 요구할 때, 언어에 신경 쓰지 않고, 그 언어와 관련된 문제를 해결 한 경험이 많은 사람이 학습 곡선에 대한 비용을 지불하지 않아도되기를 원합니다.
전문적이고 신중한 연습.
의도적으로 연습하지 않으면 전문 지식을 얻지 못합니다. (오류를 검사하고 수정하고, 약한 것을 연습하고, 전문가에게 잘못된 도움을주고 있음을 알려야합니다.)
당신이 향상하려고하지 않으면, 당신은 영원히 초보자가 될 수 있습니다!
10,000 시간의 의도적 인 연습을 마치면 전문 지식을 얻게됩니다. (교육 / 훈련에서 얻은 결과는 인터넷 전체에 있습니다.)
프로그래머 A가 의도적으로 연습하지 않았다면 더 나아지지 않습니다.
프로그래머 B가 의도적으로 연습하지 않았다면 더 나아지지 않습니다.
같은 연구에서 얻은 또 다른 결과는 15000 시간이 걸리고 10000 명이 있고 연습을 계속하면 나보다 더 나을 수 없다는 것입니다.
두 가지 언어를 아는 것은 아마도 B를 더 나은 프로그래머로 만들 것입니다 (규칙에 따라).
그리고 당신은 언어 A를 위해 그것들을 사용하고 있습니다. (언어 B에는 차이가있을 것입니다.)
그것은 부분적으로 A와 B의 차이점에 달려 있습니다 (특히 우리가 A에 대한 두 번째 개발자의 경험을 단축시키는 경우). 그것들이 상당히 비슷하다면 본질적으로 경험에 차이가 없을 것입니다. A가 상당히 다른 개념을 가지고 있다면, 3 년은 여전히 그것들을 배우기에 충분합니다. 매우 큰 라이브러리와 복잡한 도구를 사용하면 3 년에서 5 년 사이에 차이가있을 수 있습니다.
물론 여기서 가장 중요한 것은 개인입니다. 좋은 개발자는 3 년 안에 새로운 플랫폼을 철저히 배울 수 있으므로 문제가되지 않습니다.
언어는 언어이고 개념은 개념이라는 데 동의합니다.
내 문제는 요즘 복잡한 IDE가 없으면 전혀 프로그래밍 할 수없는 많은 프로그래머가 있다는 것입니다. 그들은 실제로 프로그래머는 아니지만 디자이너와 더 비슷합니다.
개인적 경험을 통해 난해한 Microsoft 개발 환경에 매료 된 많은 사람들이 있다는 것을 알고 있습니다. 텍스트 상자를 화면에 놓은 다음 마법사를 사용하여 속성을 설정하고 데이터베이스 그림에서 데이터를 드래그하는 것이 잘못은 아니지만 기본 평등 테스트를 설정하면 실제로 모든 언어의 코더입니까?
그런 사람들은 배운 개념을 다른 언어에 적용 할 수 없습니다.
사람들을 인터뷰 할 때 그들이 어떻게 개발을했는지, 어떤 프레임 워크를 사용했는지에 더 관심이 있습니다. "이벤트 핸들러를 어떻게 작성합니까?", "데이터를 DB에 정확히 어떻게 넣습니까?"또는 "클릭 할 때이 특정 버튼을 어떻게 보라색으로 설정합니까?"와 같은 질문을하고 싶습니다. 이것은 디자이너를 빨리 제거하고 프로그래머를 떠날 것입니다. 나는 선택한 언어로 1 년을 프로그래밍하는 것이 실제로 필요한 것에 충분하다는 것을 3 년에서 4 년으로 알았습니다.
또 다른 의견,
탈
"X 언어 / 플랫폼에서의 경험 년"은 대체로 병리학 병리학입니다 ...
그것은 해석에 개방적이며 언뜻보기에 유용하지 않습니다. 말했듯이, 경험의 신화 신화 는 잘 읽었습니다.
또한 결정적으로 "수년간의 경험"자체 측정은 매우 부정확 할 수 있습니다. 다음은 현재 공연의 예입니다. 주요 작업은 Java 웹 앱을 개발하고 유지 관리하는 것입니다. 그러나 이것은 MFC / C ++ / SQL Server 인 백엔드에서 실행됩니다. 결과적으로 나는 거의 매일 C ++ 코드를 다루고 있습니다. 그러나이 C ++ 경험은 상대적으로 피상적이며 유지 관리 지향적이며 실제로 더 큰 구성 요소 또는 프로그램을 MFC / C ++에서 처음부터 작성하지는 않습니다 (이전에는 이전 역할에서 사용되었습니다).
지난 5 년 동안 "5 년의 C ++ 경험"으로 계속 계산할 수 있습니까? 아마도. 아마. 특정 역할을 확보하기 위해 팔고 자하는 방법에 따라 완전히 거짓말을하지 않고 쉽게이를 극복 할 수 있거나 실제로 "5 년의 C ++ 경험"이 아니라는 것을 인정할 수 있습니다. :) 나는 이런 종류의 "정확도의 부정확성"문제와 유사하게 많은 사례가 있다고 확신한다. 경험의 깊이는 경험의 질을 심하게 흐리게 할 수 있습니다. 따라서 "C ++에 소비 한 X 시간"은 그 자체로는 큰 의미가 없습니다.