パスワードを忘れた? アカウント作成
1399228 story
プログラミング

プログラマーにドキュメントを書かせるには? 101

ストーリー by reo
結論は至ってシンプルだった… 部門より

cheez 曰く、

本家 /. 記事「How To Get Developers To Document Code」より。

コードのドキュメントがきちんと作成されていない? 問題はプログラマー達にあるのではなく、プロセスにあると Fatal Exception の Neil McAllister 氏は言う (ネタ元) 。

「コードのドキュメントをきちんとまとめる開発者は非常に少ない。ドキュメントを書かせること自体が難題と言ってもいいだろうが、しかし不可能ではない」とのことで、同氏はドキュメントを作成する習慣を確立するためにも「ムチよりもまず飴」方式を採用すべきとだと提案する。多くの人と同じく、プログラマーだって命令よりもインセンティブの方が動機づけとなる。簡単な賞賛も大いに功を奏するが、他の手段を模索するのも良いだろう。彼らが週末にサポート業務で待機担当だったり、またアップデート作業で深夜に作業している時はないだろうか? 追加のドキュメント業務に精を出した彼らにはそういった他業務の負担を軽くしたりするのも一案だ。また、金銭的なインセンティブも有効なのはもちろんである。

/.Jer の経験から見て、プログラマーのドキュメント作成の壁となっているもの、そしてそれを取り除くコツはなんだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • (一切、邪魔されない) ドキュメント書く工数を入れてくれ。
    そもそも開発の途中でドキュメントと合わなくなってしまう現象があるなら
    当然工数の最後に「ドキュメント書き直し期間」が含まれてなきゃダメなんじゃないか?

    結局、開発工数の中に溶けこまそうと無理させているんじゃないか。
    開発止めて、ドキュメント作りなおしてから開発再開ってところもあったけど、1度しか経験がない。
    大体「議事録にあったはず・・・」とか「イツイツそういう話が出てきた・・・」とかそんな話になってる。

    ついでに。
    関係者と話していて、「あ。この話ブレそうだな」とか「相手が協力的な態度じゃないな」と思うと
    ドキュメント書くの一気に萎えません? 私は萎えます。

    --
    ==========================================
    投稿処理前プレビュー確認後書込処理検証処理前反映可否確認処理後……
    • by Anonymous Coward on 2012年01月17日 17時37分 (#2082129)

      最初にちゃんと仕様書を作り、手順まで含めてレビューしておかないから、時間が無くなるんだ。
      そもそも、なんでドキュメントが無いのにモノ作りが始まるのだ?
      先ずはそこから疑問として提示した方が良い。

      >ついでに。
      >関係者と話していて、「あ。この話ブレそうだな」とか「相手が協力的な態度じゃないな」と思うと
      >ドキュメント書くの一気に萎えません? 私は萎えます。
      私はそういう時こそちゃんと事前にドキュメントの工数を入れ、検印を貰ってからでないと作成
      開始しませんが。
      そういう客はちゃんと言質を取って置かないと危ないったら無いですから。
      #下手すると「頼んでないからお金は出さない」とか言い出すかもよ?

      親コメント
  • by Anonymous Coward on 2012年01月17日 11時44分 (#2081862)

    >彼らが週末にサポート業務で待機担当だったり、またアップデート作業で
    >深夜に作業している時はないだろうか?
    >追加のドキュメント業務に精を出した彼らにはそういった他業務の負担を
    >軽くしたりするのも一案だ。

    経験上、ドキュメントを作成して顧客や別担当者に渡しても読まれない。
    全てはそこに書いてあるとしても、ドキュメントを読み漁るよりも
    携帯電話一本で済まそうとする人間が多すぎるのが根本的な問題なのだ。

    プログラマやSEに求められるのは、文筆家のような洗練された文章力と
    読みやすく校正する編集力、そして興味を引き付けるデザイン力だろうが、
    それができるならばプログラマなんかしないで本でも書いて印税暮らし
    してるか、出版社でも経営してるはずだ。

    • by SteppingWind (2654) on 2012年01月17日 12時36分 (#2081919)

      ドキュメントをちゃんと読む人間は一人は確実にいる. それはドキュメントを書いている私だ.

      3日前にコードを書き上げて, そのまま逃亡を企てている「私」というプログラマの首根っこを押さえつけて無理やりにでもドキュメントを書かせる.

      何故そのような実装になっているのか?

      未記載の制限事項は無いか?

      ドキュメントとコードを付き合わせてみれば, コードを書くときに考慮不足だったところも見えてくる. だからドキュメント書きはやめられない.

      結果, ドキュメントがコードと同量から数倍にふくれることもしばしばで, 上司から怒られることも.

      親コメント
  • 度重なる仕様変更?
    別にかまわんよ。時間くれるなら。
    機能追加?
    別にかまわんよ。時間くれるなら。

    こういうのと似たようなもんですかね。

    # 仕様書は書いてるうちにおかしなところを見つけられることも多いし、
    # 書いてると考えがまとまってくることも多いので書くようにしてます。

  • by Anonymous Coward on 2012年01月17日 11時36分 (#2081855)

    なんでもかんでもExcelはやめてくれ。
    進捗報告は進捗管理システムに記入させてくれ。
    バグ報告はバグトラッカーに記入させてくれ。
    専用のシステムを使わないことの負担は記入者と管理者(この二つは同一人物のこともある)にのしかかるんだ。

    • by fl (43569) on 2012年01月17日 15時50分 (#2082074) 日記

      専用のBTSって本当に使いやすい?
      エンドユーザからもマネージャからも管理者からも評判がいいやつには出会ったことがない。

      今Excelを使っているなら、もっと使いこなす方向で検討してみたら。
      表計算や方眼紙だけにしか使わないのはもったいない。

      最初は共有ブックで始めて、ある程度の規模になったらDBを立てて裏で繋ぐようにマクロを組む。これだけ。
      Excelのフロントエンド化までできれば、他のフロントエンドの種類も好きに増やしていけるよ。

      親コメント
    • by Anonymous Coward
      まさにその通り。 Excelをドキュメントを書くのに使うのは、ハンマーの代わりにドライバーで釘を叩くような使い方だから。
      • by USH (8040) on 2012年01月17日 13時43分 (#2081981) 日記

        そうそう。しかもそのドライバー使い、穴をあけるのも直線引くのもドライバーで済ませようとしがち。緊急避難・応急措置ならいいんですが、なぜか公式の手順にしてしまおうとする。

        親コメント
  • by Anonymous Coward on 2012年01月17日 11時44分 (#2081863)

    ドキュメントの質の基準を明確にする
    基準に基づいて評価する
    評価にインセンティブを与える

    • by Anonymous Coward on 2012年01月17日 13時52分 (#2081993)

      読み手のレベルが確定しないと書けないってのはありますね。
      こっちにとって当たり前のキーワードが不明だと質問されても
      それぐらい常識だろ、としか返せない。

      あとこっちもシステム全体の仕様のサブセットをコーディングしているだけなのに、
      そもそものシステムの思想なぞ求められても困ります。

      私は、未来の自分宛の読み物として書くことが多いですね。
      全体の把握のための概論と、あとはおおむね苦労話を「読み物」として。
      細かい動作はコードを見ろという方針、現在の自分がひっかっかった所は
      未来の自分もまたひっかかるだろうと予想して。

      後はもうFAQにしちゃう。誰か読んでくれて、質問来たらまずはそれに答え、
      それをそのままFAQに追加。

      話は変わりますが、ソースコードを開いた先頭に、「このソースは何をする
      (つもりの)ものである」と一行でいいから書いてくれんかなぁ。追いかける時の
      安心度が違うのよ。
      ファイル名から類推できないからソースを開いて、ライセンスばーっとあって、
      部品レベルの関数が続くと読み始めの場所を探すだけで疲れる。

      親コメント
      • 話は変わりますが、ソースコードを開いた先頭に、「このソースは何をする
        (つもりの)ものである」と一行でいいから書いてくれんかなぁ。追いかける時の
        安心度が違うのよ。

        ライセンス込みでコピペして修正し忘れそうだけど。

        コードしかメンテせずに、知っててコメントを古いまま放置するやつもいる。

        「何をする」つもりで作り始めたけど、作っているうちにもっといい方法を思いついたので方針を転換した
          → 初期のコメントは放置
        なんてのもある。

        全部おれのコードだ。

        親コメント
  • by Anonymous Coward on 2012年01月17日 12時41分 (#2081924)

    プログラム=仕様よりは現実味があると思う。
    もちろん人間がプログラムを書くためには自然言語で書かれた仕様書が必要だけど、テストケースにより要求される(またはされない)動作をNormativeにするってことね。
    ・コードを修正したらテストを通さなければならないことにしておけば、プログラムと仕様の乖離が生じない。
    ・自然言語の仕様書ではどうしても微妙なケースでの解釈のブレが生じる。それを避けようとするとどんどん仕様書がプログラムそのものみたいになってくる(HTML5の仕様とか読んでみるとわかる)。
    最近のW3Cの仕様は、適合ユーザーエージェントが2つ以上存在しないと勧告にまで持っていけないけど、適合性の判断は用意されたテストケースを通せるかどうかで行うことになってるし。ECMA-262 (JavaScript) もテストケースが用意されるようになったね。

  • by Anonymous Coward on 2012年01月17日 12時41分 (#2081925)

    書くための時間が無いから書かない。それだけの話でしょ。
    PGにドキュメントを書かせたければ、書くだけの時間をきちんと確保する事ですよ。

    • by Anonymous Coward on 2012年01月17日 12時56分 (#2081946)

      書くための時間が無いから書かない。それだけの話でしょ。
      PGにドキュメントを書かせたければ、書くだけの時間をきちんと確保する事ですよ。

      いや、時間はあっても書きたくない。
      だって、動くソースコードがあるんですよ。
      それの解説なんて、書くの面倒じゃないですか。

      俺以外が書けばいい。
      書く奴が俺に質問してくるくらいなら認める。
      それなら読みやすいコードになるだろうし。

      親コメント
  • by Anonymous Coward on 2012年01月17日 13時31分 (#2081973)

    コードのドキュメントもアレだけど、インフラ系のドキュメントはもっと悲惨な状況。

    「え?ドキュメント?そんなのなくてもおまえ把握してるんでしょ?」ってな状況で、
    毎回激しいバトルを……。毎回同じ説明を繰り返す日々。

    書いたところであなたが読まないのは知ってるけど、いつまでもここにいるわけじゃないし、
    誰かに引き継ぐ段になってから書き始めてたらまにあわんのよ。
    細かいところで忘れることもあるし。

  • コードのドキュメントを書くより、いいコードを書くことに力を入れるべきだと思う。 逆に管理者がドキュメントを書くように言わないようにする方法の方が知りたい。
  • by Seth (1176) on 2012年01月17日 14時29分 (#2082025) 日記

     「攻略本を読んでも解けない(走召糸色木亥火暴)」
    ってことですね(南無)

    --
    "castigat ridendo mores" "Saxum volutum non obducitur musco"
  • by yatakaras (37253) on 2012年01月17日 18時20分 (#2082140)
    プログラマーとしてSQLの補足にドキュメントを書きたいが、
    いつも悩む。
    ・フローチャートじゃ表現できない
    ・DTDじゃアバウトすぎる(条件や、ソートまで書けない)

    いまのところ、時間がある前提でドキュメントを書こうとすると
    以下のようにしている。
    ・DTDでアバウトなIN/OUTのテーブルを記載
    ・ER図でテーブル結合の関係を記載
    ・表で取得データ書式(名前、型、サイズ、意味)
    ・条件を日本語で記載
    ・一応SQLのコメントも充実に

    1枚で表現できる表現方法はないものか・・。
    • by Anonymous Coward on 2012年01月17日 20時33分 (#2082224)

      >1枚で表現できる表現方法はないものか・・。

      それが結局 SQL そのものだったりする。

      #設計書に SQL がどーんと書いてあんの。

      親コメント
  • プログラマなんてコミュニケーションや言語能力に問題のある奴ばかりなんだから、
    プログラマにドキュメントなんか書かせないでほしい。
    意味不明なドキュメントを渡されても困るんだよ。

    そういう仕事はテクニカルライターにやらせてくれ。

  • 途中で仕様の変更とか一切無しな。
    変更するならそこで開発一旦終了して別プロジェクトにしてくれ。
    それだけでいい。
  • by Anonymous Coward on 2012年01月17日 11時41分 (#2081858)

    「ドキュメント・フローチャートから」コードを書くのではなくて、
    せめてフローチャートくらいは「コードから」機械作成できるようになっていても
    この時代にはおかしくないとおもうけど、アプリ等(GNUとかに)あるのかしら。
    バグ取にも便利そうなのだけど

    • Doxygenでいいじゃないか、

      でも、ドキュメントは本来、製造より前に作られるべきものだと思うぞ。自動生成されてメンテナンスされないドキュメンテーションなんてソースコードを劣化させたようなもんだ。

      親コメント
      • by Anonymous Coward

        ドキュメントに従って作っても大抵は期待通り動かない罠。

        ドキュメント→理想の形。
        <<<超えられない壁>>>
        プログラム→現実。

    • UMLで自動生成とかJavadocとかありますけど、結局開発当初は使えても、その後仕様変更等で手をくわえた後は、ドキュメントも手直ししなきゃならないことが多いんですよね。結局。
      自動生成したドキュメントは図が崩れてたり手直ししなきゃならないですから。
      事細かく図を書いたら自動でコードを生成だと図(抽象的なもの)がみずらくなります。

      コード=仕様書という試みもいくつかありますがフローのようなものは無理だし。

      まぁ結局、コードと仕様書、更に単体試験仕様書と3つも同じことを違う観点で書かなきゃならないのが心理的にはめんどいのと、昔はたっぷり時間と金をかけさせてもらえたけど、最近は短納期・低報酬ですからね。最低限動くのに必要なもの(コード)以外は疎かになりがちです。例え後から苦労することになっても。目先しか見えてないんです。

      親コメント
    • その手のツールは腐るほどありますが、当然ながら役に立つレベルのドキュメントは生成されない。
      あれはコードはあるけどドキュメントがない状態で、ドキュメントをでっち上げるために使うものです。
      納品物件やルールによってフローチャートが必須となってるけど時間はないですよとかいう場合ですか。

      親コメント
    • by Anonymous Coward

      OSSでは知らないが、プロプライエタリでは存在する。2種類使ったことがあるが、当然チャートの各箱の中身はコードそのものもしくはコードに付けたコメント行の中身になるから、綺麗にコードが書かれていないとバグ取りには逆にやっかいだよ。上流工程が楽になるって事の方が多い。

  • by Anonymous Coward on 2012年01月17日 11時50分 (#2081869)

    きちんとドキュメントをまとめることができるプログラマのコードには、
    そもそもドキュメントは必要ない、ような気がする。

    #経験則では、ないです。

    • これは間違い。

      ドキュメントとコードが2つの異なる事を言っている場合は、最低限でもどちらかが間違っている(下手をすると両方間違っている)。

      ドキュメントとコードが同じ事を言っている場合、両方をチェックする事でバグの存在を発見できる確率は飛躍的に高まる(人間は、同じ数学問題でも提示のされ方によって解きやすい場合と解きにくい場合がある)。

      このように、ドキュメントは「内容確認」のために使うものなので、省いてよいものではないし、機械生成するべきものでもない。
      # 機械生成した場合は、プログラマ自身がそれを声に出して朗読するべきである。
      # 大抵、バグが見つかる。

      --
      fjの教祖様
      親コメント
    • きれいなコードなら内部設計書はいらないかもしれないけど、操作説明書の類はいるでしょ?

      親コメント
    • by Anonymous Coward on 2012年01月17日 12時52分 (#2081939)
      経験則から言うと
      ・外部仕様やデザインポリシーはメモ程度で良いのでドキュメント化しとくべき、後になると自分でも何でこんなことをやったのか目的が理解できなくなることがある。
      ・プログラムの内部仕様をドキュメント化するのは時間の無駄、そんなものを書く時間があるのならば綺麗な読みやすいコードを書くのに時間をかけた方が何倍もまし。
      ・読みやすいコードが書けないやつに、ドキュメントを書くなんてそもそも無理。
      親コメント
  • by Anonymous Coward on 2012年01月17日 11時53分 (#2081874)

    プログラムはドキュメントに書くべき内容を機械に理解できるように書いている(書こうとしている)に過ぎない

    • 自分は、まずプログラムのコメント欄で機能説明や使い方を書いてから、それをコードに直す方法で作るから、二度同じ事を書いてるけど説明しやすいプログラムになるというメリットがある。
      先にプログラム作ってからだと、説明しにくいモノになる可能性がある。
      「二度同じ事」という点は同じでも順序によって大違い。

      --
      the.ACount
      親コメント
    • by Anonymous Coward

      文芸的プログラミングをご所望?

typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...