누군가 소프트웨어 개발 관행과 관련하여 확인되지 않은 진술을 제공하는 경우 "인용 필요"로 응답합니까? [닫은]


14

최근에는 Greg Wilson (소프트웨어 목공의 수석 과학자)의 강의에 참석했습니다 . 초록에서 :

소프트웨어 개발 관행에 대한 주장은 증거에 근거해야한다는 생각은 여전히 ​​소프트웨어 개발자에게는 이질이 없지만, 이제는 변화하기 시작했습니다. 특정 도구 나 관행이 소프트웨어 개발을 더 빠르고 저렴하거나 더 안정적으로 만든다고 주장하는 모든 학자는 현재 일종의 경험적 연구로 그 주장을 뒷받침 할 것으로 기대했다.

전반적으로 강의는 매우 유익했으며 개발에 대한 나의 접근 방식에 대해 깊이 생각하게했습니다. 특히, 저는 이제 많은 진술을 뒷받침 할 인용을 찾고 있습니다. 이전에는 제공된 진리를 단순히 반복하는 습관에 빠져 들었습니다. 나중에 확인해야 할 정신적 메모가 있습니다.

무뚝뚝하게 말하면, 나는 속을 수 없었습니다 .

강의에서 가져온 예는 다음과 같습니다.

"코드의 25 % 이상이 리팩토링을 필요로한다면 코드를 재 작성하는 것이 더 빠릅니다."

그럴듯 해 보이지만 사실입니까? 이것을 뒷받침하는 연구는 어디에 있습니까? 모든 언어에 해당됩니까? 등등.

좋아, 이것을 극단적으로 받아들이는 것이 가능하며, 당신이 첫 번째 원칙에서 스스로를 도출하지 않았다면 아무도 믿지 않을 것입니다. 그렇게하는 것은 광기 (혹은 수학 ;-))에있다. 그러나 누군가가 "이 순간에 [pick language of moment]로이 작업을 수행함으로써 생산성을 높일 수있을 것입니다. [10의 배수로 10 %]"생산성을 높일 수 있습니다. 그것을 받아들이거나 증명 된 증거를 요구할 것입니까?

그것이 후자라면 (그리고 그것이기를 바랍니다)

  1. 이 증거를 어디에서 찾을 수 있습니까?
  2. 얼마나 엄격한가요?

간단히 말해서, 누군가가 귀하에게 확인되지 않은 진술을 제안하면 "인용 필요"로 응답 하시겠습니까?


2
과학 이외의 많은 분야에서 사람들이 경험적 증거를 요구 하는가? 내 관찰에 따르면, 내가 원하는만큼 많지 않습니다.
David Thornley

1
마감 투표에 대한 의견은 어떻습니까? "너무 현지화 됨"및 "실제 질문이 아님"은이 문맥에서 실제로 설명 할 필요가 없습니다.
Inaimathi

1
그렇습니다. 저는 또한 찬성 투표의 이유를 알고 싶습니다.
Robert Harvey

@Robert 편집 해 주셔서 감사합니다. 반사시 염증이 훨씬 적습니다.
Gary Rowe

1
좋은 질문입니다. 나는 작년에 CUSEC에서 윌슨 교수가 연설하는 것을 보았고 그가 말한 것에 크게 영향을 받았습니다. 가장 중요한 부분은 학생이 그에게 주장을 인용해야한다는 주장을 인용하도록 도전했을 때였으며, 그는 박동을 놓치지 않았다.
Matthew 읽기

답변:


3

이러한 종류의 진술의 문제점은 주장을 뒷받침하는 경험적 증거가 있더라도 증거로 이어지는 연구가 현재 상황에 적용되는지 여부를 결정하기가 매우 어렵다는 것입니다.

직업의 거의 모든 것이주의 사항이 있거나 한곳에서 모든 개선이 다른 곳에서 장애가 될 가능성이 있습니다.

참호에 빠진 사람들은 경험을 통한 차이를 알고 있으며 일반적으로 과학적 연구를 통해 그것을 입증하려는 자금 / 시간 / 자원이 없습니다.

과학적 연구를 통해 그것을 증명하려는 사람들은 분명히 그러한 연구에 전념 할 자원을 가지고 있으므로 당신에게 무언가를 팔 가능성이 높습니다. 그래서 나는 자신의 개인적인 경험을 주장하는 모든 것에 더 엄격하게 적용해야한다고 말할 것입니다 경험적 연구에 의해 뒷받침됩니다.

누군가가 "코드의 2 % 이상이 리팩토링을 필요로한다면, 더 빨리 다시 작성해야한다"고 말한 경우, 누군가가 "코드의 98 % 이상이 리팩토링이 필요한 경우에 한해" 다시 작성하는 것이 더 빠릅니다. " 실제 숫자는 현재 수행중인 작업과 현재 코드의 이상적인 거리에 따라 다릅니다.

특정 시점 이후에 핵 리 팩터를 수행하는 것이 더 쉽다는 아이디어는 많은 경우에 사실이지만, 실제 백분율은 (팀) 자신의 경험과 현재 상황의 렌즈를 통해 고려해야 할 더 많은 예입니다.


예제 문장을 철저히 분석하려면 +1하십시오. 그래도 모든 과학적 연구에는 상업적인 각도가 이용되어야한다고 생각하십니까? (내 순진함을 용서하지만 나는 이것에 대해 정말로 궁금하다)
게리 로우

@ 게리 : 모든 것이 완벽하지는 않지만 외부에서 연구의 편견을 결정하는 것은 불가능하지는 않지만 매우 어렵습니다. 전체 상황을 다루는 합의 된 측정치가 없을 때 두 배로
Bill

8
누군가 소프트웨어 개발 관행과 관련하여 확인되지 않은 진술을 제공하는 경우 "인용 필요"로 응답합니까?

아니요, 여기에 게시하여 공감대가 있는지 확인합니다. 사회적 증거는 증거가없는 것보다 낫습니다!


2
이 모델은 어딘가에 있을지 모르지만 프로그래머 인 SE를 출처로 인용 한 논문에 대해 생각하지 않습니다.
Inaimathi

@ Inaimathi : 적어도 wikipedia만큼 신뢰할 만합니다.
Steven A. Lowe

증거를 찾기위한 +1-항상 좋은 조언. 당신이 그것을 믿기 전에 얼마나 많은 공감대? ;-)
게리 로우

1
@ 게리 : 그래서 열에. 이 사이트에서 스물. 메타, 백에-유니콘과 와플을 포함하지 않는 한, 사실 이어야 합니다
Steven A. Lowe

유니콘 참조를 사랑하십시오 – 그들 중 하나를 얻어야합니다
Gary Rowe

4

많은 개발자들이 코드를 다루는 트렌치에서의 경험과 해당 코드를 제공하는 고객에 대한 순간 결정을 내립니다.

클래스 또는 메소드가 버그 수정 및 고객 변경 요청으로 인해 조각화되어 유지 보수 할 수 없게 된 경우, 개발자는 때때로 장기적으로 시간과 노력을 절약 할 것이라는 이론에 따라 리팩토링이 아니라 다시 작성하기로 결정합니다. 결과 코드의 품질이 향상되기 때문입니다.

이런 종류의 경험 정보는 HR 부서가 "인적 자본"이라고 부르는 것입니다. 그것은 숙련 된 개발자를 가치있게 만드는 것 중 하나이며, 훌륭한 회사가 사람들의 수명을 유지하기 위해 노력하는 이유 중 하나입니다.

숙련 된 개발자에게 자신의 기술이 타당하다는 증거로 연구 및 경험적 데이터를 제시하도록 요구하는 것은 공정하거나 실용적으로 보이지 않습니다. 경험은 그런 식으로 작동하지 않습니다. 반대로, 경험은 "충분한 느낌"입니다. 리팩토링 세계에서는 종종 "냄새"라고 부릅니다.

궁극적으로, "코드의 25 % 이상이 리팩토링이 필요한 경우, 더 빨리 다시 작성해야한다"와 같은 문장이 모든 상황에서 작동하는 것으로 입증 될 수 없으므로 [citation-needed] 문장은 실제로 도그마 프로그래머에게 정보를 제공하는 방법입니다. 항상 "그의 길 또는 고속도로"가 아닌 다른 사람들에 대한 그의 견해를 강요하려고합니다.


Ahh, 좋은 오래된 인적 자본과 인적 자원, 어디서나 노동자의 지속적인 비인간 화를 촉진하는 멋진 쌍둥이 문구 ...
Aaronaught

@Aaronaught : 개념의 실행은 때때로 개념을 설명하는 데 사용되는 고상한 어휘에 미치지 못할 수 있습니다. 이것이 회의론자들이 때때로 증거를 요구하는 이유입니다.
Robert Harvey

그러한 특정 개념의 실행이 부족한 것이 좋지 않을까요?
Aaronaught

독단적 프로그래머에 대한 "인용 필요"방어를 잘 사용하려면 +1 – 매우 유용
Gary Rowe

4

나는 당신이 그것을 시도 할 때까지 당신이 결코 알지 못하는 것으로 생각합니다. 진술을 뒷받침하는 증거가 있어도 요점을 위해 사실을 구부릴 수 있습니다. 그것은 당신이 웹에 부딪 치는 모든 새로운 것을 시도해서는 안된다는 말입니다. 최선의 판단을하십시오. 무언가가 너무 좋기 때문에 사실 일 수도 있음을 기억하십시오. 왜 무언가를 입양해야하는지 항상 자문 해보십시오. 무엇을 얻어야합니까? 사업 전망에서 의미가 있습니까? 믿음에 대한 것을 제외하고는 결코 눈을 멀게하지 않았습니다.


"왜 무언가를 채택해야 하는가"를 묻는 +1. 때로는 앞 가장자리에서 뒤로 물러서는 것이 좋습니다.
게리 로우

개발자들이 분석하고 혜택을 줄 수있는 방법을 이해하지 못한 채 개발자들이 차선책에 빠지는 경우가 너무 많습니다. 조직이 Asp.Net Webforms 대신 Asp.Net MVC와 같은 것을 채택하지만 TDD를 채택하지 않는 상황을 보았습니다.
Carlosfocker

3

이 강의의 예는 경험적이며 경험적 규칙이며 그 이상은 아닙니다. 암묵적으로 명백해야합니다.

휴리스틱은 다른 것과 비슷합니다. 특정 상황에 따라 여러 가지 언급되지 않은 가정에 의존하며 그 유용성은 매우 비 결정적 일 수 있습니다. 처음부터 공식화 할 때 유용하다고 판단되는 임의의 판단이 이루어집니다.

그것은 그들이 가치가 없다는 것을 의미합니까? 나는 전혀 그렇게 말하지 않을 것입니다.

휴리스틱은 NP-complete 문제를 해결하기 위해 취할 수있는 접근 방법 중 하나이며 소프트웨어 엔지니어링 자체는 NP-complete 문제입니다.


좋은 지적입니다. =)
Pablo

1

때에 따라 다르지. :) 누군가의 진술이 반복되고 반영되고 개인적으로 검증 된 경험과 모순되는 경우, 그렇습니다. 나는 일종의 연구에 대한 참조를 원합니다. 반면에 누군가가 당신이보고 여러 번 살았던 생각을 반향한다면, 반응이 그리 많지는 않습니다 (그렇지만 그 생각이 완전하지 않다는 것을 의미하지는 않습니다).

예를 들어, "Code Complete"라는 책은 각 장에서 수 많은 연구를 인용하여 때로는 작은 것 (들여 쓰기 및 간격 또는 변수 이름 길이)에 대해 지적합니다. 나는이 책을 소개 한 (더 어린) 개발자들에게 그 수준의 세부 사항과 증거가 어리 석다는 생각을 떠 올렸다. 그러나 몇 달 후 더 많은 생산 코딩 경험과 몇 가지 코드 검토를 거친 후 동일한 개발자 중 일부는 그렇습니다. 좋은 의견이 중요합니다. 캡슐화 문제. 등

다른 한편으로, 벤더가 새로운 IDE가 50 % 더 생산적이라고 주장 할 때, 나의 첫 반응은 $$ ^ &!입니다!


1
그것은 달려 있지만 코드 완성 예제조차 상황에 따라 다릅니다. 예를 들어 구문 분석 포맷터가 있고 diff 도구가 공백을 무시하면 들여 쓰기 인수가 상당히 사소 해집니다.
Bill

1
Code Complete 예제의 경우 +1 (동일한 작성자 Steve McConnell의 Rapid Development의 경우도 해당).
게리 로우

@Bill 기술이 개선됨에 따라 이전에 증명이 필요했던 문제가 사라진다는 것이 흥미 롭습니다. 이것이 증거를 요구할 필요성을 줄이는 효과인지 궁금합니다.
게리 로우

1
@ gary 나는 이것이 (일반적인 의미에서) 변형만큼 개선의 경우라고 생각하지 않습니다. 코드 완성 예제는 특정 시점에서 특정 툴셋을 참조하고 있기 때문에 둘 다이지만 "리팩터링시기"유형은 기술보다는 상황과 더 관련이 있습니다. 차량의 안전 핵심 소프트웨어와 데이터 처리 솔루션을 생각해보십시오. 안전 시스템에서 테스트 요구 사항이 훨씬 높아질 것이므로 순 이득이 발생하기 전에 리 팩터 포인트가 항상 훨씬 높아집니다.
Bill

1

그것은 많은 무형 변수 (과학적으로 측정 할 방법이없는 변수)에 의존하는 것이 아닌가?

제 생각에는 감정을 측정하는 경험적 방법에 대해 이야기하고 있습니다. 스팍조차도 달성 할 수없는 것. =)


1
흥미롭게도 +1 누군가가 당신에게 Rails가 SpringMVC보다 더 나은 프레임 워크라고 말하면 (의도적으로) 모순적인 예를 제쳐두고 어떻게 그것이 타당성을 결정 하는가?
게리 로우

벤자민 그레이엄 (Benjamin Graham)이 투자 ( "보안 분석")에 관한 그의 고전 서에서 언급 한 것처럼, (투자) 도구는 질적 (무형, 감정), 양적 (실제, 수학)의 두 가지 다른 외로운 측면에서 측정되어야했습니다. , 계산, 논리).
Pablo

정량은 과학적 방법을 통해 측정하는 것입니다. 질적은 자신의 본능을 통해 측정하는 것입니다. 분석에 대한 감정이 없으면 감정 대 감정을 판단 할 수 없습니다.
Pablo

최소한 의견과 차이점에 대해 이야기 할 때, 초록을 측정하는 합리적이고 과학적이며 확실한 방법에 동의 할 수는 없습니다.
Pablo

내 대답은 추상적 사고 / 의견이 아닌 기술적 측면 만 측정 할 수 있다는 것입니다. 또한, 나는 엉덩이처럼 들리는 것을 의미하지 않습니다. 그 게시물은 어리석은 반응으로 의도되지 않았습니다.
Pablo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.