uchan note

プログラミングや電子工作の話題を書きます

楽しい仕様書と生産性に関する考察

結論:楽しい仕様書は将来にわたってチームの生産性を向上させる。

仕様書を書く効果

『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 に対応した体系的な説明が見つからなかったので、独自に調べてまとめてみました。

続きを読む

MOSFET を用いた双方向レベル変換回路の考察

前回の記事 で紹介したレベル変換回路(level shifter)の動作を説明し、MOSFET の機種選択の考慮点を考えます。結論は、MOSFET のゲートしきい値電圧が高い機種は使えないので注意しましょうということです。

続きを読む

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 系ではうまく動かない。
  • 参考記事と比べて環境変数の設定が少なくても動いた。
続きを読む