概念モデルの方が楽チンなこともあるかも?の例

例えば土地と所有者の関係をモデルで表すとします。
で、土地には所有者がひとりしかないと思っていたとします。

モデルで簡単に描くとこんな感じ。
http://www.sam.hi-ho.ne.jp/egap/before.jpg

でも、上の図を描いてるときにお客さんから、実は土地に対して同時に複数(3人まで)の所有者を許すんだよ。とツッコミが入ったとします。

その際の変更はこんな感じ。
http://www.sam.hi-ho.ne.jp/egap/after.jpg

データモデルでは、土地に所有者が一人しか居ないと言う前提で土地に持たせてしまっていたので、複数の所有者を表現するには別途その関係を示すものを出して紐付ける必要があります。対して、この場合に限って言えば、概念モデルでは多重度を変えるだけでいい。

“なんとなくこんな感じ?”ってのをお客さんの前で確認しながら*1ライブでチョコチョコ直していく必要がある時に、概念モデルだと結構サクサクできると言うのはあるような気がします。その場で「えーっと」となる確率が低いような気がします。

データモデリングの場数を踏んでいるとどうとでもなるような事かもしれませんし、厳密性や整合性を求めるとそうとも言ってられないかもしれません。また、この例がたまたまそうなだけで、逆のパターンも往々にして存在するでしょう。

  • 追記

依存非依存リレーションシップだけで書くとこうなりますが、多対多を使うと普通に書けますねー。

*1:モデルをそういう用途のものだと位置づけた場合

TDDやりたいけど出来ない場合

プロジェクト管理者が嫌がるケース

  • テストケースをコーディングしていると余分な時間がかかる
  • テスト工程が増えるだけだ(どっちにしろテストしないとダメでしょ?)
  • 教育コストかかるじゃん。そんなことしてないでさっさと作れ
    • 解決案
  • どっかからメトリクスを出して効果を説得する
  • スケジュールを変更しなくていいからとりあえずやらせてもらう
  • テスト工程が増えるのではなく、本来必要なのだという話や位置付けをartonさんの記事等を元に説明する
  • 開発者が各々の裁量でこそっとやり、既成事実を作ってしまう(土台から固める)

設計者が嫌がるケース

  • 俺がテストコードを見ても内容を理解できないから意味ない。
    • ちゃんと俺にもわかるように単体テスト仕様書で書けと言われる
  • 設計書から自動生成しろ
    • 解決案
  • そもそもコードに対するカバレッジの検証(と乱暴に言っておく)なんで理解できなければ理解しなくていいです
  • 設計者は設計者の責任においてテストを実施し設計・仕様に対する検証して下さい
  • 設計書が自然言語で書かれている限り自動生成は無理
    • (形式的なもので書いてくれるのであれば別という話で)
  • 設計に対するフィードバックは迅速に行えるはず

プログラマが嫌がるケース

  • やり方わからん。めんどくさい。何でそんなことしないとダメなんだ
  • 新しいこと覚えるの大変そう
    • 解決案
  • 以下について常識的な時間内で定量的に測定出来るような説明をしていただければ、あなたの言うとおりにしようと思いますので示してください。という。
    • 何を持ってコーディングが終わったと言うのか?
    • あなたの単体テスト仕様書は何を保証しているのか?
    • 実施した変更が他の箇所に影響を与えないと保証する方法は?
    • 何度も行っているテスト(回帰テスト)が毎回正しいと言える根拠は?
  • やり方がわからない人間には周りが教えてあげる
  • 周りで楽しそうに実施して寂しがらせる

プロジェクトマネージャーとかITアーキテクトとか言う前に

こんなことを書くと胡散臭く思われるのですが・・・・


先日、飲みの席でとある方が「ITエンジニアはモテないとダメだ。それくらいじゃないと誰もついてこようと思わない。」というような話をしていて、まさにその通りだなぁと同感しました。

プロジェクトマネージャーやITアーキテクトとして、うまく仕事を回していく中で最も重要なのはヒューマンスキルだと思っています。(ITアーキテクトも開発者をマネジメントすると言う意味では一緒だと思うので)

今まで私が一緒に仕事をしてきた中で、この人は信頼できると思ったマネージャーやエンジニアの多くは、結構モテてそうな気がします。モテるという言い方はちょっと極端かもしれませんが、少なくとも

  • 色んな趣味や経験がある
  • 話をしていると面白くて飽きさせない。
  • ちょっとした事でも敏感に気がつく

ような感じの人が多いような。
人間的魅力のないエンジニアやマネージャーが、メンバーをうまく回していけるかどうかはちょっと疑問。なかなかマネージするのは難しいんじゃないかと。

若いエンジニアはいっぱい遊んだり恋愛すべきだと思います。その為には当然お金も必要になるので、管理職の方はITエンジニアにもっとたくさん給料をあげて欲しいものです。

#もちろん“優秀⇒モテる”でもないし、さらには“モテる⇒優秀”とは全く限らないので要注意ですが。