상사는 코드에 대한 설명을 한 줄씩 설명하기를 원합니다.


155

나는 상사가 읽고 읽고 싶어하는 설명이나 해설을 한 줄씩 (또는 이미지별로 이미지 등으로 적절하게) 제공해야합니다.

그는 프로그래머가 아니기 때문에 코드를 따라갈 수 없으므로 모두 영어로 번역되기를 원합니다.

전에이 작업을 수행 한 사람이 있습니까?

나는 모든 소스 코드에 주석을 달았고 JSDoc 을 사용 하여 모든 함수, 변수 등에 대한 완전한 문서를 생성했으며 구현 예제와 전체 작업 주석을 포함한 전체 데모를 포함시켰다.

프로그래머가 아닌 사람을 위해 코드에 주석을 달기 위해 할 수있는 다른 일이 있습니까?

이것은 합리적인 요청이 아닙니다. 그렇지 않습니까?


최신 정보

결국, 나는 그가 요청한 것을하는 데 시간을 잘 사용하지 않는 이유를 설명 할 수있었습니다. 그는 합리적인 사람이며, 내 직업이 무엇인지 이해하지 못했습니다. 그가이 게시물을 보았을 때, 나는 그것이 정상적인 요청이 아니라는 것을 빨리 이해했다고 생각합니다.

나는 다른 프로그래머가 따르기에 적합한 문서 (JSDoc 및 인라인 주석-기술적 문제에 대한 추가 참고 사항)와 상사가 따라야 할 프로그램의 주요 논리에 대한 매우 광범위한 흐름도를 제공했습니다.

결국, 모든 당사자들이 만족했고 우리는 전진했습니다.


과거의 이유로 잠긴 경우 자세한 내용은 "닫힌 인기 투표 질문 잠그기" 를 참조 하십시오.
yannis

답변:


160

아니요 , 합리적인 요청이 아닙니다!

IT 부서 에서 대화를 나누거나 다른 사람이 대화를 나누도록하십시오. 그것은 비이성적 인 생각인데, 비록 할 수있는 일이 너무 비싸지 만 실제로는 결코 행해서는 안된다. 함수와 서브 루틴에 대한 개요는 합리적이지만 모든 코드 라인을 "설명"하는 것은 아닙니다. 그렇게하는 것보다 손으로 언어를 읽는 법을 배우는 것이 더 효과적 일 것입니다.

그가 요구할 다음 일은 수학 공식을 번역하거나 영어 텍스트로 번역하지 않는 것입니다. 확실히 가능하지만 오류 및 오해의 여지가 많이 생겨서 절대로 수행해서는 안됩니다. 코드를 영어로 "번역"하는 것과 같습니다.


흥미 롭다 : 물리학에 관한 Richard Feynmans 강의를 읽으십시오. 많은 부분이 영어로 신중하게 표현 된 주장이라는 것을 알게 될 것입니다 (X이면 Y는 사실이므로 Z ... 등). 작은 수학. 제가하는 요점은 영어로 설명 할 수 있다는 것입니다. 당신이해야하는지 여부는 또 다른 문제입니다.
quick_now

1
@quickly_now-오래 전에 대학에서 읽어보십시오. 나쁜 독서는 아닙니다. 나는 당신이 그것을 설명 할 수 있다는 것에 동의합니다. 당신은 당신이 설명하는 사람이 그 뒤에있는 "추상"(코드, 수학 방정식과 그 의미 ...)을 이미 이해하고있을 때 어떤 언어로도 설명 할 수 있습니다. t-모든 언어로 설명하는 데 문제가 있습니다.
Rook

4
@ 루크-좋은 지적. 양자 역학을 엘크가 어느 방향으로 움직 였는지 어휘가 제한적인 원시 부족에게 설명하는 것은 다소 어려울 것입니다.
quick_now

나는 때때로 당신의 관리자의 '의도'를 미세 관리 할 수있었습니다. 그러나 코드 자체가 매우 명확하면 영어 텍스트로 읽을 수 있습니다.
Arvind Chinniah

150

당신이 있습니까 설계 문서를 ? 이것들은 코드가하는 일에 대한 영어 설명입니다. 비 프로그래밍 관리자는 그 이상을 필요로하지 않아야합니다.


15
그렇기 때문에 "비 프로그래밍 관리자는 그 이상을 필요로하지 않아야합니다."
Malfist

35
@Loren Pechtel : 저는이 사이트를 방문하여이 사람이 "X라는 정수 변수 만들기. 0으로 설정하십시오. Y라는 정수 변수를 작성하십시오. 0으로 설정하십시오. Z라는 정수 변수를 작성하십시오. 0으로 설정하십시오. X 위치라는 정수 변수를 작성하고 0으로 설정하십시오. Y 위치라는 이름의 정수 변수를 작성하십시오. 0으로 설정하십시오. Z 위치라는 정수 변수를 작성하십시오. 0으로 설정하십시오. X 회전. 0으로 설정하십시오. Y rotation이라는 정수 변수를 작성하십시오. 0으로 설정하십시오. Z rotation이라는 정수 변수를 작성하십시오. 0으로 설정하십시오. "...
FrustratedWithFormsDesigner

9
@Frustated 구문 강조 표시가 훨씬 쉽습니다! " [p32767, l21, c8] pX의 크기만큼 Integer증가 합니다 . Sum로 지정된 값만큼 pX증가 i하십시오 . 1 씩 증가 하십시오 . i3보다 작 으면 32768 페이지, 17 행, 42 열로 가십시오. 그렇지 않으면 32767 페이지로 가십시오. 라인 (21), 칼럼 8 "
Mateen Ulhaq

9
@ muntoo, 모든 기능을 인라인해야하므로 페이지간에 앞뒤로 이동할 필요가 없습니다. 그렇지 않으면 스택을 백업하는 데 많은 문제가있을 수 있습니다.
Kibbee

15
@ 좌절 : 그래서 당신은 누구의 목소리를 상상하고 있습니까? Sean Connery와 Morgan Freeman 사이를 결정할 수 없습니다.
Beta

113

올해의 마이크로 매니저 상이 있습니까? 당신의 상사가 지명받을 자격이있는 것 같습니다. 코드에 대한 라인 수준의 이해가 필요하다고 생각하지만 직접 읽는 방법을 배우고 싶지 않은 사람은 상상할 수있는 것처럼 마이크로 관리자만큼 완벽합니다.

개발자가되는 것의 한 가지 장점은 코드를 이해하기가 어렵 기 때문에 적어도 세부적인 구현 수준에서 최소한 비 기술적 관리를 통해 특정 수준 이상의 미세 관리를 막을 수 있다는 것입니다. 그 수준에서 그들의 머리 위로. 그러나 상사의 천재가 실리콘 커튼을 산산조각내는 방법을 발견했을 수도 있습니다.

또한 보너스로 영어 번역을 사용하여 다양한 개선을 제안 하기 전에도 번역을 수행하는 데 막대한 개발자 시간이 낭비됩니다 (프로그래머보다 코드를 잘 작성하는 방법을 알지 못한다고 가정합니다) 코드를 읽고 누군가가 번역하자마자 자신의 지혜를 나눌 수 있습니다. 그렇지 않으면 왜 모든 줄을 번역해야합니까?).

그래서, 그것은 합리적인 요청이 아니며, 전에는 들어 본 적이 없습니다. 그리고 나는 당신을 느낍니다. 코드 변환을 관리 도구로 사용하기 시작하면 작업하기에 잔인한 곳이 될 수 있기 때문에 모든 사람이 다른 직업을 조용히 찾아야 할 수도 있습니다.

긍정적 인 측면에서 상황에 따라 이름이 지정된 새로운 안티 패턴을 얻을 수 있습니까? 담배업자가 코믹하게 잘못된 번역이있는 헝가리어 외국어 숙어집을 사용하여 영어를 구사하지 못하는 사람과 의사 소통을 시도한 Monty Python 스키트 후 "Dirty Hungarian Phrasebook"반 패턴은 어떻습니까?


21
소액 관리 진단을위한 +1 내 자신의 말로 : 거기에서 f___를 잡아!
tdammers

@tdammers : 다행히도, 이것은 내가 상사에게 말할 수있는 종류입니다. 그는 보스가 아니라 좋은 친구 야!
heltonbiker

5
코드의 모든 줄을 이해해야하는 관리자를 프로그래머라고합니다.
James P.

91

그와 함께 앉아 10 줄의 코드를 통해 이야기하십시오. 당신이 그가 원하는만큼 그것을 이해한다는 데 동의 할 때까지 모든 세부 사항을 설명하십시오.

어쩌면이 경험은 그가 찾고있는 전부일 것입니다. 당신의 작품이 당신에게 어떻게 보이는지, 그리고 당신의 관점에서 소프트웨어가 어떻게 보이는지에 대한 인상입니다. 제 책에는 좋은 일입니다.

이 후에도 그는 여전히 당신이 계속하기를 원한다면 다음과 같이 말하십시오. 질문을하지 않고이 모든 것을 설명해야한다면 어떻게 포함하고 무엇을 제거해야하는지 알 수 있을까요? 결과가 유용하기까지 얼마나 시간이 걸렸습니까? 이제이 방법으로 몇 줄을 원하십니까?


57
설명해야 할 코드가 5 만 줄 (또는 무엇이든)이라는 것을 이해하고 10 줄을 설명하는 데 2 ​​시간을 소비 한 후에 확인하십시오.
HLGEM

6
실제로 후속 조치를 취하는 매우 건전한 방법입니다. 그에게 그의 길의 무지를 보라고하십시오.
Kibbee

4
@reinierpost : 당신의 방법은 순수한 천재입니다.
heltonbiker

5
이 작업을 수행하려면 먼저 상사에게 그것이 일반적으로 나쁜 생각 인 이유를 알려주고 THEN이 설명합니다. 당신이하지 않으면, 당신이 그를 "속임수"를 당기고 그를 방어에 넣는 것처럼 보일 수 있습니다.
nerdytenor

5
사람들에게 그들의 아이디어가 나쁘다고 말하지 마십시오! 그러나 실현하기 위해 무엇이 필요한지 논의하고 바로 가기에 대한 아이디어를 줄 수도 있습니다. 이것이 아이디어가 실현 가능하지 않다고 결론 지거나 초기 아이디어가 완전히 다른 것으로 변형되면 어느 시점 에서이 사실을 알아 차려야합니다. 그들은 삶입니다.
reinierpost

43

나는 그것이 합리적인 요청이라고 생각하지 않습니다. 소스 코드는 영어 (또는 그 문제에 대한 다른 언어)로 읽을 수 없습니다.

어쩌면 그는 당신이 자신의 코드가 자신이 승인하지 않거나 알지 못하는 일을하게 할까봐 두렵습니다. 그 경우에는 할 수있는 일이 없다고 생각합니다. 문서를 작성하거나 코드를 감사 할 사람을 고용하도록 설득해야 할 것입니다.


13
영어 번역이 있더라도 프로그래머가 아닌 사람은 다음을 잘 알고있을 것입니다./* and this line is transferring deposits to the correct account */ deposits.TransferAll(acctInfo);
IAbstract

15
만약 상사가 "코드가 승인하지 않거나 알지 못하는 일을 하게끔 두려워 할 것"이라면, 그의 두려움을 완화시키는 것은 아무 것도하지 않을 것입니다. 같은 사람이 코드를 작성한 번역을 제공하고 있습니다. 그들이하는 일에 대해 거짓말하는 것을 막아야 할 것은 무엇입니까? 여기에 다른 일이 있습니다.
mmc

4
COBOL은 영어로 읽도록되어있었습니다.
oosterwal

1
아마도 그는 추론에 동의하고 더 나은 아이디어를 얻을 수 있는지 코드가 무엇을하는지 알아 내려고 노력하고 있습니다. 어쨌든 최소한 그렇게하지 않는 것이 그의 일이 아니다.
heltonbiker

32

정말 간단합니다 :

  • 당신은 프로그래머로서의 기술 때문에 고용되었습니다
  • 귀하의 관리자는 이러한 기술이 없습니다
  • Ergo, 귀하의 관리자는 귀하가하는 일을 완전히 이해할 수 있다고 합리적으로 기 대해서는 안됩니다

나는 이전 직장에서 이와 비슷한 경험을했습니다. 저의 관리자는 회계사 였으므로 프로그래밍 수준을 이해하지 못하거나 신뢰하지 않았습니다. 그녀는 비 기술적 인 사람으로서 내가 쓴 내용의 세부 사항을 파악할 수있을 것이라고 기대할 수 없었습니다. 과도한 문서화와 비 기술적 인 사용자의 코드 관리 및 변경 방법에 대한 많은 요청 (예, 실제로)을 요청한 후, 그녀를 속이려고하지 않고 완전히 거부했습니다. 내가 설명하는 비유는 간단했다.

  • 나는 회계사가 아닙니다
  • 계정의 모든 단일 거래 또는 게시를 이해할 것으로 기 대해서는 안됩니다
  • 그렇다고 단순히 계정을 이해하지 못해 계정이 잘못되었거나 신뢰할 수 없다는 의미는 아닙니다.
  • 이것은 그것을 컴파일 한 사람을 신뢰 함으로써 가능해집니다.

결국, 이것이 나에게 들리는 것입니다. 직원을 신뢰하는 데 어려움이있는 관리자; 또는 그들이 떠날 것을 두려워하고, 이것이 그것을 완화하는 효과적인 방법이라고 생각합니다.

이것에 대한 유일한 해결책은 왜 이것이 이해되지 않는지 설명하고 설명하는 것입니다. 코드를 이해하고 비슷한 기술을 가진 사람이 관리자가 아닌 코드를 이해할 수 있도록하는 것이 귀하의 임무입니다. 그들에게이 실을 보여주는 것은 좋은 생각 일 수 있습니다 (또는 성격에 따라 정말, 끔찍한 것).


관리자는 어떻게 설명했습니까?
Jeff Martin

1
정확히 당신이 기대할 수 있습니다. ;) 그러나, 요점은 만들어졌고 요청은 멈췄다. 나는 그녀가 나의 주장의 타당성을 확신 시켰기 때문인지 또는 그녀가 번거롭고 포기할 가치가 없다고 결정했는지 여부를 모른다.
John N

25

한 줄씩, 말도 안됩니다. 내가 제안 할 수있는 것은 의견에서 문서를 생성하고 그에게 제공하는 것입니다. 그것은 내가 과거에 해왔 던 많은 캐나다 정부 보조금과 감사에 충분했습니다.

그는 한 줄씩 얻지 못하지만 방법마다 방법을 얻습니다.이 방법은 여전히 필요한 것보다 더 세분화 되어야 합니다.

플랫폼에 따라 일부 기존 솔루션 :

  • C # : 샌드캐슬
  • 자바 : javadoc
  • "C ++, C, Java, Objective-C, Python, IDL (Corba 및 Microsoft 버전), Fortran, VHDL, PHP, C # 및 어느 정도 D." : 독소

Pas2Dox을있을 때, ;-) 목록을 doxygen이 델파이를 추가
파브 아라 우호

Sandcastle 링크로 이동하십시오. 감동 해 "문서"탭을 클릭하십시오. "이 프로젝트에는 아직 문서가 없습니다"메시지를 참조하십시오. 감동보다 덜 본다.
Kaz Dragon

16

흥미로운 응용 프로그램의 전체 코드를 영어로 번역하는 것보다 코드를 읽는 법을 배우는 것이 훨씬 빠릅니다. 또한 COBOL을 사용하여 시도했지만 전혀 도움이되지 않았습니다. 그가 배우고 싶지는 않지만 그의 무지를 다른 사람의 문제로 만들고 싶어한다면, 당신은 진지한 머리를 가진 보스가 있습니다.


3
영어가 언어 여야한다고 생각합니다. 상사는 모든 소프트웨어가 DSL (도메인 특정 언어)로 작성되도록 요청한 다음 시스템 작동 방식을 변경할 수 있습니다.
David d C e Freitas

나는 코볼에 대한 언급이 그것을 요약한다고 생각합니다. 간단한 hello world를 인쇄 한 사람은이 언어가 얼마나 말도 안되는지를 알고 있습니다. 그것은 이해하기 쉽지만 너무 형식적인쪽으로 좋은 움직임이었습니다.
James P.

15

기술 전문 지식을 사용하여 상사를 추구하십시오.

  1. 처음부터 코드를 작성하는 데 걸리는 시간이 오래 걸릴 것임을 알려주십시오 (더 길게 만들려면 자유롭게 사용하십시오).
  2. 이 문서의 최신 상태를 물어보십시오. 모든 코딩 변경이 이제 최소 두 배는 오래 걸릴 것이라고 알립니다.
  3. 자신이나 다른 사람이 버그를 발견하면 지금 수정해야하는지 묻거나 의사 코딩이 끝날 때까지 기다리십시오. # 1과 # 2에 대해 상기 시키십시오.

모든 잘못된 솔루션 제안과 마찬가지로 문제를 식별하는 것이 좋습니다. 어쩌면 당신의 상사가 고위 경영진에 의해 기술적 질문에 부딪 히고 대답 할 수 없어서 난처한 느낌이들 것입니다. 그가 가장 염려하는 특정 코드 섹션이있을 수 있으므로이 대규모 사업을 해당 영역으로 제한 할 수 있습니다.

샘플을 제출하면 코딩이 어떻게 작동하는지 이해하지 못하면 (루프 란 무엇이며이 모든 항목에 어떤 영향을 미칩니 까) 어떤 언어로되어 있는지는 중요하지 않다는 결론에 도달 할 수 있습니다. 고급 사용자 관점에서 애플리케이션을 이해하지 않아도됩니다. 나는 당신이 오히려 실제 코드 / 힌트를 작성하고 싶다는 것을 알려주는 것이 공평하다고 생각합니다. 나는 다른 직업을 찾고 있습니다.


7
우리는 누군가를 "멍청이"로 특성화하는 데주의를 기울여야합니다. 프로그래머로서 우리에게 개인적으로 만족 스럽지만, 그것이 전문적이라고 생각하지는 않지만 아무리 이상하더라도 관리자의 요청은 그 장점에 따라 처리되어야한다고 생각합니다.
funkymushroom

6
@ funkymushroom :이 요청의 장점은 그가 바보라는 것입니다.
DeadMG

3
@ funkymushroom-우리는이 사이트에서 약간의 평온을 허용 할 수 있다고 생각합니다. 결국, 당신은 funkymushroom으로 간다.
JeffO

2
@ 제프 : 잘 찍은 점. 나는 결코 진흙 투성이입니다. 그러나 두 종류의 "멍청이"가 있습니다. "악의적 인 바보"와 "무지한 바보"그리고 나는 둘 다 함께 일했습니다. 첫 번째는 무시하고, 그는 우리의 경력에 ​​위험하며, 두 번째는 좋은 동맹이 될 수 있으므로 우리는 그를 가르쳐야합니다.
funkymushroom

@ funkymushroom-동의합니다.
JeffO

12

왜?

라인 별 해설은 합리적이지 않지만 여기에 내가 물어볼 것이 있습니다. 왜 이것을 원하십니까?

그 이유는 ...

  • 소프트웨어가 무엇을 하는지를 완전히 이해하고 싶습니까?
  • 내가 떠나면 다른 프로그래머가 프로젝트를 선택할 수 있는지 확인하고 싶습니까?
  • 내가 진짜 일을하고 있는지보고 싶어?

이 요청 뒤에는 합당한 욕구가있을 수 있으며, 그 사실을 파악하고 그 필요를 충족시킴으로써 상사를 기쁘게 할 수 있습니다.

최신 정보

Mikey's의견을 바탕으로 , 나는 이것을 너무 무딘 것으로 언급했을 것입니다. 난 당신이 말 그대로 말을해야한다는 것을 의미하지 않는다 "당신이 원하는 왜?"그냥 당신이를 찾아야한다 . 말과 말투가 큰 차이를 만듭니다. 구체적으로 다음과 같이 말할 수 있습니다.

"코드 한 줄에 대해 설명해 달라는 귀하의 요청에 대해 생각하고 있습니다. 그런 식으로 일하는 것은 조금 이례적인 일입니다. 제 작업에 대해 귀하에게 잘 전달되지 않는 것이 있는지 궁금했습니다. 우리의 코드 나 내가하고있는 일에 대해 정말로 이해하고 싶은 것은 무엇입니까? 여기서 무엇을 성취하려고합니까? "

물론, 그건 가능한 당신의 상사가 완전히 비합리적이다. 그러나 그는이 요청이 얼마나 외면적인지 알지 못하고 합리적인 목표를 염두에두고있을 가능성이 높습니다.

그렇지 않다면 이력서 연마를 시작하십시오. :)


이 답변에 -1 : 당신이 당신의 직업을 붙잡고 (또는 적어도 자발적으로 떠나고 싶다면) 그런 상사에게 '왜'를 물어서는 안됩니까? 이것은 다른 사람들이 제안했듯이 벌금이 부과되어야하는 것입니다.
벡터

3
Mikey의 의견에 동의하지 않습니다. 맹목적으로 명령을 따르는 것은 어리석은 일입니다. '왜?' 각 요청에 따라 불필요한 시간을 엄청나게 절약하고 회사의 많은 돈을 절약했습니다. 상담이라고하며, 상사를 두려워하지 않는 사람들은 자유롭고 큰 영향을 미칩니다. 나를 위해 일하는 사람들이 무언가를 제안 할 때 나는 또한 '왜?'라고 묻습니다. 게다가. 두 경우 모두 타당성을 추구하고 있으며, 그렇게하는 것이 허용됩니다.
Soviut

10

문맹 프로그래밍을 시도 할 좋은 기회 인 것 같습니다. 구글 그것. :)

하지만 ... 그것은 반드시이 아니다 완전히 무리한 요구. 직업의 일부 (더 중요한 부분 인 imo)는 알고리즘을 다른 개발자 및 필요한 경우 기술이 아닌 사람들에게 알리는 것입니다. 의사 소통 할 수없는 독창적 인 천재 프로그래머는 항상 문제가 있다고 생각합니다.

이를 위해 코드는 명확해야합니다 (즉, 진정한 자체 문서화 또는 문서화가 잘되어 있고 "자체 문서화"란 의미는 변수와 함수에 하나의 의미 또는 책임이 있으며 그 이름이 명확하게 반영됨을 의미합니다). 상사는 그의 요청에 대한 충분한 이유가있을 수 있습니다. 어쩌면 (여기서 추측하고 있습니다) 당신이나 당신의 전임자는 돌이킬 수없는 깨지기 쉬운 코드로 명성을 얻었으며 이것이 당신의 상사의 치료법입니다. 그것은 약간 극단적이지만 당신에게 유용한 운동 일 수 있습니다. 더 나은 문서를 작성하는 데 시간이 걸린다는 것을 알고 있다고 가정합니다. (그렇지 않은 경우 교육을 받아야합니다. 용어를 쓰는 것과 같습니다. 읽는 것보다 쓰기가 더 오래 걸립니다).


Wikipedia 페이지를 보았습니다. 연구 중에 보았던 "여기에 <인간 언어를 삽입하세요>"라는 생각이 듭니다. 사용자 언어를 사용 if blah then add 1 to x하여 nassi-schneiderman 또는 플로우 차트의 대안 과 같은 표현식으로 한 줄씩 프로그래밍 구조를 표시합니다 . 이것은 문해력있는 프로그래밍의 의미입니까?
James P.

당신은이 페이지에서 유일하게 Knuth의 문맹 프로그래밍을 언급 한 사람입니다-지난 40 년 동안 나머지 포스터가 어떤 암석에서 살았는지 궁금합니다.
cji

@James : Knuth의 "Tex-the program"사본을 구입하십시오. 이것은 문맹 프로그래밍입니다.
cji

10

한 줄씩 번역하더라도 각 코드 줄의 의미를 효과적으로 전달할 수는 없습니다. 한 줄의 코드에 대한 프로그래머의 이해는 항상 많은 요소와 관련이 있습니다. 멀티 스레드 코드와 같은 것으로 들어가면 영어 번역이 원시 코드보다 더 의미가 없습니다. 여러 기능 / 파일간에 분산 된 기능에 대해 생각해보십시오. 일부 코드는 다른 많은 코드를 설명하지 않으면 전혀 의미가 없습니다. 의존성 주입과 관련된 여러 부분을 "라인 단위"로 설명하면 무슨 의미인지 알 수 있습니다. 신 기능 절차 코드를 넘어서는 것은 영어 번역을 이해하기 위해 방대한 양의 프로그래밍 지식이 필요합니다. 또한 if / else 결정문처럼 단순한 것을 살펴보십시오. 라인별로 없습니다. 다음 줄은 런타임 데이터에 의존하기 때문입니다. 다음 줄은 여러 가능성 중 하나 일 수 있습니다.응용 프로그램의 기능을 설명 할 때 PM을 프로그래머로 만들었을 때 5 세 이상입니다.


10

프로그래밍을 가르치는 데 사용 되었기 때문에 너무 기뻤습니다.

그는 빨리 그는 내가 나 때문에 슬퍼 할 것이다, 그가 흥정보다 점점 발견 할 것이다 좋아 일을 설명 :-)


3
이것이 가장 좋은 대답이라고 생각합니다. 나는 그것을 시도해 보는 것에 대한 모든 주저를 이해하지 못한다. 나는 거기에 앉아서 코드를 설명하기 위해 돈을 받는다는 것을 의미한다! 지옥, 코드가 완전히 엉망이 아니라면 아마도 그것을 즐길 것입니다. 아무리 훌륭하더라도 개선 할 버그와 장소를 찾을 수 있습니다.
Bill K

1
프로젝터를 통해 표시된 코드를 입력하는 동안 물건을 설명하는 선생님이있었습니다. 어쩌면 이것은 운전 수업처럼 조금 할 수 있습니다. 모든 코드를 통과 할 수없는 경우 수행중인 작업과 방법을 더 잘 이해할 수 있습니다.
James P.

1
나는 교육 사업에 직접 들어 가려고 노력하고 있으며 비슷한 대답을했습니다. 나는 @Bill과 함께 사람들이 그러한 포용 적 입장을 취하는 것이 심각하게 실망합니다. 우리는 코드의 작은 부분조차 설명하는 데 시간을 투자 할 가치가 있다고 믿었습니까?
Rei Miyasaka

1
@Rei : 나쁘거나 좋은 태도는 비슷한 사람들의 많은 부분을 차지하는 경향이 있습니다. 나는 풍부한 경험 (엔지니어, 대학원생, 교수, 컨설턴트, 장기 직원)을 가졌으므로 관점을 제시한다고 생각합니다. 또한 내 태도는 수년에 걸쳐 바뀌 었습니다.
Mike Dunlavey

10

'보스'를 언급 할 때 이것이 "귀하의 팀을 담당하는 중간 관리자"입니까? 또는 회사의 소유자? "시간별"또는 "급여"로 지불합니까?

보스가 책임을 맡고있는 중급 관리자라면, 보스의 요구 사항을 충족시키기 위해서는 회사의 생산성이 회사의 생산성의 1/3로 줄어든다는 점을 지적하십시오.

당신의 상사가 "수표에 서명하는 사람"이라면, 그에게 더 외교적으로 같은 것을 설명합니다. 귀하의 작업은 "코드 작성"에서 "코드 작성, 코드 설명 작성, 설명 설명"으로 진행되었습니다.

여기에 이미지 설명을 입력하십시오


왜 돈을 가져 가지 않습니까? 원숭이와 같은 코드를 생성 할 때 유일한 가치가 마음에 드십니까?
Bill K

9

순서도는 아마도 그에게 더 도움이 될 것입니다. 이것은 분명히 특이한 요청이며 관리자로서 그에 대해별로 말하지 않습니다.


18
실제로, 그것은이 사람에 대해 많은 것을 말해줍니다 ...
Marjan Venema

5
그것은 참으로 많이 말한다, 그러나 그것은 단지 많은 아닙니다 - 즉,이 맥락에서 수단 "에 대해 많은 말을하지 않습니다"무슨 좋은 개인에 대한합니다.
Joseph Weissman

8

상사가 당신이 작성한 코드를 이해하는 데 약간의 시간을 할애한다는 사실은 당신의 이익을 위해 사용할 수 있습니다. 그를 Cucumber에 소개해보십시오 : http://cukes.info/

그리고 당신의 상사가 미래에 당신을 위해 BDD 테스트를 작성하도록하십시오.


나는 내 가게에서 Cucumber를 잠시 동안 사용하려고 노력하고 있습니다 ... 불행히도 (또는 아마도 운 좋게도!) 내 상사는 작동하는 한 장면 뒤에서 일어나는 일을 신경 쓰지 않습니다. 시험 작문의 이점을 먼저 이해하게하는 것은 오르막길이었다.
Jason Lewis

6

그는 그 사실을 알고 귀찮게해서는 안됩니다. 소프트웨어 개발에서 구현은 변경 될 수 있습니다. 이벤트 디자인은 변경 될 수 있습니다. 정보 숨기기, 캡슐화 및 추상화에 대해 설명하십시오.
그는 팀의 일원으로서 코드의 클라이언트로서 더 넓은 의미에서 코드의 기능에 대한 명확하고 높은 수준의 추상화로만 작동해야합니다. 코드의 모든 계층이 다른 사람의 코드의 다른 계층과 작동하는 것과 같은 방식입니다. 그 이상을 알면 속도가 느려지고 코드의 내부 작업을 기반으로 가정을 할 위험이 있습니다. 이러한 가정은 코드를 변경해야 할 때 보류를 중단합니다. 코드를 기반으로 시스템이나 프로세스를 구축하면 문제가됩니다.
또한 이런 종류의 작업을 수행하면 효율성이 떨어집니다. 서로 다른 두 곳에서 후속 변경을해야 할뿐만 아니라 업무 사기에 부정적인 영향을 미치므로 결과물이 훨씬 더 줄어 듭니다.


6

영어의 아름다움은 아름답게 난독 화된다는 것입니다. 이것을 당신이 유리하게 사용한다면, 당신은 이런 종류의 요청을 다시 다루지 않을 것입니다. 코드의 작은 조각을 샘플로 사용하지만 매우 추상화되어 이해하기 쉽지 않은 코드를 사용합니다. 그런 다음 프로그래밍 책의 장을 위해 작성하는 것처럼 기술 영어로 주석을 작성합니다. 더 길고 복잡할수록 좋습니다. 이 기능 하나를 문서화하는 데 몇 시간이 걸 렸는지 알려주십시오. 그런 다음 실제 코드 기반의 1 % 중 1/10 (가능한 경우 코드 행을 기준으로 실제 수치 사용, 이보다 더 나쁠 수 있음)이라고 설명하십시오. 그는 영어 번역의 내용을 전혀 알지 못하며이 수준의 문서를 작성하는 데 20,000 시간이 소요될 것입니다. 그러나 그의 임무를 수행하기 위해 열심히 노력하십시오. 당신이 그것을 뽑을 수없고 그가 당신을 연주하고 있다고 의심한다면 이것을 시도하지 마십시오.


6

이것은 특별한 휴가 문제 뾰족한 머리 보스 딜버트 스트립 의 후보처럼 보입니다 ! 그의 요청은 언뜻보기에는 합리적으로 들리지 않습니다 .

유머는 제쳐두고, 실제로 필요한 것이 무엇인지 , 왜 그런지 알아 내고 , 그에게 그 돈을주는 데 몇 달러 나 몇 시간이 걸리는지 조언하고, 그렇게 많은 돈을 쓸 것인지 결정하게하십시오.

자신에 관해서는, 당신이 그의 기괴한 요청을 충족시키는 데 걸리는 시간을 세운 다음 고용주가 당신을 치료할 의향이있는 새로운 직업을 찾는 데 시간의 일부를 투자하는 것이 낫지 않은지를 결정하십시오 전문가로서!


1
비용-편익 분석이 그 일을해야합니다. 어쩌면 관리자가 가져올 추가 혜택이있을 수 있습니다. 돈을 지불하지 않으면 상급 관리자를 강제하고 방어하기가 어렵습니다.
mbx

6

그를 사무실로 데려와 코드 둘러보기를 제공하십시오.

그는 불합리한 요구를했다는 것을 어느 정도 깨달았으며, 그는 떠날 것이며 다시는 귀찮게하지 않을 것입니다.

코드 이해를 돕기 위해 그의 요구를 포기하지 않으면, 그는 당신을 찌를 다른 다르지만 터무니없는 방법을 찾을 것입니다.

이것은 마모보다 마모가 더 잘 작동하는 경우입니다.


+ 1- 같은 줄을 따라 생각했다-요청에 그를 데리고-아마 너무 지루해 및 / 또는 너무 오래 전에 죽음에 무서 워있을 것입니다.
Vector

+1 나는 그것을 좋아한다- "마모보다 잘 작동한다".
Mike Dunlavey

6

번역가 "Language X to English"가 있다면 매우 좋을 것입니다. 그러면 아무 문제없이 웃으며 말할 수 있습니다. 그리고 다음과 같은 메가 바이트의 텍스트가 포함 된 메일이 제공됩니다.

  • 20 개의 요소를 가진 새로운 정수형 배열을 보자.
  • x를 정수를 저장하는 변수라고하자.
  • x를 0으로 설정
  • x가 20보다 작은 동안 다음 두 줄에서 처방 된 것을 수행하십시오.
  • x가 1 인 인수로 nThPrime을 호출 한 결과로 인덱스 x가있는 a의 배열 요소를 설정합니다.
  • x를 1 씩 증가
  • ....

또 다른 옵션은 셰익스피어 에서 프로그래밍을 제안하는 것 입니다.


나는 같은 제안을하려고했다. 사장님은 개념적 개요를 원하지 않고, 한 줄씩보고 싶어서 하루 안에 무언가를 찾아내어 완전히 쓸모는 없지만 표면적으로 정확한 문서를 만들 수 있어야합니다. 코너 케이스에 의해 쉽게 혼동되는 펄에 if-eles의 쥐 둥지인지 여부는 중요하지 않습니다. 변수 선언, 변수 수정, 메소드 호출 등을 식별합니다 (한 줄씩 기억하십시오. 방법 은 코드를 groks ).
PhilDin

예,이 보스는 무지합니다. 그는 "추상"이 무엇인지 모르고 영어가 컴퓨터 프로그램을 표현하는 데 좋지 않다는 것을 알지 못합니다. 그는 그가 모든 세부 사항을 알고 싶지 않다고 상상할 수 없기 때문에 프로그래머에게 돈을 지불합니다. 그러므로 그는 이와 같은 교훈을받을 자격이 있습니다.
Ingo

5

상사는 코드에 대한 설명을 한 줄씩 설명하기를 원합니다.

강인한.

그는 프로그래머가 아니기 때문에 코드를 따를 수 없으므로 모든 코드가 영어로 번역되기를 원합니다.

프로그래머가 아닌 경우 코드를 읽지 않아야 합니다. 조금도.

대신 고급 문서를 제공하십시오.

이것은 합리적인 요청이 아닙니다. 그렇지 않습니까?

아니.


4

프로그래머로서, 당신은 정말로 "두 개의"직업을 가지고 있습니다.

첫 번째는 좋은 프로그램을 만드는 것입니다. 두 번째는 회사 안팎의 고객에게 "판매"하는 것입니다.

상사의 요청은 첫 번째 직업을 "상처"합니다. 프로그램을 문서화하는 데 시간이 더 걸립니다. 다른 한편으로, 그는 실제로 당신의 "두 번째"직업에서 더 열심히 일하게 만들고 있습니다.

상사는 HIS 혜택과 회사 내외부의 사람들의 이익을 위해 프로그램을 영어로 문서화하도록 요구하고 있습니다. 그가 자신의 일을하도록 도와 주면 장기적으로, 더 많은 하드웨어, 인력 또는 돈을 요구할 때 도움이됩니다. 결국 그는 더 많은 일을 해달라고 부탁했습니다.


3
라인별로 문서화! = 프로젝트 판매. 이 정보를 제공하는 문서가 이미 있어야하며이를 요구 사항이라고합니다. 2 가지 직무 설명에 동의하지만 해당 수준으로 문서화해도 프로젝트 / 시스템 / 응용 프로그램을 판매하는 데 도움이되지 않습니다. 작품을 제시하기위한 적절한 수준의 문서가 있지만 이것이 아닙니다.
cdkMoose

이 회사에서 수표를 작성하는 사람이이 관리자가 회사 리소스를 낭비하는 것을 좋아하지 않을 것입니다.
JeffO

@ Jeff O : 가능합니다. 또는 WHOLE 회사가 이런 식으로 맨 위로 올 수도 있습니다.
Tom Au

4

BDD 가이 문제에 적합 하다고 생각 하지만 프로젝트가 거의 완성 된 것처럼 보이므로 지금 구현하기가 어려우므로 나중에 참조하기에 더 좋습니다.

BDD 사용 사례는 사람이 읽을 수있는 문서로 설명되며 자동화 된 기능 테스트로 변환됩니다.


이것은 지금까지 가장 건설적인 제안 일 수 있습니다. 행동 중심 개발은이 요구를 정확히 충족하도록 설계되었습니다. 프로그래머와 관리자 / 클라이언트는 소프트웨어의 기능에 대해 동의하는 데 도움이됩니다. 설명을 작성하면 코드 계획에 도움이되고 테스트를 실행하면 여전히 정확한 설명임을 알 수 있습니다.
Nathan Long

4

아마도이 요청은 ANTLR 과 같은 것들을 배우기에 좋은 시간 일 것 입니다. , 언어의 문법을, ANTLR을 가지고 당신이 가진 모든 코드를 분석, 당신의 통과 AST의 때문에, 모든 노드 생성 템플릿 기반의 설명을 i++설명한다 increase i by 1 using postfix increment operator. 정말 재미 있어야합니다. 상사는이 도구가 빌드 스크립트에 포함되기를 원할 수도 있으므로 변경할 때마다 새 버전의 기능을 설명하는 ~ 20MB의 전자 메일을 받게됩니다.

추신. 농담, 바보 야.


3

나는 이것이 합리적이지 않은 요청이라는 것에 동의하지만, 상사는 Docco 의 출력과 같은 것을 감사하게 생각할 수 있습니다. 다른쪽에 산문. 물론 의견을 직접 입력해야하지만, 기술이 아닌 독자에게도 프리젠 테이션은 좋은 IMHO입니다. 예를 들어 Underscore.js에 대한 주석이 달린 코드의 라인 별 주석 섹션을 참조하십시오 . 파이썬과 쉘 스크립트 버전도 있습니다.


이것은 질문에 대해 가장 유용한 답변 중 하나입니다. 실제로 docco를 사용해 보았지만 기존 의견 중 일부에 문제가 있으며 잘못 렌더링되었습니다. 따라서 JSDoc을 대신 사용하여 Google의 지침에 따라 설명서를 생성했습니다. 예쁘지는 않지만 매우 완벽하며 표준 형식입니다. docco의 문제는 주석에 맞게 코드를 구성해야하거나 그렇지 않다는 것입니다. 제안 해 주셔서 감사합니다.
Billy Moon

3

당신의 상사가 정보를 얻지 못하고 협박했을 수도 있지만 실제로는 합리적인 사람입니다. 그렇다면, 그 / 그녀와의 추론이 효과가있을 수 있습니다- "정말 그가 원하는 것을"제공하겠다고 약속 한 캐주얼 한 대화; 프로그램이하는 일에 대한 산문 안내서.

그것이 "나의 길 또는 고속도로"에 오면 지금 가스를 확인하는 것이 좋습니다.


3

오이 와 같은 행동 중심 디자인 프레임 워크를 사용하여 수용 테스트를 작성할 수 있습니까? 코드를 설명하지는 않습니다. 그것이하는 일과 자연어를 설명 할 것입니다. 또한 실행 가능한 이점도 있으므로 문서가 최신 상태가 아닌 경우 테스트 실행기가 빨간색으로 표시되므로 항상 최신 상태를 유지할 수 있습니다.

소개 비디오를 확인하십시오. 아마도 새로운 보스를 찾는 동안 좋은 기분 전환이 될 것입니다 ... ;-)


2

관리자는 자신이 관리하는 사람들이 무엇을하는지 이해하지 못하고 그들이 생산 한 결과를 이해할 배경이 없다는 사실에 거의 고민을합니다.

나는 그가이 솔루션을 매우 철저하게 생각했다고 의심하고, 아마도 언뜻 그에게 합리적으로 보였다. 그러나 이것은 프로그래밍 코드가 실제로 무엇인지 이해하지 못하기 때문입니다.

모든 프로그래머는이 요청의 부조리를 이해하지만 일단 언어를 지나면 밝혀진 모든 것이 알고리즘이라는 것을 직관적으로 알기 때문에 똑같이 암호입니다.

// Set s to the first address in the server list
server_info *s = cmd->servers;
// Loop until s is NULL
while (s) {
    // call the server's init function passing our current ID and address
    s->init(proc->id,*addr);
    // call log::info with our custom message
    log::info("Starting server %s",s->name);
    // Set s to the value returned by the server's next() function
    s=s->next();
} // end of loop

여기서 문제는 주석이 각 행의 기능을 설명하는 동안 모든 의미가 무엇인지 이해하지 않으면 코드가 실제로 무엇을 수행하는지 전혀 모른다는 것입니다. 프로그래머라면이 패턴을 본 적이있을 것입니다. 그러나 판매만을 이해하는 사람에게 이것을 보여주십시오. 그는 이전과 같이 주석을 읽은 후 혼란 스러울 것입니다.

상사에게 기본 프로그래밍을 가르치면 실제로 시간절약 할 수 있습니다. 그가 당신의 코드를 읽고 싶다면, 그렇게 할 수있는 도구를주십시오. 대부분의 언어는 구문이 매우 간결하며 구조를 배우는 데 1 ~ 2 시간 밖에 걸리지 않습니다. 그는 며칠 후에 거의 포기할 것이지만, 적어도 그가 무엇을 전달하고 있는지, 더 중요한 것은 그가 코드를 읽고 싶지 않은 이유 를 알게 될 것 입니다.


1

IMHO ... 작업을 완수하는 책임이 있다면 작동 방식을 알아야합니다 ... :)


2
관리자 또는 프로그래머를 언급하고 있습니까?
Nathan Long

모든 비 기술적 인 관리자가이 많은 개발자 시간을 소비 할 수있는 회사는 몇 개입니까?
JeffO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.