無料ブログはココログ

« 2015年9月 | トップページ | 2015年11月 »

実験計画法の3つの原則 - より良い評価のために -

実験計画法(Wikipedia)には性能やユーザビリティの評価を考える際に役立ちそうな3つの原則があります。

局所管理化

比較するもの以外は条件を揃える事です。性能評価やユーザビリティ評価を行う際に、試験毎に条件が変わっていたのでは比較ができません。試験内容に合わせて、環境や被験者の条件を揃えます。

反復

複数回実施して誤差を無くします。性能試験やユーザビリティ試験では試験毎のばらつきが出ますので、複数回試験します。統計処理をする場合は20回以上すると良いと言われていますが、もう少し少ない件数でも検定できる場合がある様です。

無作為化(ランダム化)

条件を揃える事が難しい場合は、組合せによってその影響を除きます。学習効果がある場合などは2群に分けて、試験順序を帰る事で学習効果の影響を除きます。性能に影響するキャッシュの場合は、影響を除くよりも影響のある場合とない場合に分けて局所管理化、つまり分けて試験する方が良いでしょう。

性能試験やユーザビリティ試験について書きましたが、これらの内容は統計処理を行う際にも気をつけるべきことです。良いデータであるか、常に考慮していたいものです。

ソフトウェア工学の中で統計処理といえば、信頼度成長モデルが有名です。もちろん試験に偏りがない事が前提ですので、ランダム化が必須です。利用されているところでは、ランダムかができているでしょうか?

#下記の本は読んだ事がありません。読まれたら感想を教えてください。

このエントリーをはてなブックマークに追加


残業地獄に光をあてろ! - チームを再生する -

真っ暗な夜道は誰でも怖いもの。星が見えれば方角がわかり、月明かりがあれば道がわかる。そして灯火があれば足元が見え、前回説明したドラキュラをやっつける太陽の明かりがあれば高みが目指せます。

地獄の住人のメンタリティ

地獄の住人には終わりがありません。苦しい服役はいつ終わるかもわかりません。自分が何のために働いているのかわからなくなり、何とか逃れたいと思っています。

ぼんやり景色が見えたとしても遥か遠くにあって、この先どうなってしまうのかわかりません。不安に押しつぶされそうになります。

これだけを頑張れば少しは休めるだろうと賽の河原で石を積んでも、終わりそうになると鬼が出てきて崩します。やがて希望を失って努力をあきらめてしまいます。

他の人を思いやる事などできません。蜘蛛の糸のように一筋の可能性が見えても、自分だけは助かりたいと、あたり前のように他人を差し置いてしまうでしょう。

残業地獄でのメンタリティ

残業地獄に落ちてしまうと同じようなメンタリティに陥ります。まるで地獄のような状況がそこにあるからです。

  • 進捗が遅れていても問題を明らかにせず、計画を変更しない:終わり(ゴール)が見えなくなり、目標を見失ってしまいます。
  • 長時間残業が前提の無理な計画:どうなってしまうだろうと将来に希望が持てなくなり、不安を感じるでしょう。
  • 仕様変更や想定しない問題で計画が継続的に変更される:希望を失い、努力をする気力がなくなります。
  • 仕事を強制されて意見が反映されない:助け合わなくなります。意見を言うだけ損なので、自分だけは助かろうと身を守り、仲間が困っていても見捨てる様に帰ります。

残業地獄に光をあてる

プロジェクトを再生する方法は、前回書いた個人が残業地獄で生き延びる方法と似ています。まずは見通しを立てて、時間を確保して、大切なポイントを守ります。

  • 実現可能な計画を立てる:計画ベースで進めるには、混乱している状況を仕切り直して、実現可能な計画を立てます。これだけでは星のような小さな光りですが、チームが進むべき道を示してくれます。
  • 合意を形成する:計画に対するチームのコミットメントを得ます。少人数であればチーム全員で計画を立てても良いでしょうし、人数が多ければたたき台を説明してチーム内で調整します。合意を形成することで責任感が生まれ、計画は信用できるものになります。月明かりで、ゴールへの道が示されるのです。
  • フィードバック:ようやくチームで歩み始めても、放置したのでは元の木阿弥です。情報を共有し、 助け合います。情報を共有すれば問題点が見えるので計画を変更したくなりますが、ズルズルと変更してはいけません。なるべく変更しなくてすむ様に協力します。ともし火で足下が照らされる事で、チームで協力し、集中し、次のステップに成長できます。
  • 改善活動:ここまでくればプロジェクトはゴールにたどり着く事が可能でしょう。ここまでのような改善活動の経験を蓄積し、共有すれば同じような問題を避ける事もできるでしょう。太陽の日差しようにドラキュラを倒し、残業地獄を抜け出す事ができるでしょう。(参考:成長に必要なのは「失敗」ではなく「挑戦」

おわりに

地獄のメタファからチームを再生する方法を説明しました。残業地獄にあっても、計画を見直してチームを再生し、助け合う事で、残業地獄に光を当てる事ができます。

残業地獄の本質的な問題は、技術、予算、組織、外部環境など色々ありますが、時間的な制約の中では折り合いをつけながら乗り越えるしかない場合があります。

厳しい状況の中でも、仲間を守り、チームと、そして顧客と共に問題を共有し、知恵を出して助け合えば、きっとチームは再生し、状況は改善に向かうでしょう。

チームに光を当ててドラキュラにとどめを刺し、狼男も暴れにくい明るいチームにしてください。

このエントリーをはてなブックマークに追加

田中一夫さんを偲ぶ

失礼を承知で表現するとアニキのような人でした。

初めてお会いした時は茶髪で、証券会社の人とは思えないその姿に驚きました。しかし、部下を異動させた際に「髪の毛を染めていたから異動させた」との噂が立ち、俺はそんなことをしないと髪の毛を染めたと人伝に聞いた時はとても魅力的な人だと思いました。

お世話になったことも色々ありました。

一番覚えているのは、SEA関西で「XP v.s. CMM」というイベントを開催した際に、CMM側の人としてお願いしたのに、「なんだ、一緒じゃん!」とXPの価値に共感し、「保守開発ではドキュメントがない事も多くて、XPが有効だと思う」言われたのは今も忘れられません。

このイベントがきっかけでSEA関西にXPJUG関西の方たちの交流が始まったほか、世間一般ではWF開発とアジャイルという様に対比で考えられる事が多い中、本当に大切なものを考えられている姿は、今の私の考えに大きな影響を与えました。

また、ソフトウェアシンポジウムでプログラム委員長をした際も、世間知らずな私に委員のかたにお酒をついで周る様にアドバイスをいただきました。

名古屋に転勤されていた時もSEAのイベントで、蒲郡や味噌田楽のお店など、アレンジメントをしていただきました。

まだまだ、色々教えていただきたかったし、お世話にもなりたかった。また、少しでもお返しをしたかったです。

田中さんのようにはできないかも知れませんが、若い人を大切にするスタイルを後世につないでいく事が残されたもののつとめだと思っています。

ご冥福をお祈りいたします。そして、ありがとうございました。

このエントリーをはてなブックマークに追加

ドラキュラと戦え!残業地獄のサバイバル術

少しぐらいの残業なら喜んでする人でも、継続的に長時間残業があると辛いものです。ソフトウェア業界は必ずしもアニメのshirobakoのような業界ではないですが、なんだかんだで残業地獄という事や、不意に巻き込まれてしまうこともあります。

こんな時は、まずスケジュールやスコープを調整するのが定石です。でも年度単位の業務など、最低限の機能が間に合わないと意味がなくなるソフトウェアもたくさんありますし、長い付き合いの顧客に頼み込まれて、という事もあるでしょう。

世の中では残業の不幸自慢がはやっている様です。でも、そんなネガティブな考え方では、ドラキュラの様なプロジェクトに生気を吸い取られてしまいます。攻撃は最大の防御。ここは前向きに、正面から戦ってやろうではありませんか!

こんな時にも、CCPMやアジャイル開発はヒントになります。まずは、生活時間を切り詰めてバッファを作り、優先度の高いクリティカルなポイントを守ることが重要です。

1. バッファの作り方

(1) 時間を作る

生活を見直して時間を作ります。テスト項目と同じ様にまとめる、間引くという方法があります。

  • 複数の作業をまとめて時間を作る
    服や下着を1週間分用意して、洗濯やアイロンをまとめてします。このほか、アイロンをしながら録画したTV番組を見るなどいわゆる「ながら」も有効です。
  • 時間のかかる作業を間引く
    風呂の回数を減らしたり、その代わりにシャワーにする。アイロンをやめてクリーニングに出すといったように、自分にとって優先順位の低い作業を間引きます。

(2) 余裕を作る

計画そのものに無理があると、24時間のタイムボックスが溢れ出していずれ破綻します。まずは余裕のある計画を立てます。

  • あきらめて休日出勤
    残業が60時間ぐらいの見込みなら、1日あたり3時間ですので毎日9時まで残業です。心情的にはこれを超えても土日の休みを守りたいころですが、 あきらめて休日出勤 します。100時間ぐらいまでは土曜日を全部出勤すれば、平日は9時までですみます。
  • 無理な計画を立てない
    毎日終電で帰るというような計画を立てると効率が落ちて問題が起きやすくなり、結局土曜日も出ることになります。想定外の休日出勤は予定していた生活ができなくなって、身体も心もガタガタになります。平常時の開発で3時間ぐらいの予定外の残業があるとすれば、短期的には50%の見積もり誤差です。計画には余裕が必要です。

2. クリティカルなポイントを守る

(1) 体の健康
なんといっても睡眠と食事は重要です。

  • 通勤方法の見直し
    生活時間が圧迫される中で、通勤時間の使い方は重要です。仮眠が取りやすい路線にするとか、買い物や隙間時間の活用など通勤中に雑用をこなして、結果的に睡眠時間を増やします。
  • 兵站
    帰宅が遅くなると食事も遅くなり、身体の負担になります。職場周辺で早めに夕食をとったり、夕方はおにぎりを食べて自宅での食事を軽くするなどします。

(2) 心の健康(楽しみを作る)

休日出勤や残業だからといって奴隷の様に働く必要はありません。チャンスととらえて楽しみを作ります。

  • 土曜日のランチ
    休日出勤に慣れた先輩などにさそわれ、平日は混み合う職場周辺のランチを食べにいく事がありました。わざわざ休日に会社周辺に行かないでしょうから、休日出勤者だけの楽しみです。
  • 半ドンでお出かけ
    休日出勤は丸1日でなくても良いので、進捗が良い時や予定があるときはお昼で帰ります。通勤経路に繁華街を入れておくと、家族や友人と待ち合わせて買い物やデートも可能です。
  • お菓子
    早く帰りたくて必死になりがちですが、休憩を挟んで効率よく仕事しましょう。お菓子を置いておくと、仲間同士の話も弾みます。休日出勤などでは和洋菓子屋や鯛焼きなど好きなお菓子を持ち寄るのも楽しいです。
  • 大切な時間
    あなたにとって大切なものを守ります。家族との時間、趣味の時間、朝のコーヒー、など、一番大切な時間は少しだけでも時間を決めて残します。

3. 最後に

頑張るの語源は「我を張る」だそうです。無理に頑張って身体や心を壊すのも、我を張った結果です。

命より大切な仕事なんてありませんし、身体や心の健康が最優先です。一度だけの人生ですから、もし残業地獄に巻き込まれても楽しんで何かを得たいものです。

過度な残業が生じるのは、何か問題があったからです。問題を見極めれば、今後の改善に役立つでしょう。チーム、組織、会社、あるいは、自分自身。色々なアプローチがあるでしょう。

どうしてもダメな場合は自分を大切にしてください。映画「幸せのちから」に出てくるアメリカ独立宣言のように、人には幸せを求める権利があります。

ここに挙げたサバイバル術は、ドラキュラのような残業地獄に魂を吸い取られないためのニンニクにすぎません。ドラキュラを倒すには、まぶしい光が必要です。あなたにとっての光を見つけて幸せを追求してください。

このエントリーをはてなブックマークに追加

チームを守り育てる - セクシーな中間管理職 -

中間管理職の悲哀という昇進を避けたくなるような言葉がありますが、中間管理職はチームを守り、育てることができるセクシーな仕事です。

負債的管理職

管理職としては組織の目標にあった実現可能な計画を立案し、シンプルなメッセージを伝え、適切なメトリクスで管理することが、組織的な役目でしょう。

しかし、ただのイエスマンなら必要悪でしかなく、チームを強くする絶好のポジションをムダにした負債的管理職になってしまいます。

上司である中間管理職がイエスマンなら、部下にもイエスマンが伝搬し、怒られない様に、部下に強制し、悪い事を隠し、ごまかします。負債的管理職によって考えない組織ができてしまうのです。

しかし、上司である中間管理職がそのポジションを活かしたなら、チームは活性化し、考え、助け合い、提案する、より強い組織になるでしょう。

中間管理職というポジションを活かす

中間管理職はトップダウンの中間であると共に、ボトムアップの中間でもあります。下から上にアプローチすることで、チームは守られ、能力を発揮し、成長する事ができます。

(1) 情報収集

現地現物と言いますが、現場の中に入っていけるのは中間管理職の特権です。もちろん上の立場になってもお客様にご挨拶にうかがって別の情報を得る事ができますが、上の人間が現場に入り込むと中間管理職がやりにくくなってしまうので、やりにくいのです。

中間管理職は各メンバーの評価に関わるでしょうから、報告・説明が不十分だったり、他の情報と矛盾を感じる場合には、直接話す事ができます。また、飲み会やちょっとした機会を利用したインフォーマルな情報収集もできますので、うまく活用してください。

直接話す事で、担当者が見えていないだけか、 能力の問題か、報告しづらいのか、色々な問題が明確になるでしょう。

(2) 指導

コマンドコントロールで人を動かしていると、指示したとおりにならないと怒リたくなってしまいます。しかし、うまくいかないのは指導が不十分だったからですから、失敗したタイミングは指導のチャンスでしょう。

以前にも書いた様に、怒るな教えろだと思います。うまく指導するためのポイントは、怒りたくなるほど問題を大きくしない事です。

それには上に挙げたインフォーマルな情報収集や、問題を大きくしない様にチームを支援をすることも大切です。

(3) 支援

上の役職になるほど予算や人事の権限が増えますが、きめ細やかな対応が難しくなって、数字に頼る事しかできなくなります。中間管理職なら様々なアプローチが可能ですので、プロジェクトや組織の成功をコントロールできます。

作業指示ばかりしていると、部下はどうあるべきか、どうすべきかと考えてしまいがちです。逆に、上司である自分がどうあるべきか、何をできるか、を考えると色々と見えてくるでしょう。

たとえば経験が少ないリーダをアサインしたなら、協力会社の方にやりにくかったり気になる事があれば言ってくれる様にお願いすることもできます。また、リスクの高いプロジェクトなら、問題が起きた時の対策を検討して準備しておく事もできるでしょう。

(4) 組織の目

中間管理職が面白いのは、チームだけでなく組織が見える事です。下向きの行動だけでなく、上向きの行動も、企画し、タイミングを図り、アプローチする事ができます。

自分が上司だったら、何を期待し、現在の状況にどのように行動するか、を考えて、上司に協力を依頼します。

もちろん、組織の状況によっては他のプロジェクトを優先した方が良い場合もあるでしょう。でも、今ならいけるというタイミングを見極めて、このままだと大変な状況になることを説明してお願いするのです。

現場の状況と組織の状況が見える中間管理職だからできる動き方です。

ピーターの法則

能力のある人はどんどん出世するが、無能になった時点で出世が止まり、組織は無能な人間の集まりになる、と言われます。

しかし、ソフトウェア会社に関して言えば、中間管理職で無能になるのは、その位置づけや楽しさがわかっていないからではないでしょうか?

数値目標に追われて上司の顔色だけを見ていれば、どんな人も無能な行動しかできません。しかし、上に挙げた様に中間管理職でなければできない事がたくさんあり、直接、間接的な施策を実施して目標を達成するとてもセクシーな仕事だと思います。

おわりに

これまで、ウォーターフォール開発の問題としてサーバントリーダーシップについて色々書いていました。しかし、CMMを提唱したハンフリー氏の書籍にもあるように、チームの成功を実現するにはコマンドコントロールだけでは不十分です。

ここに挙げた行動ができない中間管理職が多いのは、見習うべき良い中間管理職がいなかったからかもしれません。

中間管理職ができる事は何か、何をするとうまくいくか、何を期待されているか、多くの中間管理職が部下に求める様に、考えて仕事をすれば、仕事はセクシーになり、組織は成長していくと思います。

このエントリーをはてなブックマークに追加

実装者のための計算量のはなし - O(logN)などをわかり易く説明しました -

計算量の授業は苦手なものの一つでした。でも、NoSQLのRedisやPythonなどのマニュアルを読んでいると、こんな感じのデータ構造なのか、などとイメージできていました。

とはいえ、苦手な分野だったので若い人には自分で調べる様に言っていたのですが、どうもわかっていない。開発の際は性能試験をするので品質には問題ないのですが、設計する際にきちんとイメージできるのか不安になりました。

私がなぜイメージできるかを考えると、アセンブリ言語の処理時間をクロック数で数えたり、アルゴリズムを学んだりと昔ながらの勉強法で、計算量と実装が結びついていたからだと思いました。

そこで若い人たちに、アルゴリズム+データ構造と計算量の関係を説明したところ予想外に好評で、ある程度はイメージできる様になった様ですので、スライドを公開します。RDB処理のようになるべくDBMSに任せて遅いところをチューニングすれば良い、といった単純な考えでは不十分である事がわかっていただけると思います。

そして、単に呼び出すメソッドの計算量だけでなく、呼び出す側の計算量も考えないといけない事。アルゴリズム+データ構造がイメージできれば、こんなメソッドがあるはずだとか、ハッシュの苦手な処理を速くするようにセッターをラップすれば最大値をO(1)で得られる、ということも理解していただけるでしょう。

このエントリーをはてなブックマークに追加

« 2015年9月 | トップページ | 2015年11月 »