"복사 및 붙여 넣기"코더를 신속하게 제거 할 수 있습니까? [닫은]


15

코드를 복사하여 붙여 넣은 사람들의 이력서를 필터링하고 코드가 작동하기를 희망하는 경우 이력서를 필터링하는 방법이 필요합니다. 이 모든 것은 시스템의 나머지 코드를 이해하기위한 이해 (또는주의)없이 발생합니다.

물론 코드 복사 및 붙여 넣기는 새로운 객체, 제어 등을 배우는 것의 일부라는 것을 알고 있지만 개발 경력의 70 % 이상을 차지하는지 어떻게 알 수 있습니까?

필자는 기술이 너무 구식이거나 프로젝트와 관련이없는 고위급 직원을 만났습니다. 그들은 모두 솔루션에 대해 전혀 생각하지 않고 Google에서 복사 한 다음 코드를 붙여 넣습니다. 결과적으로 동일한 프로젝트에서 JSON, AJAX, 콜백, ASMX, WCF 및 포스트 백이 잘못되었습니다. 각 기술이 사용되는 곳에는 일관성이나 논리가 없다는 것이 분명합니다.

최악의 경우,이 유형의 개발자는 공격에 대한 보안 문제와 경로를 만듭니다.

질문

프로그래밍 배경이 좋지 않은 사람들을 걸러 내려면 어떻게 하시겠습니까? 이력서 레벨에서 할 수 있습니까? 그렇지 않은 경우 인터뷰 중에 어떻게해야합니까?


프로젝트의 기술 설계자가 필요한 것 같습니다. 누군가는 법 WRT를 사용 된 표준, 사용 된 기술에 따라 법을 제정하고이를 일주일의 애완 동물 아이디어로부터 멀어지게해야합니다.
quick_now 2012

답변:


47

필자는 기술이 너무 구식이거나 프로젝트와 관련이없는 고위급 직원을 만났습니다. 그들은 모두 솔루션에 대해 전혀 생각하지 않고 Google에서 복사 한 다음 코드를 붙여 넣습니다. 결과적으로 동일한 프로젝트에서 JSON, AJAX, 콜백, ASMX, WCF 및 포스트 백이 잘못되었습니다. 각 기술이 사용되는 곳에는 일관성이나 논리가 없다는 것이 분명합니다.

개발자의 기술이 문제라고 생각하지 않습니다. 더 나은 코딩 규칙을 "장려"하는 자신감을 갖지 못하는 팀 리더 또는 건축가 또는 기술 부채 관리의 중요성을 이해하지 못하고 관리 팀을 제공하지 않는 관리 팀 개발자는 그렇게하기위한 시간과 자원. 귀사는 코드 검토를 보유하고 있습니까?

복사 붙여 넣기 개발자가 아닌 리더십이 문제 일 수 있습니다.


16
+1 Leadership may be the problem, not copy-paste developers. 정확히 내 해석이었습니다.
George Marian

진심으로. 통신 부서에 심각한 문제가 있습니다.
MIA

+1 : George Marian의 의견에 대한 Ditto. 로버트.
Jim G.

좋은 것입니다. 면접관, 채용 관리자 등 많은 사람들에게 다가 갈 수 있기를 바랍니다.
Saar

이 답변에 대해 많은 합의가있는 것처럼 보이지만 "고급"레벨 녀석은 기능을 지시하지 않으며 구현은 코더에게 맡겨집니다. 나는 고위급 직원이 "이봐, 기술의 무리를 사용하지 말고, 단지 <these two>를 사용하십시오"라고 말할 수도 있지만, 여전히 카피 페이스트 개발자들은 카피 페이스트를 할 것입니다! 내가 잘못 ?
Chani

13

프로그래밍을 할 수없는 프로그래머를 제거하는 방법은 스크리닝 단계 또는 인터뷰 단계의 일부로 실제 프로그래밍 연습을 설정하는 것입니다. (후자는 부정 행위를 방지하기 위해 환경을 제어 할 수 있기 때문에 아마도 더 나을 것입니다.)

그러나 그것이 실제로 문제를 해결할 것이라고 생각하지 않습니다.

... 동일한 프로젝트에서 JSON, AJAX, 콜백, ASMX, WCF 및 포스트 백이 잘못되었습니다. 각 기술이 사용되는 곳에는 일관성이나 논리가 없다는 것이 분명합니다.

여기서 중요한 문제는 팀이 내부 코드를 충분히 검토하지 않고 알려진 문제에 대한 기본 솔루션의 "플레이 북"을 개발하지 않는다는 것입니다. 이것은 부분적으로 문화 문제, 부분적으로 커뮤니케이션 문제 및 (아마도) 프로젝트 마감일과 관련된 문제입니다.

또 다른 문제는 일반적으로 프로젝트의 수명이 길고 수명 동안 새로운 기술 / 기술이 나타나고 오래된 기술은 유리하지 않다는 것입니다. "개 아침 식사"기술 / 기술 사용을 피하려면 다음 중 하나를 수행해야합니다.

  • 프로젝트별로 사용될 수있는 기술 / 기술 목록을 설정하고 시행하거나
  • 프로젝트에서 사용하는 기술을 새롭게하기 위해 노력하십시오.

1
면담 중에 필기 시험을 치르지 않으면 발로 직접 촬영할 수 있습니다. 나는 마지막 4 명의 고용주에게 그것들을 가지고 있었고 종종 몇 가지 질문이 얼마나 간단한 지에 놀랐습니다. 한 곳에서 다른 후보자가 시험을 마치지 않고 떠났다는 소리가 들렸다.
Adrian J. Moreno

1
인터뷰 중 필기 시험이 유능한 프로그래밍 기술을 갖추는 유일한 방법이라는 데 동의합니다. 그러나 내 대답의 주된 이유는 개발자 기술만으로는 SO의 문제를 해결 하기에 충분하지 않다는 것입니다.
Stephen C

편집 타이머에 걸리지 않았습니다. 나는 표준과 검토가 필요하다는 것에 전적으로 동의합니다. 우리는 최근에 새로운 코딩 표준 문서를 발표하고 새로운 코드 검토 프로세스와 결합하여 QA에 훨씬 적은 버그를 가졌습니다. 다음 목표는 내부 훈련 팀을 시작하는 것입니다.
Adrian J. Moreno

10

보호 관찰 기간 3 개월에 사람들을 고용하십시오. 그들이 빨면 해고하십시오.

검사하지 않으면 기대할 수 없습니다. 코드 검토, 감사 도구 CI 서버는이를 자동으로 실행할 수 있습니다.

실제 코드의 질문과 같이 인터뷰에서 실제 질문을하십시오.

화이트 보드에 코드를 작성하도록합니다.

기술이 아닌 관리자 인 경우이를 판단 할 자격이 없습니다.

자격이없는 경우 유명한 수석 전문 컨설턴트를 통해 테스트를 수행하십시오. 기존 직원 및 비즈니스 경쟁 업체에 100 배 생산적인 사람을 알고 있는지 문의하십시오. 인터뷰를하도록 비용을 지불하십시오.

수술 장없이 병원을 운영하려면 바로 가십시오.


당신은 경험있는 사람에 대해 이야기하고 있습니까? 왜 직장을 떠나 3 개월이 걸리는 장소에 가입해야합니까? 왜 인력이 있습니까?
Saar

나는 경험 있고 유능한 사람들에 대해 이야기하고 있습니다. 장기적으로는 저렴합니다. 인적 자원은 고용 법 위반으로 고소당하는 것을 막습니다. 원래 Henry Ford의 수치 관리자를 위해 다루기 힘든 일이있었습니다. 실화, 찾아보십시오. 그 사람이 잘 운동 할 것이라는 것을 이미 알고 있다면 나보다 나을 것이 낫다. 당신은 일하기에 너무 좋고, 일하기 좋은 환경이 있으며, 보호 관찰 후에는 뚱뚱한 보너스를 받기 때문에 그 사람은 직업을 바꿀 것입니다. 영구적으로 중복 된 경우 회사는 3 개월을 추가로 지불합니다. 그런 것
Tim Williscroft

9

나는 지난 몇 년 동안 사람들을 인터뷰하고 90 %의 후보자가 단순히 프로그램을 할 수 없다는 것을 발견했습니다. 프로그래밍 결정을위한 나의 인터뷰 기법은 후보자에게 간단한 설명을 제공하고 후보자가 마커와 화이트 보드를 사용하여이를 해결하도록하는 것입니다.

실패 모드는 다음과 같습니다.

디자인을 제안하고 다른 것을 구현합니다. 이 후보들은 팀에서 위험하기 때문에 거부됩니다. 사양을 따르지 않고 버그를 작성하는 등

디자인을 발명 할 수 없습니다. 놀랍도록 많은 "경험이있는"후보자들은 구현 설계를 포함하는 사양이 필요합니다.

CV 주장 경험에도 불구하고 프로그래밍 언어를 모른다.

더 자세한 사양을 추출하기 위해 추가 질문을하지 않습니다.

디자인 결정을 설명 할 수 없습니다. 이것은 중요한 것입니다. 누군가 이유를 설명 할 수 없으면 매번 다르게 할 것이며 일관성이 없어집니다.

최종 결과는 인터뷰에 많은 시간을 보냈으며 자주 모집하지는 않았습니다. 그러나 개발 팀은 매우 좋았으며 회사 전체를 완전히 존중하여 전달했습니다!


당신의 경험은 꽤 평범하게 들립니다.
quick_now

5

Jeff Atwood가 http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html 의 게시물에서 언급 한 FizzBuzz를 제안합니다 .

1에서 100까지의 숫자를 인쇄하는 프로그램을 작성하십시오. 그러나 숫자 대신 3 개의 인쇄 "Fizz"의 배수와 5 개의 인쇄 "Buzz"의 배수의 경우. 3과 5의 배수 "FizzBuzz"의 숫자입니다.


9
-1. FizzBuzz는 총 바보를 감지합니다. 복사 및 붙여 넣기 코딩을 수행하려면 총 바보가 될 수 없습니다.
back2dos

@ back2dos-대면 인터뷰를 할 때까지 이미 "총 바보"를 제거해야합니다. FizzBuzz는 누군가 문제와 그 해결 방법을 생각하게합니다. 복사 및 붙여 넣기를하는 사람들은 사물의 뒤에 "이유"를 배우지 않기 때문에 어렵지 않으므로 복사하여 붙여 넣는 사람들을 노출시켜야합니다.
Jetti

3
+1. FizzBuzz는 더 많은 총 바보를 감지합니다. 또한 수준 이상의 사회적 기술로 기술 부족을 보완하는 사람들을 감지합니다. 그 사람들은 첫 번째 선별 검사를 통과 할 수있는 좋은 기회가 있습니다. 예를 들어 그들은 합법적 인 학위를 잘 보유 할 수 있습니다.
MSalters

1
글쎄, 당신은 나에게 fizzbuzz를 요청하고 나는 즉시 떠난다. :) 주니어 카테고리의 IMO는 어쨌든 녀석을 훈련시킬 것이기 때문에 실제로 유용하지 않으며, 시니어 카테고리에서는 쓸모없고 공격적입니다. 당신은 다른 방법으로 사람들을 키우고 영리하게 할 수 있어야합니다. 현물과 유사한 질문에 대한 코딩은 족제비 농장 회사의 IME 표시입니다. 실제로 누군가의 코딩 기술에 관심이 있다면 코드 검토 질문을합니다. 그리고 좌절하지 않고 모든 관련 답변을 얻으십시오.
Balog Pal

@BalogPal : 2 분 동안 웃고 미친 듯이 타이핑을 시작한 다음 처음 컴파일, 실행 및 작동하지 않으면 나 자신을 부끄러워 할 것입니다.
gnasher729

2

나는 세 가지 면접 질문을한다

  1. 컬렉션 프레임 워크에서 아무것도 가져 오지 않고 Java에서 숫자 유형을 저장할 수있는 링크 된 목록 작성
  2. 해당 목록에서 노드를 추가 / 제거하는 방법을 보여주는 코드 작성
  3. 해당 목록에서 최대 / 최소를 얻는 방법을 보여주는 코드 작성

나는 사람들이 5 분 안에 이것을 완료하고 사람들이 포기하기 전에 30 분 동안 고투하는 것을 보았다.


첫 번째 요구 사항은보다 구체적이어야합니다. java.util.LinkedList l = new java.util.LinkedList()아무것도 가져 오지 않지만 반드시 내장 컬렉션을 사용 합니다.
베리 브라운

이것은 최근 졸업생들에게 특히 중요한 질문입니다. 주의를 기울이거나 프로그래밍에 시간을 보냈다면 거의 사소한 것입니다. 나는 그것이 정확할 필요는 없지만 충분히 가깝다고 가정합니다.
브라이언 해링턴

3
@Bryan, 아직 아무도 시도하지 않았습니다. 그리고 나는 대답이 100 % 정확한지 상관하지 않습니다. 오직 그들이 문제를 이해하고 유능한 방식으로 문제에 접근 할 수 있다는 것입니다. 가장 일반적인 문제는 추가 / 제거가 목록의 머리 나 꼬리에서 작동하지 않는 문제입니다. 나는 이것을 지적하는 사람들의 반응에 따라 사람들을 고용하는 것이 좋습니다.
sal

2

이력서를 작성하는 데 본질적으로 무한한 시간이 있기 때문에 이력서 수준에서는이 작업을 수행 할 수 없지만, 수행 한 작업에 대한 기술적 인 통찰력이 필요한 몇 가지 질문을하면 전화 인터뷰에서 할 수 있습니다. 이것은 당신에게 대답 (좋은지 나쁜지)과 그들이 도착하는데 얼마나 오래 걸렸는지를 알려줍니다.

인터뷰 할 때 코드를 작성하도록하십시오. 그들이 실제로 프로그래밍 할 수 있는지 알 수있는 유일한 방법입니다. 문제를 간단하게 만들고, 인터넷에 연결된 컴퓨터를 설치하고, 사용하는 IDE를 설치 한 다음 질문 (gimme-hte-codez 제외)을하고 작동 방식을 확인하십시오.


편집 : 사후 분석의 경우 PMD에 복사 / 붙여 넣기 감지기가있는 것으로 보입니다 : http://pmd.sourceforge.net/cpd.html


나는 "... 그리고 당신이 사용하는 IDE"가 될 때까지 당신과 동의했습니다. 코더는 업무 환경에 따라 다르며 $ random-IDE에 익숙하지 않을 것입니다. 저는 20 년 이상 코딩을 해왔으며, IDE를 던지면 IDE 작동 방법을 알아 내기 위해 처음 10 분을 낭비했습니다. 나는 편집기 (webby 일을 할 때 bluefish, 다른 모든 것을 위해 emacs) 및 다른 모든 것을위한 명령 줄 도구 (수정 제어, 필요할 때 컴파일 등)를 사용합니다. 디버거를 전혀 사용하지 않습니다. 디버거가 필요하다면 잘못하고 있다고 배웠습니다. 이것이 디버그 코드의 목적입니다!
HedgeMage

@HedgeMage, 나는 그들이 말하지 않았다 있었다 상황이 매우 말하는 것을 어떻게 사람이 핸들을보고 ... 그것을 사용하는. 메모장 + 자바가 충분합니까? NetBeans를 다운로드하여 설치합니까? 그는 IDE에서 X를하고, 약간 해킹하고, Y와 Z를 요구하는 방법을 물어볼 것입니까?

@HedgeMage, 디버그 코드는 알아야 할 모든 가능한 것을 미리 결정할 수 있으면 좋습니다. 디버거는 다음 질문을 결정하기 위해 질문에 대한 답변을 볼 필요가있는 경우에 좋습니다. 디버그 코드를 사용하면 새로운 바이너리가 필요하고 다시 시작한 후 다시 위치로 이동합니다.

1
@ Thorbjørn : 물론, 청구서는 지난 몇 년간 통역 된 언어로 작업하여 지불되었지만 C 코딩 시절에도 디버거를 해고하여 좋은 디버그 코드를 선호했습니다. 아마도 그것은 내 편견 일뿐일 것이다. 나는 코드 자체를 배우는 방법을 전혀 배운 적이없는 많은 사람들과 대학에 갔다. 그들은 무언가를 함께 때리고 디버거가 "kinda"가 작동 할 때까지 비명을 지르는 것을 고쳤다. 나는 그런 종류의 미끄러짐 코딩을 참을 수 없다. 디버거가 악하다는 것을 의미하지는 않았습니다. 디버거와 다른 IDE 기능이 모든 워크 플로에 속하지는 않습니다.
HedgeMage 1

@HedgeMage, 나는 디버깅을위한 "작동 할 때까지 치십시오"접근법은 좋지 않지만 디버거가 나쁘다는 결론은 아마도 너무 광범위하다는 결론에 동의합니다.

1

단순한

  • (1) 방 + 무료 산소 안에 잠그십시오.
  • (2) 인터넷 연결 + 선택한 IDE + 음식에 대한 액세스가 가능한 PC를 제공하십시오.
  • (3) 모든 인바운드 및 아웃 바운드 트래픽을 기록하는 wireshark 또는 이와 유사한 방법이 있습니다.
  • (4) 그에게 중간 정도의 임무를 부여하십시오.
  • (5) 할당 완료 후 모든 HTTP 트래픽을 검사하십시오.
  • (6) 주제가 많은 양의 소스 코드를 복사 한 경우 주제를 종료합니다 .....

편집하다:

제작자 7가 지적한 바와 같이, 실제로는 비디오 캡처 (스크린 캡처)를 수행 할 수 있습니다.


소설이지만 궁극적으로 비현실적입니다.
Robert Harvey

... 또는 비디오 캡처를 수행하려면 논리 진행 상황을 참조하십시오. 아름다움 (또는 혼돈)이 펼쳐지는 것을보십시오.
goodguys_activate

1
주제를 종료 하시겠습니까? 자유 산소를 철회함으로써? 어질러 놓은!

@ Thorbjørn : 소스 코드의 큰 덩어리를 복사 한 후 발로 스스로를 촬영하는 것만 큼 지저분하지 않습니다.
Joe D

1
인터넷을 이용하지 못하는 사람들은 어제의 모드에 잠겨 있습니다. 나는 항상 그 질문이 아무리 사소한 것이더라도 볼 수있는 좋은 예라고 생각합니다. 나는 복사하여 붙여 넣지 않고 좋은 예를보고 최고의 기술을 적용합니다. 저는 풀 스택 프로그래머입니다. 이는 전문가가 아닌 일반 론자이며 전 세계에 의존한다는 것을 의미합니다. 분명히 죄악!
junky

1

가난한 코더를 "잡아 내고"싶으려면 프로그래머 역량 매트릭스 (유용하지만 모든 가능한 영역에 적용되지는 않지만 물론 자체적으로 만들 수 있음) 또는 codility.com (작업은 매우 훌륭하고 시간이 많이 절약됩니다).

일반적으로 좋은 코더를 고용하는 것은 어렵고 종종 몇 년의 연습이 필요합니다. 코딩 질문뿐만 아니라 수학, 논리, 동기 부여 질문은 말할 것도없고 자신 만의 인터뷰 질문 데이터베이스를 시작할 수 있습니다.


0

응시자들의 문제는 전혀 프로그래밍 할 수 없다는 것이 아니라 업무에 적합한 도구를 사용하려는 느낌이 없다는 것입니다. 내 제안은 새로운 시스템에 대한 높은 수준의 요구 사항이 주어지고 아키텍처를 제공하고 구성 요소 선택을 정당화하도록 요구하는 에세이 문제입니다. 그러나 브라우저없이 코딩 할 수없는 후보자를 위해 FizzBuzz를 유지하십시오.

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