らんぶらー RSS

Archive

Mar
20th
Sun
permalink

 絵が上手い人は、手に技術があるのではない。目が精確に形を捉えていて、手が描く線の狂いを感知できる。つまり、「上手い」というのは、ほとんどの場合、「測定精度の高さ」なのである。たとえば、料理の上手い下手は、最終的にはその人の舌の精度に行き着く。

 ラジコン飛行機の操縦が上手いか下手かは、飛行機の姿勢をいかに精確に捉えられるか、という目で決まる。咄嗟に舵が打てるか、適切な舵が打てるか、といった問題は大したことではない。工作が上手いかどうかも、常に材料を精確に測定できるか、にかかっている。狂いのない飛行機を作れる人は、小さな狂いを見ることができる人である。精確な位置に穴があけられる人は、精確な位置に罫書きができる人だ。

 もう少しわかりやすく説明すると、「どんなとき、どうすれば良いか」といった知識は誰でも簡単に学べるが、一番難しいのは「今がどんなときか」を感知することであって、これは知識としては学べない。現在の位置や状態を的確に把握できれば、もう「上手い」も同然なのである。

— 森博嗣 MORI LOG ACADEMY (via cka) (via kml) (via land-q-girls) (via ilovebookmark) (via zypressen)
2009-08-11 (via gkojay) (via ararky) (via uessai-text) (via lunaticjoker) (via redjuice) (via c-f-m) (via to-fuya) (via atorioum) (via johnnys) (via petapeta) (via kkj114) (via katsuma) (via shibats)
Dec
27th
Mon
permalink

SIerが仕切っている開発現場でありがちなのが、何かミスを犯すと、そのミスを防止するようにすごく手間がかかるチェックが追加されて、開発効率とモチベーションが下がるというダメなパターン。

たとえば、「今年度は申請書(EXCELシート)書いて上司の判子もらわないと svn commit すらできない職場で仕事することになりました。 - SiroKuro Page」とか。

これはプロセスマネジメントでもなんでもない、管理ごっこだ。管理したつもりになって自己満足しているに過ぎない!!

プロセスをマネジメントしたければプロセスを削れ:DESIGN IT! w/LOVE

では、次のように述べられている。

プロセスマネジメントにありがちな間違いのひとつに、ミスを減らそうとして、そのチェックをするプロセスを増やしてしまうということがある。

もちろん、すべての場合にそれが間違いというわけではない。

そのチェックが機械によって自動的に行われるのであれば大丈夫だし、そもそものプロセスが単純なものであれば、ひとつ工程が増えても大きな問題にはならない。

ミスを減らそうとして、そのチェックをするプロセスを増やしてしまうことが問題になるのは、そのミスが実はすでに多すぎて複雑な工程からなるプロセスそのものが負担となり、業務の遂行を圧迫しているケースだ。

すでに多すぎて複雑すぎるところに新たにチェック工程など追加すれば、業務の圧迫度合いはより大きくなり、また違うところでミスが起きやすくなるのは目に見えている。

この主張に同意する。

息の長いプロジェクトだと、チェックとか認証手続きとかで本来の仕事の割合がかなり減って、仕事自体が罰ゲームみたいなことになってる場合が多々ある。

こういった仕事の効率を下げるようなルールは、ほとんどがささいなミス=ヒューマンエラーが原因でつくられていて、ちょっと注意すれば防げそうに見えるんで、チェックリストとかで対策しがち。

だけど、チェックリストを作ったからといって、それで対策が完璧になることはない。チェックリストをチェックしているのは人間だからだ。たと えば、「チェックリストの1つの項目をチェックし忘れた。」とか、「面倒だったので、ざるチェックで通していた」とか、ありがち。そして、チェックリスト のチェックリストが作られたりするというアホな状況が発生するわけだ。

結局のところ、人間が作業しているが故に発生しているヒューマンエラーに対して、人間がチェックを入れるという対策をしても、問題の発生位置が変わるだけで根本的な対策にはなってないのだ。


ソフトウェア開発からムダを減らし、もっと効率良く価値を提供していくためには、このような後ろ向きな対策ではなく、チェックを機械化したり、ヒューマンエラーにすぐに気づく様にするなどといった、もっと前向きな対策をする必要がある。


チェックリストが機械的にチェック可能なモノなら機械化するなり、自働化するなりして人間が関わらないようにする。たとえば、コーディング規約を守らせたいなら、いちいち人間が調べてコーディング規約を守らせるのではなく、checkstyleなりコードフォーマッタを使うなりして、自動的にチェックするようにすれば手間もかからないし、見落としもなくなる。


コミットをミスってビルドが壊れたというのが問題なら、デイリービルドするなり、継続的インテグレーションをするなりして、ビルドが壊れたことをすぐに検知できるようにする。ビルドが壊れたことにすぐに気づけば、どのコミットが問題なのかを突き止めるのも簡単なはずだ。


逆に考えるんだ。「ミスをしないようにする」んじゃなくて「ミスをしても大丈夫なようにする」んだ。それがプロセスの改善だ。

Nov
22nd
Mon
permalink
自分に魅力や価値がなくなったら、今までいた場所にはいられない。これは、当然のことで、その時の自分にあった場所に行くといい。それは、恐れることではないし、価値がないのに自分の居場所にこだわり続けるより、ずっと良いことです。
Nov
11th
Thu
permalink
WTCに数千人の社員がいながら、 死者が13人しかでなかったモルガンスタンレーでは、 「リスク管理責任者」が元軍人で、 戦場で茫然自失する部下を統率した経験を持つ彼が、 拡声器で「動け動け」と連呼し続け、最後は歌を歌って励まして、 やっとのことでみんな階段を下りて行ったそう。 「責任者」氏は、 「他の誰かから力強く行動の指示」が必要である、 ということを実戦経験で知っていたのですね。 (ご本人は最後までWTCに残り亡くなった)。
Nov
9th
Tue
permalink

映画「アポロ13」でエド・ハリスが演じた、アポロ計画の運用管制主任、ジーン・クランツ氏の仕事に対する姿勢を示した「10か条」です。 http://www.pmaj.or.jp/online/0710/message3.html

1. Be Proactive .    (先を見越してうごけ)
2. Take Responsibility (自分の担当は自ら責任をもて)
3. Play Flat-out    (きれいになるまでやりとうせ)
4. Ask Questions    (不確実なものはその場で質問をして把握せよ)
5. Test and Validate All Assumption    (考えられることはすべて試し、確認せよ)
6. Write it Down    (連絡も記録もすべて書きだせ)
7. Don‘t hide mistakes (ミスを隠すな、仲間の教訓にもなる)
8. Know your system thoroughly  (システム全体を掌握せよ)
9. Think ahead          (常に、先を意識せよ)
10. Respect your Teammates   (仲間を尊重し、信頼せよ)

Sep
26th
Sun
permalink
情報化社会って言われて久しいが、この言葉を使う場合、情報が溢れた社会の中でいかに自分にとって有用な情報を手に入れるかということにばかり、視点がクローズアップされてる気がしてならない。直接の損得勘定にかかわってくるし、個人的な感情を左右したりするから重要なのは当然だとしても、”情報発信”ということもそれと同じくらい必要だということが軽視されているような気がしてならない。
結局情報交換って、ギブアンドテイクであり(というと世知辛く感じるけど)、挨拶とか、会話が発展したもの。自分だけ何もせずに何かを得ようなんて虫がよすぎる。
車を運転してて、タイムリーにウィンカーを出せないドライバーを見ると、いつもこのことを連想する。”ウィンカーを点灯する”というなんでもない情報(そして、それは免許取得に必要な条件だったはず)すら発信できない人が情報云々というのだろうかと。
permalink
プログラマの常識的なアイデアで、効率化や収益向上できる分野はまだまだある。けれど、多くのプログラマは今ある開発現場に縛られていて、フットワーク軽く斬り込んでいける人は非常に少ない。彼ら自身がプログラマという職種に境界線を引いていないだろうか?
Sep
12th
Sun
permalink
開発環境を整備しないと、とても開発する気にはなれないので、開発環境の整備を提案して、そのための活動は行ってはいます。しかし、やりたいことが「環境整備、テスト駆動環境作り、テストコード作成など」で、「開発をしたいのではない」と周りが勝手に思い込んでしまうのには困ってしまいます。
Sep
9th
Thu
permalink
ソフトウェアの開発では、最低限の学習を済ませた人、あるいは、学習を行っている人に、実際の業務を担当させる必要があります(「基礎教育」)。そのような学習を行っていない人のコードをレビューするというのは、コードの作者が若手かどうかに関係なく、レビューする側は疲れてしまいます。
permalink
技術教育を通して様々な事柄を教えていっても、開発の現場で実践される可能性は非常に少ないです。その主な理由は、開発現場での日々の活動や改善に対して、私が直接開発メンバーとして関与していないため、私からの教育やアドバイスを受けても、結局は現場の思惑で物事が動いていってしまいます。