Install this theme

mothgirlwings:

Pluto, Mickey and Minnie Mouse in Walt Disney’s The Picnic (1930)

catastrofe:

gif night (always suspected)

catastrofe:

gif night (always suspected)

1. 肉を食う - タンパク質が不足していることが多いんです。肉を美味しく食らうと(重要)かなり気分がよくなります。

2. いつもの三倍かけて飯を食う - ゆっくり食うことで脳内物質のバランスが変わります。

3. 意図的に動作をゆっくりする。 - なんかの本に書いてありました。肉体を制御できているという感覚がメンタルに好影響を与えるようです。

4. トニックシャンプーで頭を洗う - 普段は頭皮の油脂を引きはがすような感覚が好きではないのですが、たまにスカッと洗うと気分が良くなります。

5. 音楽を聴くのをやめる - なんか聞くのが習慣になっている人はやめてみましょう、麻痺している感覚が鋭敏になり心が落ち着きます。

6. タバコを吸いましょう - 禁煙に成功して吸っていない人は、一,二本吸いましょう。久しぶりの刺激に脳が喜びます。(非喫煙者はやったら駄目です)

7. 実家に戻りましょう - 一人暮らしをしている人は肉親と交流するだけで心が落ち着きます。

8. 友人に電話をかけましょう - 二,三分の近況報告のやりとりだけで,驚くほど気持ちが楽になります。

9. どの医院でも処方されやすいデパス(抗不安薬)を処方して貰って飲みましょう。飲んだことがない人にはよく効きます。服用後の運転は厳禁です。

仕事のスピードが早い人に大量に仕事頼んで、
それでミスが多いと糾弾する。
いや~、ひどい話だと思うかもしれないが、
現実にはこのようなことが結構ある。

通信速度の早さとコンピュータ処理能力の早さに伴い、
宅急便で翌日届いていたものが、
瞬時に送れるようになったり、
今まで2~3日かかっていたことが、
パソコンの進歩で3時間ぐらいでできちゃうとか、
ここ数年で仕事のスピード感覚があっという間に変わった。
さらにはスマホに代表されるケータイ端末の進化で、
いつどこにいてもすぐに返信、すぐに電話でつかまえられる、
みたいな時代になったせいもあり、
みんな仕事のスピード感が以前より早くなった。

ところが時代のスピード感についていける人と、
ついていけない人の差が出始めていて、
仕事が早い人と遅い人の差も広がり始めているように思う。

こうしたなかで、仕事が早い人と遅い人、どちらに仕事を頼みたいか?
そこに価格差も質の差もなければ、
当たり前の話だけど早い人にみんな頼みたいと思うだろう。
いや、多少、価格が割高だろうが、質が低下しようが、
スピードが命といった感じで、
仕事の早さを優先する傾向は年々高まっているように思う。
みんな急いでせかされているから、
できれば仕事が早くできる人に頼めば、
自分の時間に余裕ができるから、
早い人に仕事が集中するわけだ。

仕事が遅い人に「納品を1日早めてくれ」
「見積もりを今日中にくれ」といっても、
だいたい「無理です」といって断る傾向が強い。
ところが仕事が早い人ほどこうした無理を聞いてくれる。
だから無理を聞いてくれる人に仕事が集まる。

無理を聞いてくれるもんだから、
どんどんその要求はエスカレートする。
今までは相手側に配慮して、
「夕方にお願いして今日中っていうのは無理ですよね。
明日の朝一でいいです」
みたいな遠慮があったにもかかわらず、
気を利かせて仕事が早い人はやってくれるもんだから、
そのスピード感を普通だと思い、
仕事が早い人にどんどん無理難題を無意識に押し付ける。

「見積もり、当然、今日中にくれるんですよね?」
「納品2日前倒しにならないですか?
いつもやってくれてるじゃないですか?」

今まで特別にスピードアップしてやってもらっていることを、
早いのが当然という感覚になり、
それを仕事が早い人が断ろうものなら、
「なぜ前にやってくれたじゃないか?」「できるでしょ、そのぐらい」
と横柄になる。

でも仕事が早い人は遅い人と違って、
なんとかスピードアップの要求に応えようと、
際限のない要求をできるだけ聞くようにする。
するとその人の評価がまた上がり、
こうした人に仕事が集中し、
仕事が早い人だけでに大量に仕事が集まるようになる。

仕事の早い人が、たまに仕事の要求を断ろうものなら、
またまた大騒ぎする。
「なんでいつもやってくれてるじゃないか?」
「そんなに早くできるんだからまだ仕事できるはずだ」みたいな。
冗談じゃない。
仕事がいっぱいあるから、暇じゃないから、
忙しいから早く仕事をしているのに、
さらに量も早さも求められたらパンクしてしまう。
そこを理解せずに、無理難題を断ったことに、
腹を立てるって頭おかしいとしかいいようがない。

仕事量が多く、もっと早くしろ、
とせかせばミスが起きるのは当然だ。
ましてや仕事が遅い人に比べて、
数倍の仕事をしているのだから、
ミスの件数は多いに決まっている。

仕事が遅い人が1日に10しかできないことを、
仕事が早い人は1日に20の仕事をこなすとする。
遅い人がミス2件に対して、早い人がミス4件なら、
ミスの確率は同じにもかかわらず、
横暴な仕事のふり方をする人は、
確率で見ず、件数で見るから、
「おまえは他の人よりも2倍もミスしている」と非難する。
算数からやり直せって話だが、
案外こういうおかしな話が実社会ではまかり通ってしまう。

ミスを過大に騒ぎ立てて、
「ここはミスが多くてひどい」
「だからもっと価格を下げろ」
「質を上げろ、ミスをするな」
と要求する。

仕事を頼まれた方からしたらたまったもんじゃないだろう。
ミスを減らしたいなら、
きちんと時間とコストを与えるべきだ。
時間も与えず、いつもタイトな綱渡りスケジュールばかりを押し付け、
それでミスしたら怒るって、
仕事をふっている人間の仕事能力のなさゆえだろう。
ミスをしないよう、せかさず時間的余裕を与えるべきだ。

もしそれでも急ぎなら、
相手に無理をいって仕事をしてもらっているのだから、
ミスが起きるのは当然という前提で、
自分がミスがないようその人をフォローしてあげるべきだろう。

ところが自分の責任を逃れたいがために、
ミスがあったらその人のせいにして、
ミスがなかったらこの早さでやったのは自分のおかげ、
みたいに勘違いする。

だいたい仕事にスピードを求める人は、
たいがいコストもけちっている人が多い。
当たり前の話だけど、同じ距離を走るのでも、
鈍行列車と新幹線では特急料金が違うわけだ。
早くやった人にはその分、特急料金を支払うべきだが、
仕事を早くしろとせかす人に限って、
たいがい安く人をこき使おうとする人が多い。

コストは高くない、納期は厳しい、
そこに輪をかけてそれより前倒しにしろとかいえば、
ミスが起きるのは必然なわけだ。

仕事をふる人間がなんでもかんでも急かせれば、
ミスが起きるのに、その根本をスルーして、
あいつはミスが多いからダメだとか言っている話を聞くと、
バカじゃないかと思う。

だったら納期急かしたり、無理なスケジュールで追い詰めたり、
安いコストで叩いたり、乱暴な仕事を大量にふったりすべきではない。
自分の仕事の仕方が悪いから、
それがはねかえってきているだけなのだ。

よくがんばってくれる仕事が早い貴重な人たちを、
こうした形で潰さないでほしいと思う。
そんな人たちを自分が悪いのにミスが多いと糾弾して、
だったらあんたらの仕事なんかやってられるかとキレられたら、
一番困るのは自分自身なのだから。

早くやってくれる人の仕事の早さを、
当たり前だと思って横柄になる最低な人間にならないよう、
注意して仕事をふりたい。

僕は今回の案件で、システムのレスポンスに徹底的にこだわってる。

それには理由がある。

それは、プログラマの誇りを見せ付けたいからだ。

この案件は、既存機能をコピーして似た機能を作るというものだ。


既存機能は、Webシステムなのに1アクションで

1分や2分以上のレスポンスタイムはザラで、

悪いときには数分後にタイムアウトして、

さらに悪いときには、アプリケーション全体をロックしてしまっていた。

顧客はそれでも我慢して使っていてくれたそうだ。

今回の改変に、顧客がパフォーマンスを要求するのは当然だった。


それにしても酷いアリサマだとコードを見てみると

酷い。

確かにパフォーマンスは出ないのも無理はない。


いや、それどころか僕は、このSI業界の問題を感じざるを得なかった。

この機能はそこそこ難しく、業務的にも重要だ。

しかし、そのコードは、新人~3年目ぐらいのプログラマが書いたとしか思えないコードだった。


例えば、

・Stringを+でツナギまくってパフォーマンスが激劣化していた。

・SQLで、よく考えれば要らないJoinが山ほどあった。

・すべてMapで引数を取り回し、Mapの中身はすべてStringに置き換えられていた。

・数字もDateもStringだ。

・1000行以上もあるSQLは、適切にインデント付けされておらず、読むことすら億劫になる。

その他、Sessionの使い方、クラス分け、変数名の付け方、コメントの書き方に至るまで、

新人が試行錯誤して作った跡が見られる。

この業界の問題、それは

プログラムが、新人~3年目の作業と位置づけられていることだ。


僕はこの認識を変えたい。

だから徹底的に、スキルの差によってどれ程のパフォーマンス差が出るか示したいと思った。

自慢したいわけではない、

10年近くコードと真剣に向き合ってきたから、

新人~3年目に負けるはずはない。

このコーディングに際して、まず徹底的なリファクタリングから取り掛かった。

SQLを読みやすくインデント付けし、Mapを取りやめて適切な型のオブジェクトにし、

StringBufferをつかって、Joinを削った。

作り直したといっても良い。

もちろんチューニングは徹底的に行なった。

実装工数の三分の一を使った。 

先週まで、1アクション3秒の壁を越えられなかったけど、今日2秒を越えた。

検索自体は、0.5秒以内。改修前は、早くとも30秒だったので60倍の高速化だ。

最もパフォーマンス差が出たアクションでは、1000倍以上の差となった。

これを顧客に納品する。

今まで、1つ1つのアクションに対してイライラし続けていた機能は、

サクサクと動くようになる。

この機能は、サクサク動くと業務上の使い道が大きく広がることは間違いない。


顧客は感じてくれるだろう。

サクサク動くことの快感を。

顧客は疑問に思ってくれるだろう。

「なぜ既存機能よりも情報量の多い、この機能がこんなに早いのか?」と

そして問い合わせてくれたら良いと思う。

なぜこの機能はこんなに早くて、

他の機能はウンザリするほど遅いのかを。

そのときには、答える。

プログラミングスキルの差としか言えませんと。


新人~3年目が悪いわけじゃない。

ベテランがコードを書かなさ過ぎる。


僕のスキル程度は、ザラに居るはず。

しかし彼らは、設計書のメッセージIDや、設計書更新日付の整合性や

フォントや罫線の切れを合わせるのに貴重な労力を割きすぎるんだ。

システム開発は、顧客の要件を実現するサービス業だ。

要件の実現がキモなのに。

実装がキモなのに。

なぜ、ベテランが頭だけやるのか。

僕にはどう考えても、理解不能だ。

今回、僕は頭の先から尻尾までやった。

それが普通であってほしい。