ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

派遣PGの感じる「怒り」をデコンパイルしてみた

http://b.hatena.ne.jp/entry/togetter.com/li/41782
昨日〜今日にかけてはてブで盛り上がりを見せたエントリです。ここぞとばかりに、IT業界の日頃の不満をブクマコメントに叩き付け、「これだから日本のIT業界は、大企業は駄目なんだ(嘆息)」と溜飲を下げる技術者が多数続出しています。

自分もその一人で、ブクマコメントで愚痴を呟いています。

技術面での良し悪し・新旧・正邪ではなくて、リーダーやマネジャー・組織文化・経営レベルの好き嫌いや不安感で、辛い縛りが根付いてる。一人の作業者じゃどうにも出来ない。どこにでもある人間の問題。

はてなブックマーク - msakamoto-sfのブックマーク / 2010年8月13日

しかし、このエントリでは少し視点を変え、「何故自分は、こうしたネタに挙げられている現場に対してエントリと同様の怒りを覚えるのだろう、あるいはエントリの著者は怒りを感じているのだろう」という点について自分なりに掘り下げたいと思います。
端的にまとめると、次の三つが「怒り」を作り出した犯人です。

  • 「最新技術へのキャッチアップ」という名の脅迫状
  • 「WHY」の断絶
  • 独りよがりの「美しいソースコード」

「最新技術へのキャッチアップ」については、その裏側に「『自分だけ』向上心」という真犯人が居ますがそれは最後に紹介します。

「最新技術へのキャッチアップ」という名の脅迫状

システム構築の現場作業員として、マネージャやリーダであろうと、SEやPGであろうと、真面目に知識や技術を向上させようとしている人間であれば、昨今のITニュースやWEB+DB PRESS、ソフトウェアデザインなどの専門誌、@ITやITProなどをこまめにチェックして「アンテナの感度」を高めていることと思われます。メディアでは技術を世に広めるという目的で最新技術や既存技術でもより深く掘り下げた解説記事が目に飛び込んできます。

すると、真面目に勉強しようとしている人ほど次々と目に飛び込んでくる記事に対し、「あ、Subversion良さそうだな、試してみよう、上手く行ったら会社でも使いたいな」と反応してしまいます。バージョン管理の話題であれば、一昔前であればSubversion, 昨今はgitなど分散管理系の記事をよく目にします。DBであればMySQLなどのオープンソースから、最近はKVSでしょうか。Web開発のプログラミング言語に目を向けますと、JavaからPHP、すこしPerlが盛り上がったところでRuby on Railsが波に乗ったかと思えば今度はクラウドでGoogle様が使っているからPython、それを脇目にScalaやJavaScriptなど・・・というふうに挙げていくだけでも大変です。

では、こうした技術を真面目に、真面目に勉強してキャッチアップしたとして・・・「システム構築の現場作業員として」使うことがあるのでしょうか?そもそも、技術の流行廃り自体が、SI現場の時間の流れと大きくずれてしまっているのではないでしょうか?
プログラミング言語にせよ、DBにせよ、バージョン管理システムにせよ、アジャイルなど開発プロセスの技法にせよ、一度現場に導入されて使われ始めると、その現場の文化や組織風土に根付いて慣性を持ってしまいます。半年後、数年後により新しく使いやすいオープンソースが登場したからといって、すぐに乗り換えることは出来ません。特にレベルの高い技術者を常時確保できるわけではない現場であれば、多少使いづらさがあったとしても、ツールを変更してトラブルになるリスクを避けたい場合もあるでしょう。

しかし真面目な真面目な技術者は、「そうと分かっていても」雑誌やWebで新しい技術が話題になる度に焦燥感に駆られるかもしれません。
「次はこれを勉強して身につけておかないと、あなたの市場価値が無くなる(かもしれない)」
と脅されているように感じてしまうからです。
雑誌自身は別に脅しているわけでも、ましてや脅迫状を配布しているわけでもありません。単純に最新技術をわかりやすく紹介し、広く世の中に広めるという目的を遂行しているだけかもしれません。
単に「受け手側が、勝手に、」脅されていると感じてしまっているだけの話です。

「自分がせっかく勉強した最新技術も、現場で活かせない」という不満を持っているエンジニアの皆さん、一度、自分が「最新技術へのキャッチアップ」という脅迫状に踊らされていないか振り返ってみては如何でしょうか?

今誌面を飾っているプログラミング言語は、はてなブクマで話題になっているデータストアの最新ソフトウェアは、本当に、本当に、現場で使いますか?自分の役職や組織風土、文化を念頭において考えてみた上で、現実問題として現場で使えるものでしょうか?
例えばあなたが3ヶ月契約でPGとして派遣された現場がVSSすら使わず、コードをコメントアウトして残しておくことでバージョン管理していたとします。当然真面目で勉強好きなあなたは、「これではイカン!!Subversionを or gitを導入すべきだ!!」と怒りに身を震わせるでしょう。
ですが、あなたは3ヶ月でその現場とおさらばする作業員でしかありません。
現場で前から、そしてこれからも開発作業に携わる人にとってみれば、「新参者が何口出してんだゴルァ、うちのやり方に文句つけるのか!?」と感じてしまうかもしれません。
無理してSubversionを導入したとしても、あなたが3ヶ月後その現場を去った後、「やっと口うるさいのが居なくなった、せいせいしたwww」と以前の管理方法に戻すかもしれません。

自分自身書いてて鬱になってきましたが、とにかく、「最新技術へのキャッチアップ」に踊らされて「怒り」に身を任せたとしても、楽しい結末を迎えることは無いでしょう。
IT技術者の「怒り」を生み出す原因その1,「最新技術へのキャッチアップ」という名の脅迫状でした。

「WHY」の断絶

  • 「なんで時間がCHAR(14)なんだ。DBのタイムスタンプ型使えよ。」
  • 「予備カラムが凄い数。ALTER TABLEあるだろう?」
  • 「とにかく、現場の常識は世界の非常識!」

「最新技術へのキャッチアップ」でも触れましたが、真面目な勉強好きの技術者は今日もせっせと@ITやITmedia、gihyo.jp、ソフトウェアデザインやWEB+DB PRESSに目を通しているかもしれません。
そうしたメディアでは最新技術とその活用法がたくさん出てきますが、大抵は移り変わりの激しいWeb開発の世界を舞台にした解説記事・サンプルコードになってきます。
そうなると、その技術者にとってのコードの標準、ひいては世界の常識はWeb開発の世界の常識になってきます。そうした技術者が下請けのPGやSEとして、COBOL文化が息づいている現場に出向くと、まさしく異文化衝突が発生します。

問題は、衝突が発生した常識について「なぜ、それが常識として定着したのか」のWHYが誰も語れない点ではないでしょうか?

例えばヒンズー教徒に日本のカレーをご馳走したとしましょう。あなたが精魂込めて煮込んだビーフカレー、しかしそのヒンズー教徒は口をつけようとしません。
ここでもしかりに、「WHY」の部分をあなたが知らず、ヒンズー教徒に質問しても答えられずただ「ビーフカレーは駄目」とだけ言われたら、あなたは納得できずに厭な思いをするでしょう。
しかしヒンズー教では牛は聖なる動物なので食べることができない、という理由を説明されれば、WHYを知ることができたあなたは少なくとも納得は出来るでしょう。「じゃぁチキンカレーを振る舞おうか、豆カレーを振る舞おうか」と次善策を考えることも出来るでしょう。

常識が異なる点に対して怒りを覚えているわけではないと思います。
「なぜ」それが常識となったのか、納得できる理由が説明されず、ただ盲目的な服従を強いられるから、怒りを覚えてしまうのではないでしょうか。

とはいえ、理由を説明できない相手だけを責めることは出来ないでしょう。「なぜWeb開発の世界では時刻をDBのタイムスタンプ型で保持するのですか?」「なぜ簡単にレイアウトできるTABLEレイアウトを使わず、floatやbox-sizeに関するIEのbugなどに苦労しつつCSSを使ってレイアウトするのですか?」などなど、逆に自分たちが問われたときに、どれほど「納得できる理由」を説明できるのでしょうか?
只何となく「雑誌や書籍でそうしていたから」では、「先輩がそうしていたから」と同様、何ら自分の頭で考えたわけではないことになってしまいます。

これについては組織やチーム内での知識の伝承というテーマも絡みますので単純な解決策は考えつきません。しかし「WHY」を説明できないのは、相手も自分も一緒、と考えることで少しは「怒り」も収まるかもしれません。
IT技術者の「怒り」を生み出す原因その2,「WHY」の断絶でした。

独りよがりの「美しいソースコード」

自分が最新技術へのキャッチアップに踊らされていると分かっていても、WHYの断絶が怒りを生み出していることを理解していても、現場で「メソッド分けるな、一つのメソッドにまとめろ」とか「クラスを作るな、オブジェクト指向するな」とか言われると怒りを感じてしまうのではないでしょうか。
自分自身が美しいと思えるソースコードと真逆のことと思われます。
しかし「美しいソースコード」とは何でしょうか?もちろんアルゴリズムの妙技というのもありますが、SI現場のソースコードで「美しい」と感じる観点は、クラス設計であったりフレームワークの切り分け方、使い方、デザインパターンの活用などではないでしょうか。
それらは「ソースコードの保守性」を向上させますので、「美しいソースコード」というのは「変更・拡張がしやすい、読みやすいソースコード」と言い換えても、特にSI現場に絞れば異論は少ないと思います。

つまり「美しい」ソースコードと真逆のソースコードを書かされる時に感じる「怒り」というのは、「将来的に変更・拡張がしづらく、他人のコードを見ても何が書いてあるのか分からないソースコード」を書かされ、それにより「デバッグ作業が大変になる」ケースや「将来また自分が担当して変更・拡張するのが大変になる」など、自分に火の粉がかかる可能性を想像したために「怒り」を感じているのではないでしょうか。
将来大変になることを分かっていてその作業をやらされる、それも納得できるWHYを説明されずただ盲目的に服従を強いられる・・・書いているだけでも辛い状況です。

ところが、「保守しやすい」「美しい」というのはかなり主観的なもので、他人に説明しづらいと思います。それこそ「なぜオブジェクト指向を使う必要があるのか」というレベルから「WHY」を説明することになりかねません。
ある人にとっては、適切にメソッド分割されたソースを「保守しやすい」と感じますが、別の人にしてみれば「処理が上下に飛んで分かりづらい、保守しにくい」と感じるわけです。
個々人の感性の問題も絡みますので、結局の所「ソースコードの美しさ、保守のしやすさ」は個々人に依って感じ方が異なってしまう、独りよがりなものになってしまいます。
そしてそれが積み重なり、作法として組織に定着してしまうと、ぱっと出の派遣PGが異を唱えたところで覆すことは難しいかもしれません。

上手い解決方法は見つかりませんが、とりあえず開き直って、組織に定着したと言うことは、自分から見てどんなにおかしな作法であったとしても、少なくともその組織に限って、それなりに保守・メンテしやすい・・・のかもしれない、なぁ、と割り切るというのはどうでしょう?でないと、独りよがりな「保守しやすさ・メンテしやすさ」のギャップから来る「怒り」をひたすら押さえ込まなければならず、相当辛い日々になると思います。

IT技術者の「怒り」を生み出す原因その3,独りよがりの「美しいソースコード」でした。

「『自分だけ』向上心」で疲れ切った自分を振り返りつつ。

向上心、それ自体は悪いものではないと思います。どの方向に向けるかによって社会の役に立ったり犯罪になってしまったりと変化してしまいますが、少なくともIT技術者として、技術や開発技法を学ぼうという向上心は無いよりは有った方が良いでしょう。

しかし、今から考えると、自分はそのベクトルを少し間違えていたな〜と思わないでもありません。
というのは、「なぜプライベートタイムを削ってまで勉強するのか?」と問われたときに、本心から現場を改善したいから、とは言えなかったからです。

ぶっちゃけると、「単に上司から褒められたいから勉強していた」のが本音でした。
上司から、「よく最新技術を勉強して、活用してくれたね〜いいこいいこ」してもらいたかったから、プライベートタイムを削ってまで勉強していたのです。
上司より身近で共に現場で作業している同僚や、お客様のプロジェクトマネジャー、リーダー、開発メンバーなど全く視野に入れていませんでした。(なので、仕事が終わった深夜に「お勉強」してその結果遅刻したこともそれほどクリティカルにはとらえていませんでした)
「会社が倒産しても『自分だけは』すぐ次の会社に就職できるように」と、技術習得に励んでいた面も否定できません。
このように、単なる自己満足や自己の保身を目的とした向上心を、ここでは「『自分だけ』向上心」と名付けてみました。

「『自分だけ』向上心」にとらわれてしまうと、どうしても上から目線になってしまいます。「上司から褒めてもらいたい」というのは「立場が上の者からの権威付けが欲しい」という裏の欲求に基づいています。「権威付けされて威張りたい」というのが真の目的です。
「オレはこれだけ勉強してるんだ、偉いだろう、知識も技術もおまえらより凄いんだ」と威張り散らしたいだけです。

振り返ると、それは自分の普段の言動や態度からにじみ出ていました。
「何で○○(数ヶ月前雑誌やWebでみかけたオープンソースソフトや開発技法)を活用しないんですか?」
→(本意):「私は最新技術である○○の知識を持っています、あなた方より偉いんです。」

こんな輩の言うことを真剣に聞いてくれる人なんているはずがありません。

結局、現実が思い通りにならずに
「自分はこんなに勉強しているのに周りは聞く耳持たない、だから今の現場は駄目なんだ」
となるわけです。

もしも真面目で勉強好きな人でこの話にドキリとしたら、一度「なぜ自分はこれほど真面目に最新技術を勉強しているのか」自問してみると良いかもしれません。

いやホント、本気で最新技術を導入たいのであれば、まずは普通に現場で働き、お客様と仲良くなることが先だろう・・・と今では思います。

Webで愚痴らない人たち

冷静な現実派エントリを見つけましたので紹介します。

彼らにはスキルが無いんだ。
彼らには新しい技術を学ぶ学習意欲がないんだ。
彼らはバカだからそうやっているのだ。
そのように結果からだけ断じ評価してしまうのは簡単ですが、本当にそれでいいのでしょうか?
本当に他人事でいいの?

ITドカタを笑ってすましてちゃだめだろ - 紅茶屋くいっぱのあれこれ日記

結局、Web上で誰かが発言した「IT土方ワロス」に反応して、合わせ鏡の間を行ったり来たりしながら、延々と「IT業界って終わってるよねー」と鏡に映る自分相手に愚痴を呟いているだけなのかもしれません。

そろそろ、そんな無間地獄、終わりにしたいですよね。