楽しい仕様書と生産性に関する考察
結論:楽しい仕様書は将来にわたってチームの生産性を向上させる。
仕様書を書く効果
『Joel on Software』(オーム社 2005)でジョエルはこんなことを書いている。
「仕様書の最も重要な役割はプログラムをデザインすることだ。」
仕様書を書くには設計することを強いられる。 仕様書段階での設計は、実装しながらする設計に比べてはるかに簡単にレビューでき、手直しできるので、生産性の向上につながる。 ジョエルはこうも言っている。
「大きな理由の2番目はコミュニケーションにかかる時間を節約できるということだ。」
仕様書を1度書くだけで、実装時やテスト時に何度も参照され、コミュニケーションコストを大幅に節約するし、認識の齟齬を防げる。 このとき、ちゃんと皆に仕様書を読んでもらうには、楽しく(可笑しく)読める仕様書が大切になってくる。
先ほどの設計の話と合わせて、仕様書を書くということは開発からテスト、保守まで含めた生産性を向上させることは明らかだ。
期日を設けない場合の生産性
話は変わって『Peopleware』(日経BP社 2013)を取り出そう。ニューサウスウェールズ大学での調査の結果として、こんなことが書いてある。
「上司が日程的なプレッシャーを少しもかけなかったプロジェクトは、最高の生産性を示した」
私の個人的な経験から、生産性が高いのはやるべきことがはっきりしている、つまりどうやって実装したらいいか道筋が見えているときだ。 そういうときは、期日の目標値を定められないで放任されるほど、高品質なものが早く完成する傾向にある。 仕事への誇りからくる高生産性だと思う。
逆に、生産性が低いのは、対象の理解ができておらず、何から手を付けるか分からないときである。 こういうときは、タスクをやらなくちゃと思いつつ、何も進まずに非生産的な時間を過ごしてしまう。 強制的に期日の目標値を定めてもらわないと仕事が進まないケースだ。
このように、上司が強制的に期日を設定するのが必要なときもある。 しかし、その生産性は、やるべきことが見えているときに放任される場合の生産性よりずっと低い。
チームの生産性を最高に保つ
チームの生産性を常に最高に保つにはどうすればよいか。 自分たちのチームに新たに配属された人が、そのチームで作っているソフトウェアをよく理解できるようにしておくことだと思う。 もちろん、そうしておけば新人だけでなく既存メンバーがよりよくソフトウェアを理解することにもつながる。
メンバーが対象ソフトウェアをよく理解していれば、ソフトウェアの修正タスクに対する実現方法が思いつきやすくなる。 この状態になれば、期日を設定せずタスクを割り当てることができ、自動的に最高の生産性を発揮するはずである。
つまり、楽しく読め、きちんと対象を理解できるような仕様書をいつでもちゃんと書いておくことは、 後々、そのチーム全体の生産性を最高の状態に保つことにつながる。
Git で deb パッケージング
Git で管理しているソフトウェアを deb パッケージにしたいことがあります。 本記事は、1 つの Git リポジトリの中でソフトウェア本体と deb パッケージのメタデータを管理する方法を説明します。
2016/02/29追記:ここで紹介するブランチ構成には問題があることが分かりました。 debian ブランチを master に rebase した後、debian ブランチを push できないのです。 rebase する代わりに debian_1.0.1 のようなブランチを作り、cherry-pick するといける気がします。
目次
続きを読むKiCad Pcbnew 各レイヤの役割
概要
KiCad のプリント基板エディタ Pcbnew の各レイヤの役割をメモします。
この記事は KiCad 4.0.1-stable を対象に記述しています。古いバージョンではレイヤ名が日本語になっていたりと違いがあるようです。バージョン 4.0.1 に対応した体系的な説明が見つからなかったので、独自に調べてまとめてみました。
続きを読むDRV8830 と電源電圧が異なるマイコンを直につないで良い
English translation is below.
前回の記事 モータドライバ DRV8830 に関するメモ の続きです。
概要
本記事は DRV8830 という TI (Texas Instruments) 製のモータドライバと各種マイコンを I2C で接続する際の注意点をまとめたものです。結論は、DRV8830 とマイコンの電源電圧が異なる(DRV8830 < マイコン)場合でも、SDA と SCL ピンをマイコンと直接接続しても壊れない。ただし電圧変換をすることを推奨する、ということです。
続きを読むモータドライバ DRV8830 に関するメモ
DRV8830 は TI (Texas Instruments) 製のモータドライバです。秋月電子通商でも販売しています ので、それなりに有名だと思います。
DRV8830 は 2.75V から 6.8V までと幅広い電源電圧に対応しており、乾電池 2 本でも動くので電子工作には最適です。 マイコンとは I2C で接続でき、速度制御と方向制御ができまして、便利なチップとなっています。
ここでふと思いました。マイコンを 5V で駆動したときに、当然 I2C を 5V でプルアップしないといけないのですが、DRV8830 を 3V で駆動しようとしたら不正な使い方なのではと。 DRV8830 のピンに電源電圧より高い電圧が加わるわけですから。
続きを読むReText を Windows 10 にインストールする
本記事は reST(reStructuredText) をライブプレビューできるエディター ReText を Windows にインストールする方法 を参考に、著者が試した記録だ。
注意点
- 執筆時点の PyQt5 の最新版 PyQt5.5.1 は Python 3.4 向けにビルドされており、Python 3.5 系ではうまく動かない。
- 参考記事と比べて環境変数の設定が少なくても動いた。