"왜"를 대답으로 얻지 않고 프로그래머에게 질문하는 방법


31

우리는 모두이 경험을했습니다. 당신은 당신이 질문에 대한 답을 알고있는 누군가에게 가서 그 사람에게 질문을하고 전형적인 응답으로 대답합니다 : "왜?" 왜 알아야하는지 설명하고 문제 해결을 시도합니다.

대화를 원래의 질문으로 되돌리고 그 답을 얻으려면 시간, 팔의 비틀기 및 인내가 필요합니다.

프로그래머가 왜 이렇게 하는가? 왜 프로그래머가 상급자가되면서 행동이 더 나빠지 는가?

원래 질문에 대한 답변을 추출하는 데 가장 효율적인 방법으로 프로그래머에게 질문 할 수있는 방법은 무엇입니까?


54
그들은 아마도 당신이 그 대답이 필요하지 않을 것임을 알고 있기 때문일 것입니다. How do I walk on water? Why? I want to cross the river Build a boat.
Daniel Gratzer 2016 년

30
그것은 우리의 시간을 낭비하지 않도록 설계된 속임수입니다. 당신은 정확한 것을 배우거나 물어 보지 않을 것입니다.
yannis 2016 년

17
더 많은 선임 프로그래머들은 질문에 대한 대부분의 질문이 XY- 질문이라는 것을 알고 있습니다.
Marjan Venema 2016 년

12
"많은 의견은 왜 개발자가 이런 식으로 행동하는지 설명하는데 관련이 있습니다. 이것은 위의 질문에 대한 답이 아닙니다." 그것은이다 직접적인 질문에 대답 "프로그래머가 지속적으로이 작업을 수행 할 왜, 왜 동작은 프로그래머가되고 악화 고위 나올까요?" 게시물 본문에 포함되어 있습니다. 이것은 또한 보여줍니다 프로그래머가이처럼 행동 : 자주가 질문에 대한 답변하지 않을 질문을 사람들 에게를 , 대신 그들이 질문에 대한 답변 원하는 의미를 .

8
"플루토늄에 손을 대려면 어떻게해야합니까?" 아니 아니. 질문 없습니다 방법을 알려주세요.
Erik Reppen 2016 년

답변:


91

누군가 솔루션을 구현하는 방법을 물을 때 개발자가 왜 "왜"를 묻습니까?

실제로 솔루션을 구현하는 것보다 솔루션이 적절한 지 평가하려면 더 많은 지식이 필요하기 때문입니다.

"이 작업을 수행하는 방법을 모르지만 그것이 내가해야 할 일인지 확실히 알고 있습니다."라고 말할 때 누군가를 믿기가 매우 어렵습니다. 사람들은 끊임없이 잘못된 질문을하기 때문에 프로그래머들은 계속해서 더 깊이 조사해야한다. 예, 때로는 원래 질문으로 돌아가지만 항상 그런 것은 아닙니다.

비유로 누군가 정비공에게 걸어 가서 자동차 배터리를 교체하는 방법을 물었다 고 상상해보십시오. 일반적으로 결함이있는 배터리를 진단 할 자격이있는 경우 배터리를 교체 할 자격이 있으므로 정비사가 교체가 필요한 방법을 물을 것입니다.

그는이 작업을 수행하지 않으면 배터리가 필요하지 않다는 것을 알고 결국 엔진이 꺼 졌을 때 조명을 꺼야한다는 것을 알 때까지 계속해서 더 많은 질문을 할 것입니다. 실행되지 않습니다. 미리 물어 보면 시간을 낭비하는 것처럼 느껴지지만 실제로는 경험을 통해 그가 둘 다 더 많은 시간을 절약 할 수 있다는 것을 알고 있습니다.

따라서, 당신이 질문의 선을 피하고 싶다면, 당신이 무슨 말을하고 있는지 아는 것을 그를 먼저 설득해야합니다.


4
정확히 이것입니다. 원하는 것을 모르는 고객은 엉덩이가 아프다. 원하는 것을 정확히 아는 고객은 종종 더 나쁩니다. 정보를 요청할 때 비즈니스 요구 사항을 생략하지 마십시오. 우리가하는 모든 작은 일은 종종 문맥과 관련이 있습니다.
Erik Reppen 2016 년

14

"문제는 구체적으로 다른 프로그래머와 어떻게 질문을하는지 다른 질문에 대한 답을 얻고 질문을하는 이유에 대한 토론을 건너 뛰는 것입니다."

적어도 결정 론적으로는 할 수 없습니다. 다른 프로그래머는 컴퓨터가 아니라 사람이 아닌 사람입니다. 당신이 그들에게 질문을하면 그들은 최고의 답변이라고 생각하는 것을 선택하게됩니다. 그들이 더 많은 맥락이 필요하다고 생각하면 그들은 그것을 요구하게됩니다.

당신은 짧은 결론을 찾고 있다는 진술로 질문에 앞장서 서 시도 할 수 있지만, 그들이 생각하는대로 가장 자유롭게 대답 할 수 있습니다.


13

문제는 구체적으로 다른 프로그래머가 어떻게 질문을하는지, 다른 사람은 대답을하고 질문을하는 이유에 대한 토론을 건너 뛰는 방법입니다.

당신은 할 수 없습니다. 프로그래머, 특히 좋은 프로그래머는 문제해결 하고 효율적으로 연결 됩니다. 고객이나 동료 프로그래머가 답을 찾으면 해결책을 제시하기 전에 해결해야 할 문제를 알아야합니다. 그렇게하면 효율적이며 (문제를 해결하지 못하는 답변을함으로써 시간과 시간을 낭비하지 않음) 실제 문제를 해결하고 있습니다 (요청해야 할 질문에 대한 해결책 / 응답 제공).

예-클라이언트가 당신에게 와서 X 기능을 구현하길 원한다고 말할 때. 때때로 고객은 실제로 X 기능이 필요하며 때로는 X를 원하지 않고 완전히 다른 것을 찾기 위해 고객을 파헤 치고 심문해야합니다. 프로그래머가 나이가 많고 경험이 많을수록 솔루션을 제시하기 전에 문제의 핵심에 도달하지 않아 과거에 화상을 입었을 가능성이 높습니다.

요약하자면-질문에 정확하게 답변하려면 다음을 확인해야합니다.

  • 올바른 질문하기 (따라서 문제를 미리 조사해야 함)
  • 문제의 맥락을 제공
  • 연구 중 일부를 공유하여 문제를 더 빨리 해결

내가 아는 대부분의 인간은 단지 인간이 아니라 컴퓨터입니다. 답변을 원한다면 인터넷 검색을 시도하십시오.


2
정확히 +1 고객이 개발 측면에서 수천 달러의 비용이 드는 기능을 구현하도록 몇 번이나 요청했지만 실제 비즈니스 요구 사항은 이미 존재하는 도구를 사용하여 쉽게 무료로 해결할 수 있습니다!
Arseni Mourzenko 2016 년

3
비유하면 외과 의사에게 특정 작업을 수행하도록 지시하는 것과 같습니다. 나는 당신에게 건강 문제가 무엇인지 묻고, 척추 지압사로 가서 문제를 해결할 수 있기 때문에 처음에는 수술이 필요하지 않다고 말할 것입니다.
Arseni Mourzenko 2016 년

정확히 :) 그리고 당신은 아마 외과 의사가 정확히 그렇게 할 것으로 기대할 것입니다.
Christian P

9

프로그래머가 왜 이렇게 하는가? 왜 프로그래머가 상급자가되면서 행동이 더 나빠지 는가?

불행히도 일반적인 진실과는 거리가 멀다.

그 행동은 정말 좋은 사람들의 소수에 국한됩니다. 그리고 당신도 그것을 배우는 것이 좋습니다.

그 이유를 건너 뛰는 저주받은 질문에 대답하는 것은 틈새로 빠르고 확실하게 운전하는 좋은 방법입니다.


교육받은 부분을 정말로 건너 뛰려면 제한에 대한 몇 문장과 질문을 건너 뛰려는 욕구로 질문 앞에 접두어 넣을 수 있습니다. 요약을 제시하는 것이 더 좋습니다.


그들이 생각하는 것만 큼 좋은지 여부는 그다지 중요하지 않습니다.
Florian F

4

여기에있는 모든 대답은 "이유"질문에 대한 정답이지만 OP 질문에 아무도 대답하지 않았습니다.

원래 질문에 대한 답변을 추출하는 데 가장 효율적인 방법으로 프로그래머에게 질문 할 수있는 방법은 무엇입니까?

대답은 놀라 울 정도로 간단합니다. 방법을 묻기 전에 왜해야하는지 알려주십시오.

가장 좋은 방법은 개발자들이 제품을 둘러싼 높은 수준의 회의에 참여하는 것입니다. 더 큰 그림을 제공하여이 특정 작업을 수행해야하는 이유를 확인할 수 있습니다. 그들은 방법을 먼저 생각 해낸 것에 놀랄 수도 있습니다.


얼마나 간단합니다. 약간의 맥락을 제공하고 왜 많은 시간을 절약하는지 설명합니다. 개발자는 처음부터 도움을 줄 수있는 올바른 길을 생각하게됩니다.
joshp

3

훌륭한 프로그래머는 솔루션을 구현하기를 원하지 않습니다. 특정 문제에 가장 적합한 솔루션을 구현하려고합니다. 정보가 필요합니다. 질문은 정보를 수집하는 방법입니다. 모든 정보가 없으면 프로그래머는 자신이 모든 요구 사항에 맞지 않는 솔루션을 구현하는 데 어려움을 겪고 있음을 알고 다시 수행해야 할 것입니다. 프로그래머에게 정보를 숨기지 마십시오. 정보를 숨기면 시간이 낭비되고 사기가 사라지고 솔루션이 열등 해집니다.


1

프로그래머는 문제를 해결하기 위해 "하드 와이어"입니다.

좋은 프로그래머는 "올바른"문제를 해결하려고 노력할 것입니다.

누군가가 요구하는 것을 제공하는 것만으로는 종종 해결해야 할 잘못된 문제입니다.

MS Office 자동화가 가장 열광하던 시절, 일반적으로 몇 주 동안 한 Office 제품에서 "this"를 수행 한 다음 다른 제품에서는 "that"을 수행하는 방법을 묻는 일련의 질문을 받게됩니다. 그런 다음 다른 것에서 또 다른 것. 이들 각각은 신속하게 처리되지만 아직 완전히 언급되지 않은 "문제"는 해결되지 않습니다. 그들은 체인에서 다음 "링크"로 계속 돌아옵니다.

당신이 그들을 중지하고 "왜?" 그런 다음 그들은 문제를 바로 설명 할뿐만 아니라 달성 하고자하는 것을 더 넓게 추적하고 설명 해야합니다. (BTW, 프로그래머 는 다른 사람들만큼이나 이것으로 고통받습니다.
"큰 데이터베이스의 데이터를 Access로 가져 와서 Excel로 가져 와서 조금 마사지 한 다음 Word를 가로 질러 결과를 메일 병합하고 매주 사람들에게 이메일로 보낼 수 있도록"사용자 체인 수행 일괄 작업 의 모든 결과와 함께, 월요일 아침에 사람의받은 편지함에 제일 먼저 앉아 그의를 전혀 전혀 수동 사용자의 참여.

사용자가 좋아하는 것을.

우리는 당신이 거기에 도착하는 가장 좋은 방법을 제공하기 전에 당신이 가고자하는 곳을 알아야합니다.

또는, Monty Python의 말을 인용하면 : "5 분짜리 대답을 원하십니까?"

소수점 3 자리 3 자리로 숫자를 먹일 때 대처할 지 여부 만 알고 싶을 때 프로그래머가 특정 기능의 모든 세부 사항을 뒤틀어 놓을 필요는 없습니다.

당신의 관점을 아는 것은 종종 당신이 얻는 답을 근본적으로 재구성 할 수 있습니다.


0

마지막 질문은 "원래 질문에 대한 답변을 추출하는 데 가장 효율적인 방법으로 프로그래머에게 질문 할 수있는 방법"입니다.

먼저 "효율적"및 "효과적"을 혼동하고 있습니다. 가장 효율적으로 하려면 "답이 뭐예요?"라고 쓰십시오. 종이에 프로그래머에게 보여주세요. 그것은 질문을하는 매우 효율적인 방법입니다. 또한 답변을 얻는 데 매우 비효율적입니다.

둘째, 소프트웨어 개발자가 질문에 답한다고 가정합니다. 그들은 아닙니다. 그들은 문제 해결사입니다. 당신의 태도는 당신이 문제 해결을 이해하지 못한다는 것을 분명히 보여줍니다. 문제를 해결하는 가장 효과적인 방법은 문제를 문제 해결사에 설명 할 수있는 지점까지 문제를 이해 한 다음 문제 해결사에 제시하는 것입니다. 다른 방법은 문제를 가능한 한 부분적으로 이해 한 다음 문제 해결사에게 불완전한 이해를 제시하는 것입니다. 문제 해결사는 먼저이 문제를 완전히 이해 한 문제로 전환하기 위해 두려워하는 질문을 한 다음 해결합니다.

매우 비효율적 인 방법은 당신이 시도하는 방법입니다. 문제에 대한 불완전한 이해를 얻고,이 문제가 어떻게 해결 될 수 있는지 추측하고,이 문제를 어떻게 해결할 수 있는지 문제 해결사에게 문의하십시오. 문제 해결사는 이전에이 동작을 보았습니다. 경험이 없으면 10 번, 경험이 있다면 천 번. 따라서 문제 해결사 당신이 완전히 잘못된 방향으로 향하고 있음을 알고 있습니다. 그리고 문제 해결사는 실제 방향을 이해하기 위해 질문을하는 올바른 방향으로 나아 가기 위해 필요한 일을합니다. 문제에 대한 불완전한 이해를 이해하기위한 첫 번째 질문과 실제 문제를 이해하기위한 두 번째 질문.


0

달성하고자하는 내용과 작업중인 상황을 명시하여 질문을 시작하십시오. 충분한 맥락 을 제공 하면 "이유" 가 표시되지 않습니다. , "이것이 정말로 필요한가?"

왜냐하면, 통계 , 대부분의 제안 기능은 빨아 하고 구현하는 번거 로움 가치가 없습니다.

전형적인 반박은 "그러나 그의 일"입니다. 그의 작업은 좋은 코드를 작성하는 것 입니다. 대부분의 기능은 작동하는 코드베이스의 재 설계 와이 "재 설계"를 필요로하기 때문에 일반적으로 기능을 추가하지 않습니다 .

  1. 영원히 걸립니다
  2. 새로운 버그를 추가
  3. 일하는 데 사용 된 것들을 깨 뜨리다
  4. 유지 보수를 불필요하게 만듭니다

좋은 코드는 아닙니다. 좋은 코드는 최소한입니다.


프로그래머의 직업은 좋은 코드를 작성하지 않습니다. 프로그래머의 임무는 고용 한 회사의 가치를 창출하는 것입니다. 많은 경우에 좋은 코드를 작성하는 것이 이것의 일부입니다. 대부분의 경우 작동하는 폐기 코드를 신속하게 조립하는 것이 이것의 일부입니다. 나는 많은 기능이 짜증 난다는 것에 동의합니다.-나는 고객이 결코 스마트 프로세스를 통해 생각하지 않았기 때문에 "이봐, 이것이 유용 할 수 있기 때문에 고객이 결코 사용하지 않은 새로운 기능을 추가하고 싶었던 회사와 계약을 체결했습니다 ".
Maurycy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.