“코드 샘플”은 어떻게 생겼습니까? [닫은]


24

나는 전화 인터뷰가 꽤 좋았습니다 (CakePHP 관련 입장에서는 질문에 특히 중요하지 않습니다). 면접관은 저의 이력서와 성격에 깊은 인상을 받았습니다. 그러나 결국 그는 기존 작업 프로젝트의 코드 샘플을 이메일로 보내달라고 요청했다.

내가 아니에요 너무 내 코드는 자신의 두 발로 서있을 수 없다 걱정하지만, 나는 매우 중간 프로그래머가 아닌 전문가입니다. 코드 샘플 제 자리에서 나를 배제 할 수 있도록 코드 샘플 빠지지 않도록하려면 어떤 분명한 함정이 있습니까? 둘째, 이것은 아마도 대답하기 어려운 질문 일 것입니다. 코드 샘플의 어떤 기능이 너무 인상적 이어서 프로그래머 에게 훨씬 더 유리하게 기울어 질 것 입니까?

모든 아이디어 또는 제안을 환영합니다!


2
코드 샘플에 전송할 요구 사항이 있습니까? 오히려 무의미 해 보이는 사람은 누구나 웹에서 아름다운 코드를 복사 / 붙여 넣을 수 있습니다. 그들이 권리를 얻을 수없는 사람들을 제거하려고하지 않는 한 ...
FrustratedWithFormsDesigner

5
그냥 차기 위해, 당신은 그 / 그녀의 이름 모양의 펄 스크립트를 보낼 수 있습니다 ...;)
FrustratedWithFormsDesigner

2
@ thesunneversets : 개인 프로젝트의 절대적으로 멋진 소스 코드가 나온 것 같습니다 ...;) 진지하게, 이것은 쉽게 위조 수 있습니다. 그리고 현재 고용주가 소스 코드의 대표 샘플을 제공해도 괜찮습니까? 동료가 일부 코드를 작성한 경우에도 괜찮 습니까 (시간이 지남에 따라 파일이 몇 사람 사이에서왔다 갔다했을 수 있음)?
FrustratedWithFormsDesigner

2
윤리적 함의는 조금 걱정 스럽지만 조금만 있습니다. 나는 산업 스파이 활동에 빠진 것 같지 않다 . 동료의 경우 두 사람 만이이 코드베이스에 손을 댔으며 다른 사람의 코드는 큰 혼란이었습니다. 그래서 나는 거의 나 자신입니다! :)
thesunneversets

4
@thesunneversets, 고용주 코드를 제공하는 것은 비 윤리적 인 것이 아니라 많은 곳에서 불법입니다. 그거 하지마.
HLGEM

답변:


17

깨끗한 코드 를보고 싶습니다 :

깨끗한 코드 : 다른 코더가 쉽게 읽거나 수정할 수 있도록 올바르게 형식화 된 형식의 소프트웨어 코드입니다.

그 의미는:

  • 기능 -사소하지 않은 간단한 기능의 일부 기능 (게터 / 세터는 아무것도 아는 것으로 표시되지 않음)
  • 일관되고 깨끗한 스타일 - 인기 있거나 최소한 일반적인 케이싱, 들여 쓰기, 간격 및 브래킷 스타일
  • 좋은 이름 -품질 이름- i유일한 증분 값이 아니면 사용 하지 마십시오 . 넌센스 변수 이름을 사용하지 마십시오.
  • Clean code 의 다른 속성 -오류 확인, 조건, 루프, 편의 방법 또는 유틸리티 방법 및 방법 간 (각각 의) 분리 에 대한 모범 사례 . 그리고이 100 %가 될 수있는 좋은 시간입니다 DRY를 - 더 반복!

당신은 그들에게 흥미롭지 만 충분히 좋은 무언가를 보내면 좋은 개발자가 그 일을 거의 즉시 이해할 수있을 것입니다.

위의 주석 중 일부는 이것이 얼마나 쉽게 위조 될 수 있는가에 관한 것 같습니다. *이를 방지하려면 전자 메일에 코드의 목적과 기록에 대한 간단한 설명을 보내십시오.


* 최소한 면접관이 과거의 프로젝트에 대해 먼저 물었다가이 프로젝트의 샘플 요청한 작성해야했는지 또는 어떻게 진화했는지를 묻는다면 그 과정은 상당히 거짓말 쟁이라고 생각합니다. 나는 거짓말을 하는 대부분의 후보자들이 어쨌든 다른 분야에서 문제를 보일 것이라고 생각 합니다.


담당자에게 코드를 설명하도록 요청했는데 코드를 작성할 수 없거나 코드를 먼저 이해하지 않고 유지 관리에서 다른 사람의 코드를 조정 한 경우. 몇 년 동안 자신의 샘플을 설명 할 수없는 몇 명의 사람들이 인터뷰를했는지 놀랍습니다.
HLGEM

마커가 깨끗한 코드를 싫어하는 경우 주석을 추가하십시오.
Ewan

9

직장을 구할 때 여러 다른 언어로 된 ACM 프로그래밍 콘테스트 질문을 해결하고 그 이후 코드 샘플에 사용했습니다. 나는 그들이 좋은 코드 예제를 만들었다 고 생각합니다.

  • 그들은 어려운 문제를 해결했습니다
  • 이 문제에는 많은 양의 컨텍스트가 필요하지 않았으며 질문을 쉽게 얻을 수 있습니다.
  • 작성된 코드에는 IP 위험이 없습니다.
  • 각 문제는 합리적으로 단일 파일에 존재할 수 있으며 그리 오래 걸리지 않기 때문에 누구나 쉽게 컴파일하고 솔루션을 테스트 할 수 있으며 질문의 테스트 데이터를 사용할 수 있습니다.
  • 복잡한 문제를 더 작은 조각으로 나눌 수 있음을 보여줍니다.
  • 솔루션의 어떤 측면이 작동하는지에 대한 질문을 받으면, 당신이 무엇을 말하는지 알 수 있습니다. 특히 나이가 많았지 만 무슨 일이 일어나고 있는지 빠르게 해독 할 수 있습니다.

그리고 생성 한 코드는 명확하고 일관되며 읽기 쉽고 이해하기 쉬워야합니다.

그리고 마지막으로 :

  • 재미를 위해서만 해결할 가치가 있으며 좋은 습관입니다.

이것은 훌륭한 솔루션입니다. 나는 이것을 할 것입니다. 가장 좋아하는 특정 질문이 있습니까?
zkent

1
저의 의견으로, 단일 파일 코드 샘플을 갖는 것이 코드 또는 알고리즘 최적화를위한 입장을 신청하지 않는 한 반드시 좋은 생각은 아닙니다. 코드는 확실히 크지 않아야하지만 실제로 달성 할 수있는 것을 대표해야합니다 (예 : 좋은 OO 코드를 작성하고 모듈로 코드를 합리적으로 나눌 수 있다면 그것을 보여야합니다).
Namey

6
  • 가장 엄격한 수준에서 오류를 컴파일 / 해석하고 경고가 없어야합니다.
  • 매일 쓰는 상용구 코드가 아니어야합니다. 독창적이고 재미있게 만들어서 복사 / 붙여 넣기하지 않았 음을 분명히하십시오.
  • 방법 / 이유를 설명하는 주석이 포함 된 흥미로운 디자인 결정이 있어야합니다.
  • 인쇄물이 2-3 페이지를 넘지 않도록하십시오.
  • 신청하는 언어로되어 있어야합니다.
  • 처음 읽을 때 뇌가 아프지 않아야합니다. 친구에게 살펴 보거나 코드 검토에 게시하도록합니다.

3

글쎄, 내가 당신을 인터뷰하는 경우, 나는 당신의 코드 를보고 싶습니다 .

깨끗하고 문제 해결이 좋지만 실제 코드 가 더 좋습니다. 좋은 프로그래머는 언제 다른 프로그래머가 사기를 당했는지 알기 때문에 자신감이 떨어질 수 있습니다.

다른 사람의 코드를 읽는 것은 섹스를하는 과 같습니다 : 당신은 그것이 진짜 일 때를 알고, 다른 사람이 그것을 속이고 있다면, 결국 재앙이 발생할 것입니다. (실제 머저리가 춤추는 법을 모른다는 것을 깨달았습니다)

자신과 코딩 능력을 신뢰하십시오 . 면접관을 실제로 알지 못하면 코딩 스타일 / 기술에서 기대하는 바를 예상 할 수 없습니다.


10
나는 당신이 멍청이들이 춤을 추는 것은 아니라고 생각하지만 그들의 성적 능력을 확신합니다! : D
thesunneversets

아냐, 방금 나 자신이 너무 많은 재난을 보았다 ... :)
Machado

우리 학교에서는 사교 댄스 수업 / 볼에 출연하는 사람은 공학 전공입니다.
Eva

좀 더 정확하게하려면 성별을 게임 참조로
바꿔야

2

또한 현재 고용주가 작성한 코드가 아님을주의해야합니다 (귀하가 소유하지 않은 코드는 본인이 공유하지 않는 것이 좋습니다). 당신이 자랑스럽게 생각하는 것을 취하고 고용주 특정 적이 지 않도록 스스로 재 작업하십시오 (데이터베이스 테이블이나 서버 이름 등에 대한 참조를 제거하십시오). 실수가 있거나 코드 유형에 대한 기술이 좋지 않은 코드를 제출하지 않으면 (기반 기반 작업이 더 간단하고 SQL 코드를 검토 할 때 커서가 더 나은 성능을 발휘할 때 커서를 제출 한 사람을 거부 할 수 있습니다. 다른 더 일반적인 문제에 사용할 수 있지만 다른 문제에 대한 최선의 선택이 아닌 비교적 드문 문제 문제를 해결하기 위해 다른 언어에 대한 유사한 기술이 있습니다.


나는 그것을 완전히 재 작업하여 더 이상 고용주 고유의 정보가 포함되지 않는 것이 좋습니다. 윤리가 중요합니다-팁 주셔서 감사합니다!
thesunneversets

0

깨끗한 코드에 대해서는 Renesis의 두 번째 게시물이지만 제출 한 코드에 품질 및 잘 문서화 된 단위 테스트를 제공하는 목록에 추가 할 것입니다. 좋은 프로그래머는 코드에 대한 단위 테스트를 작성해야합니다.


0

후보자를 평가할 때 코드 샘플을 요청하는 사람의 의견으로는 몇 가지 고급 기능 (코드 내용)과 몇 가지 하위 기능 (코드 구조)이 있습니다. 고급 기능 :

  1. 신원 : 코드의 맛. UI / HCI 코더로 비용을 청구하는 경우, 실행할 때 시각적으로보기 좋은 느낌을 원합니다. DB 빌더 인 경우 데이터 표현 또는 분석에서 흥미로운 것을보고 싶습니다. 샘플은 당신이 자랑스럽게 생각 하는 것이어야합니다 . 그 중 하나 이상이 없으면 정체성이 없습니다.
  2. 성숙도 : 당신은 다른 문제에 대한 전략을 이동합니까? 흥미로운 문제를 해결하고 있습니까? 코드 나 접근 방식이 비슷한 문제로 쉽게 확장 될 수 있습니까? 반대로,화물 컬트 코뮌을보고있는 것 같은 느낌이 드나요?
  3. 의사 소통 : 코드는 무엇을하고 있고 왜 그 이유를 쉽게 설명합니까? 그렇다고 코드가 단순해야한다는 의미는 아닙니다. 실제로 복잡한 코드를 이해하기 쉽게 만드는 것은 보너스입니다.

저수준 측면이 더 간단합니다.

  1. 스타일 : 코드는 깨끗하고 일관되어야하며 (일부 확립 된 지침을 따르십시오) 잘 문서화되어야합니다.
  2. 포장 : 최소한의 readme, 실행 가능한 버전 및 실행 가능한 테스트가 있어야합니다. 읽어보기에서 후자를 실행하는 방법과이 특정 코드 샘플을 시연하는 이유를 알려줘야합니다.
  3. 언어 : 나는 보통 누군가에게 그 위치에 대한 언어와 가장 강하게 느끼는 것을 샘플로 요구합니다. 현재의 천장에 대한 좋은 아이디어를줍니다.

좋은 후보의 경우, 샘플은 다음 중 하나 일 것으로 예상됩니다 : A) 방탄 작은 샘플 또는 B) 더 큰 흥미로운 프로젝트의 좋은 부분 (예 : Github 개인 저장소의 모듈). 나는 그들이 개인 프로젝트 또는 학업 프로젝트가 될 것으로 기대합니다. 그들이 유료 프로젝트에서 하나를 보내면 사용 허가를 받았음을 알 수 있습니다. 해당 메모를받지 못하면 응시자 (취약한 후보자)로부터 잘라내거나 인터뷰 (강한 후보자) 중에 그것에 대해 물어볼 것입니다. 권한이없는 것은 큰 적기 일 것입니다 (아마도 극복 할 수없는). 고급 후보의 경우, 최고의 소스 샘플 중 일부는 작업의 일부로 수행 되었기 때문에 표시 할 수 없다는 면책 조항을 기대합니다. 그러나 나는 왜 그들이 보여줄 수없는 디자인을 자랑스러워하는지 그리고 아이들처럼 그것을 어떻게 사랑하는지에 대한 분별있는 평가를 기대합니다.

마지막으로, 어떤 사람들은 "아, 누군가는 인터넷에서 코드 샘플을 얻을 수있다"고 주장하지만, 좋은 생산 품질 코드를 이해하지 못하는 사람들은 대부분 그것을 볼 때 이해하지 못한다는 주장도있다 . 게다가, 코드를 검사 할 때 항상 Google에 고유 한 줄을 지정할 수 있습니다. 또한, 도둑질 코드는 자기 자신을 난처하게 만드는 인터뷰에 응시할 것입니다 ( "그래서 왜 이런 식으로했는지 ...?").

이전 고용 코드에 대한 마지막 메모 :하지 마십시오. HR 관점에서, 이전 고용의 코드를 요구하는 것은 부적절하고 회사에 대한 위험 신호입니다. 귀하는 모두 법적 책임이 있으며 (즉, 둘 다 고소 될 수 있음), 그들이하는 일을 전혀 모른다는 것을 보여줍니다. 코드가 이미 공개적으로 사용 가능하거나 해당 고용주로부터 명시적인 허가를받지 않은 한, 이전 고용주를 위해 작성된 코드는 절대 주어서는 안됩니다. 더 큰 문제는 대기업에서 직속 상사가 권한을 부여 할 권한이 없을 수 있으므로이 경우 법무 부서와 즐거운 시간을 보내십니까? 직원이 퇴사하는 직원의 IP를 공개하게되어 기뻐할 것입니다.


또한 모든 정보를 공개하여 대학원 실험실에 박사 학위를 취득 할 수있는 코드 샘플을 제공했습니다. 이 코드 샘플은 자율 로봇 (5-10k 라인)에 대한 전체 코드이며, 특정 파일 3 개가 단일화되어 있습니다. 문서는 훌륭했지만 깨끗하지는 않았습니다. 다시해야한다면, 인쇄 된 버전의 코드를 현장 인터뷰에 가져 오지 않았을 것입니다 (큰 글자로 "ROOKIE MISTAKE"라고 쓰여있는 100 페이지를 가져 왔습니다). 나는 완전한 교제를 받았기 때문에 너무 많은 사람들이 아니었다. 도덕 : 너무 많거나 너무 적습니다.
Namey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.