태그 보관물: documentation

documentation

업계의 문서화에 대한 혐오감은 무엇입니까? 만드는 업계에서 알지 못하는

가장 기본적인 문서조차 작성하는 데 혐오감이 있습니다. 우리의 프로젝트 README는 상대적으로 적습니다. 문서에 업데이트 된 종속성 목록도 없습니다.

프로그래머가 문서 작성을 싫어하게 만드는 업계에서 알지 못하는 것이 있습니까? 필요한 경우 문서의 단락을 입력 할 수 있는데 다른 사람들이 왜 그렇게 반대합니까?

더 중요한 것은, 문서 작성이 미래에 시간과 좌절을 덜어 줄 것이라고 어떻게 확신 시키는가?



답변

좋은 습관이라고 생각하는 것을 채택하지 않거나 나쁜 습관으로 보이는 것을 계속하고있는 사람들의 동기를 추측하는 것이 도움이되지 않는다고 생각합니다. 이 비즈니스에서 해당 범주 중 하나 또는 둘 모두에 해당 하는 사람들은 눈에 보이는 사람들보다 훨씬 많으므로 자신을 미치게하지 마십시오.

대신 문제와 가능한 해결 방법에 중점을 둡니다.

1. 좋은 문서를 직접 작성하십시오

팀의 모든 사람이 자신이 문제라고 생각하는 것에 노력을 기울일 것이라고 기대하는 것은 현실적이지 않을 수 있습니다. 팀에 비교적 새로운 사람이라면 더욱 그렇습니다. 팀의 창립 멤버 인 경우 이미이 문제를 이미 해결했을 것으로 보입니다.

대신 좋은 문서를 직접 작성하여 사람들이 사용하도록하는 목표를 향해 노력하십시오. 예를 들어, 팀의 누군가가 프로젝트 A의 소스 코드가 어디에 있는지 또는 프로젝트 A가 필요한 특별한 구성을 묻는다면 프로젝트 A 위키 페이지를 가리 킵니다.

누군가 C 클라이언트를 위해 커스터마이징하기 위해 Factory F의 새로운 구현을 작성하는 방법을 묻는다면 개발자 안내서의 10 페이지에 나와 있습니다.

대부분의 개발자는 문서를 읽는 것보다 훨씬 더 “코드를 읽을”수없는 것처럼 보이게 만드는 질문을 싫어하므로 이러한 특성에 대한 충분한 대답을 마치면 먼저 문서로 이동합니다.

2. 문서의 가치 입증

문서가 그 가치를 입증하는 곳 (또는 사용 된 경우)을 가리킬 수있는 기회를 갖도록하십시오. 미묘하게 행동하고 “내가 말했듯이”피하는 것은 좋지만

나중에 참조 할 수 있도록이 프로젝트의 위키 페이지에는 릴리스 2.1을 지속적으로 지원하기 위해 작성된 핵심 코드의 분기에 대한 정보가 있으므로 향후 릴리스 버전을 유지 관리하는 사람이 확인하는 경우 전체 회귀 테스트를 수행하지 않아도됩니다. 코드를 확인하기 전에 위키.

또는

작업 T를 수행하기위한 단계를 적어 두었습니다. 다른 사람이 사용하지 않더라도 실제로 신경 쓰지 않습니다. 이미 쓴 시간보다 더 많은 시간을 절약했습니다.

3. 선상 관리

문서화가 시간 / 돈을 절약 할 수있는 몇 가지 사건이 발생하면 문서화에 대한 뚜렷한 “해동”을 보게 될 것입니다. 이것은 예상 시간에 문서화 시간을 포함하여 요점을 누를 때입니다 (솔직히 말하면 컴파일 또는 체크인과 같은 긴 프로세스가 실행되는 동안 일반적으로 문서를 업데이트 / 생성합니다). 특히 이것이 최근 고용인이라면, 이것이 의문의 여지가 없지만 이전 직장에서 가져 오는 새로운 관행으로 간주 될 수 있습니다 (아마도 가능할 것입니다).

주의 말씀 : 대부분의 상사는 싫어 하기 때문에 이러한 지원은 위임의 형태로 될 것으로 기대하지 않습니다, 특히, 사람들은 아무것도 할 직접 청구 작업에 묶여 있지 것을. 대신, 더 많은 문서를 작성할 수있는 상대적으로 자유로운 고삐를 줄 가능성이 높습니다.

4. 문서를 볼 때 격려하십시오

사람들이 문서를 자주 쓰지 않는 이유 중 일부는 아무도 그것을 읽고 있지 않다고 생각하기 때문입니다. 그러므로, 당신이 좋아하는 것을 볼 때, 적어도 당신이 그것을 이용할 수 있다는 것이 기쁘다는 것을 언급하십시오.

팀에서 코드 검토를 수행하는 경우 좋은 의견을 장려하기 위해 미묘한 단어를 넣을 수 있습니다.

프레임 워크 G에 버그 B에 대한 해결 방법을 문서화 해 주셔서 감사합니다. 나는 그것에 대해 몰랐습니다.

팀에 실제로 문서화에 대해 열정적 인 사람이 있다면 , 점심이나 커피를 마시면서 그 사람을 키우고 팀의 나머지 부분을 볼 때 얻을 수있는 실망을 막기 위해 약간의 검증을 제공하는 것이 상처를 입지 않습니다. 문서를 중요하게 생각하지 않습니다.

그 외에도, 당신이 리드 또는 관리 직책에 있지 않으면 실제로 문제가 아닙니다. 말을 물로 인도 할 수는 있지만 마실 수는 없습니다. 그것이 당신의 말이 아니라면, 목이 말라서 기뻐할 수도 있지만, 여물통을 채우는 것만으로도 가능합니다.


답변

내 경험에는 두 가지 주요 요소가 있습니다.

마감

대부분의 회사는 너무 오래되어 QA, 기술 부채 및 실제 디자인이 줄어 프로젝트 관리자가 나쁘지 않거나 지나치게 약속 된 고객 마감일을 맞출 수 있습니다. 기능적 품질까지 저하되는 환경에서는 문서와 같은 장기적인 투자가 거의 없습니다.

변화

개발자를위한 비교적 새로운 모범 사례는 주석을 강조하지 않는 것입니다. 아이디어는 두 곳 (코드 [테스트 포함]과 코드 주위의 주석)에 정보를 유지하면 거의 이익을 얻기 위해 정보를 동기화하는 데 많은 오버 헤드가 발생한다는 것입니다. “코드를 읽기가 어려워 주석이 필요한 경우 코드를 정리하는 데 시간이 더 걸리지 않습니까?”

나는 개인적으로 더 이상 의견을 보지 않을 것입니다. 코드는 거짓말을 할 수 없습니다.

문서는 동일한 맥락을 따릅니다. 민첩성이 널리 보급됨에 따라 사람들은 요구 사항이 정기적으로 변한다는 것을 인정합니다. 리팩토링이 널리 사용됨에 따라 코드 구성이 상당히 바뀌게됩니다. 변화해야 할 모든 것들을 문서화하는 데 왜 시간을 소비합니까? 코드와 테스트는 그 일을 충분히 수행해야합니다.


답변

여기에는 여러 가지 요인이 있습니다.

  1. 잘 작성된 코드는 자체 문서입니다. 다른 모든 것들이 동일하다면 더 많은 문서가 아닌 자체적으로 명확한 코드를 작성하는 것이 좋습니다. 그렇게하면 해당 코드를 변경할 때 적은 문서를 수정해야합니다.

  2. 문서 작성은 코드 작성과 다른 기술 일 것입니다. 일부 소프트웨어 개발자는 다른 소프트웨어보다 우수합니다. 일부는 문서를 작성하는 것보다 코드를 작성하는 것이 훨씬 좋습니다.

  3. 문서는 두 이 아니라 한 번만 작성해야합니다 (소스 코드에서 한 번, 프로그래머 안내서에서 다시 한 번). 그렇기 때문에 XML 주석 및 문서 생성기와 같은 것이 있습니다. 불행히도 이러한 도구를 사용하는 것은 문서를 직접 작성하는 것보다 더 까다 롭고 번거로울 수 있으므로 이러한 도구가 널리 사용되지 않는 이유가 있습니다.

  4. 좋은 문서는 시간이 많이 걸리고 잘하기 어렵다. 다른 모든 것들이 동일하다면 이미 존재하는 코드에 대한 문서를 작성하는 것보다 새로운 코드를 작성하는 것이 더 가치가있을 수 있습니다.

  5. 코드가 변경되면 설명서도 변경해야합니다. 문서가 적을수록 변경해야 할 문서가 적습니다.

  6. 어쨌든 아무도 문서를 읽지 않아 왜 귀찮게합니까?


답변

방에있는 코끼리 : 프로그래머는 (필요하게) 작가가 아니다. 또한 그들이 기술 구현 자들에게 그들의 구현을 구체화 할 필요도 없다. 방 안에있는 두 번째 코끼리 : 테크니컬 라이터는 일반적으로 미래 개발자에게 유용한 세부 정보를 제공 할 수 없습니다 (개발자가 설명 할 경우에도).

적절한 문서가 없으면 복잡한 시스템이 시간이 지남에 따라 거의 뒤죽박죽이 될 수 있습니다. 코드는 그 정확성에 반비례 적으로 가치가 떨어진다 [sic]. 해결 된 경영진은 개발자로부터 코드 및 동축 정보를 읽을 수있는 소프트웨어 엔지니어를 고용하여 개발자 요금으로 지불하고 문서화 및 문서화를 요구합니다. 이 작가는 코드를 읽을 수 있으며 어떤 질문을해야하는지 알고 필요할 때 세부 사항을 채울 것입니다. QA 부서와 마찬가지로 내부 문서 부서도 있습니다.

코드를 이해하기 쉽기 때문에 제 3 자에게 라이센스를 부여 할 수 있고 코드를보다 쉽게 ​​감사 및 개선 / 리팩토링 할 수 있으므로 코드를 더욱 유용하게 사용할 수 있습니다. 더 가벼운 버전의 소프트웨어를 제외하면 프로젝트에 새로운 개발자를 더 쉽게 소개 할 수 있으며 지원 엔지니어가 귀하를 위해 일하는 것을 좋아할 것입니다.

이것은 결코 일어나지 않을 것입니다.


답변

더 중요한 것은, 문서 작성이 미래에 시간과 좌절을 덜어 줄 것이라고 어떻게 확신 시키는가?

그렇게합니까?

두 가지 유형의 문서가 있습니다.

유용한 문서

완성 된 제품, API, 서버의 IP 주소 또는 URL 이름 등을 사용하는 방법을 설명합니다. 기본적으로 매일 많이 사용되는 모든 항목을 설명합니다. 잘못된 정보는 빠르게 발견되어 수정 될 것입니다. 쉽고 쉽게 편집 할 수 있어야합니다 (예 : 온라인 위키).

쓸모없는 문서

자주 변경되는 문서로, 그 문서에 관심이있는 사람은 거의 없으며 어디에서 찾을 수 있는지 아무도 모릅니다. 구현중인 기능의 현재 상태와 같습니다. 또는 3 년 전에 업데이트 된 SVN 어딘가에 숨겨진 문서 doc의 요구 사항 문서. 이 문서를 작성하는 데 시간이 걸리고 나중에 잘못되었다는 것을 알기 위해 시간이 걸립니다. 이 유형의 문서에 의존 할 수 없습니다. 쓸모가 없습니다. 시간을 낭비합니다.

프로그래머는 쓸모없는 문서를 쓰거나 읽는 것을 좋아하지 않습니다. 그러나 당신이 그들에게 유용한 문서를 보여줄 수 있다면, 그들은 그것을 쓸 것입니다. 우리는 자주 필요한 정보를 모두 쓸 수있는 Wiki를 소개 할 때 마지막 프로젝트에서 성공을 거두었습니다.


답변

주된 이유는 의지가 부족하고 문서 기능에 대한 이해가 부족하기 때문입니다. 고려해야 할 여러 종류의 문서가 있습니다.

제품 / 릴리스 문서

이것은 ‘완성 된’제품과 함께 나오는 모든 것입니다. 이것은 단순한 매뉴얼이 아니라 README, 변경 로그, 하우투 등입니다. 이론적으로는 작성하지 않아도되지만 사람들이 사용하지 않는 제품이나 불필요하게 비싼 지원 부담이 생길 수 있습니다.

API 설명서

이것은 상대적으로 정적 인 것이어야합니다 . 수많은 소비자가 API를 코딩하고있을 수 있으므로 API를 사용하는 방법을 설명하는 산문이 가치가있을 정도로 충분히 안정적이어야합니다. 매개 변수가 지원되는 기술, 반환 값이 될 수 있습니다 무엇 무엇을 다른 사용자에게 추상화의 오른쪽 수준에서 API를 이해하는 능력 수 던져 질 수있는 오류 – 인터페이스 ( 하지 구현).

코드 주석

의견에 대한 업계 의견은 현재 유동적 인 것으로 보입니다. 내가 전문적으로 코딩을 시작했을 때, 주석은 코드 작성과 관련하여 사인 이었다 . 이제 패션은 매우 명확한 코드를 작성하는 것입니다. 주석은 필요하지 않습니다. 많은 현대 언어가 훨씬 더 높은 수준으로 작성되고 어셈블러보다 Java, JavaScript, Ruby 등에서 읽을 수있는 코드를 작성하는 것이 더 쉽기 때문에 이것이 부분적으로 추측 될 수 있습니다. , C, FORTRAN 등. 따라서 주석의 값이 훨씬 큽니다.

나는 여전히 코드 섹션의 의도 또는 특정 알고리즘이 왜 더 명백한 알고리즘을 통해 선택되었는지에 대한 세부 사항 을 설명하는 의견에 가치가 있다고 생각합니다 ( ‘고정’코드에서 지나치게 열성적인 리팩터링을 피하기 위해 ‘ 실제로 수정해야합니다).

불행히도, 프로그래머의 문서화 결정에 관련된 이기심, 합리화 및 자기 망상이 많이 있습니다. 실제로 코드와 마찬가지로 문서의 주요 대상은 다른 사람들입니다. 따라서 어떤 수준에서든 문서 작성 (또는 작성하지 않음)에 대한 결정은 팀 수준에서 내려야합니다. 추상화 수준이 높을수록 개발자 이외의 사람이 수행하는 것이 더 합리적 일 수 있습니다. 의견 수준의 문서에 관해서는 의견의 목적과 의도에 대한 합의에 도달하는 것이 특히 혼합 된 능력 및 경험 팀에서 함께 합의되어야한다. 선임 개발자가 후배 개발자가 접근 할 수없는 코드를 작성하는 것은 좋지 않습니다. 잘 배치되고 잘 작성된 문서는 팀이 훨씬 더 효과적으로 운영 할 수있게합니다.


답변

여기 내 센트가 있습니다.

  1. 애자일 선언문은 “포괄적 인 문서에 대한 소프트웨어 작업”이라고 말하고 모든 사람들이 “오른쪽 항목에는 가치가 있지만 왼쪽에있는 항목은 더 중요하게 생각합니다.”

  2. 슬프게도 https://en.wikipedia.org/wiki/Code_and_fix 에서 일반적 이며 설명서는이 모델에서 작동하지 않습니다 (동기화됩니다).

  3. 소프트웨어 개발 산업은 잘 규제되지 않습니다. 문서를 작성하기위한 법적 요구 사항은 없습니다.

  4. 자체 문서화 코드가 현재 추세입니다.

그렇게 말하면, 거기에 좋은 문서가 많이 있다고 생각합니다.