仕様書とかをgithubで管理してから、半年ちょとでどうなったか

風邪を引いてそろそろ3週間目にはいりそうです。つらい。


さて、以前こういう事を書いていた。
その後予想通りデスマになって、落ち着いてのでこの挑戦がどうなったか振り返ってみようと思う。
2014-03-10 - longicornの日記
2014-03-24 - longicornの日記

当時はどんな状態だったか?

まず、当時は周りを見渡しても仕様書なんかまったく作られないそんな状態だった。
エンジニアすら、そんなの必要ないとかまで言っていた状態。
夢物語を書いた物はあったけど、みんな知識はないしでも忙しすぎて動けない状態だったので、最低でも自分の所属しているプロジェクトだけでも自分で初めて見た結果です。

どうなったか?

ドキュメント

まず、以前書いたとおり仕様書を含むドキュメントは基本githubにあげています。
もちろん仕事なので、有料にしてprivateにしています。
デスマには陥りましたし、その時に書ける範囲でしか書いていませんでしたが、それでも落ち着いてきたら追加、更新もして今では社内で一番ドキュメントが存在するプロジェクトとなりました。
内容は環境構築から、仕様書、リリース方法まで色々。


ドキュメントはMarkDownなので、書く方は楽ですし、githubMarkDownを綺麗に表示してくれるので非常に楽。
この表示機能のおかげで非エンジニもgitアカウントさえ作成させれば見るのには問題ないですし、どうせドキュメントは書かないし、書ける能力も意思もないので下手に編集も出来ないので非常に便利です。
また、YARDのようなドキュメントの自動生成も取り入れています。
今では、他の一部のプロジェクトでもこのやり方を真似してくれる人もいます。
githubを使わなくても、社内で仕様書のフォーマットを共通化しようというプロジェクトも立ち上がって動いています。


ドキュメントを書くことが嫌いな人はエンジニアやそうでないかに関わらずたくさんいますが(自分も嫌いですけどw)、メリットもたくさんあります。
例えば、転職や新入社員への教育、情報共有です。一度書けば同じ情報を共有出来ますし、そこに既存社員の時間を取られません。また、退職やプロジェクトの移動での引き継ぎが非常に楽です。
当たり前なんですけど、これが文字の力で、文字は時間や空間を超えて情報を共有できます。過去の文字が残っているからこそ過去の歴史を知れるわけです。
まあ、ドキュメントを書くのは確かに大変ですし、時間が取られますが、MarkDownならば某Officeとかの面倒な操作に悩まされずにさっと書けますし、時間の経過と比例して管理が楽になります。
"安心感がほしい"と書きましたが、最近は書いておいて本当に良かったという場面は多いですね。

テストコード

安心感といえばテストコードも重要。特に今のプロジェクトはエンジニアは自分一人でほかは営業とか管理の人ばかりのヒエラルキーは逆三角形。
RubyKaigiエンジニアはヒエラルキーの底辺の話を聞いて涙して、マジで死にたい。


だからこそ、時間のある時にはちょこちょこ書いているのですが、まだまだ足りない状況です。
まともな手動テストも出来ない人ばかりなので、テストコードは超重要。それなりにバグは出ますが、本当に大事な機能には最低限テストを書いてバグを見つけて修正を繰り返す。
さらにはJenkinsを使用もしています。
おかげで、なんとか運用ができている状態です。


テストコードもドキュメントと同じく一度書けばあとはそのまま使いまわせて(管理は必要ですが)、時間が経てば立つほど楽になっていきます。
テスト時間が少なくなり、その分足りないテストコードを書いたり、機能を増やしたり出来ます。テストコード万歳!
でも、TDDまではやりません。昔は頑張ったけどあれは精神的にしんどい。プログラミングスタイルというかリズムが変わるしね。
http://d.hatena.ne.jp/longicorn/20120913#p1

結局どうなった?

プロジェクト自体が落ち着いたというのもありますけど、大分楽になっています。一時は数ヶ月は休みがほぼ無い状態が今はほぼ定時から残業あっても1,2時間程度に。
リリースも何回か行いましたが、小さなバグはあるにしろ大きなバグは起きていませんし、おかげで新しい機能の開発にも手を出せています。
人の移動もありましたが、引き継ぎや教育にもさほど苦労はしていません。
さらには、他のプロジェクトにも飛び火したり多少なりとも良い方向に進みだしてます。
多少苦労はしましたがドキュメントやテストコードを書くのは無駄どころか非常に役に立っていると確信してます。
ただ、導入がしんどいのは確か。それなりに知識と経験がないとここが進められないのが悩みどころ。経験のない人ばかりのチームってどうすれば良いんでしょうね?


さて今後は、テストを増やして、細かなバグの修正、リファクタリングなどに手を出せればいいなぁ。
そして時間を作って来年こそはプライベートでの開発や新しい言語とかにチャレンジがしたい。
今年は体調と精神を整えるのでいっぱいです...