gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

いつも思う「そのお仕事の職分は?」

んと…ちと雑感をつらつらと(いつものことぢゃんとかいう突っ込みはおいちゃん嫌いだなw)。
多分いつも以上に文章がきっついのでご注意ください。


まず。職分とは…とりあえず
http://dictionary.goo.ne.jp/search.php?MT=%BF%A6%CA%AC&kind=jn&mode=0&base=1&row=2

職務上の当然のつとめ。役目。本分。

http://ja.wikipedia.org/wiki/%E8%81%B7%E5%88%86

果たすべき職務の内容、責任。職責。

概ねこのあたり。えと、ぶっちゃけると「その肩書き持ってるんだからこれくらいのことはして欲しい」というあたりですかね。


先に、割合に軽いところから。
いわゆる「DBA(Database Administrator)」とかデータベースエンジニアとか。
そういう人に、まぁ色々興味があって質問をして、いつも不思議に思うのですが。
「なぜ、きちんと"リレーショナルデータベース"について学ばないのだろう?」
無論「各製品に固有のTips」も重要だと思うのですが。基礎理論を知らなくてよいという法もなかろうに、と思ってしまいます。
具体的には。例えば、最低でもこの本くらいは読んでおいたほうがよいのではなかろうかと思うわけですが。どんなもんなんですかね?

データベースシステム概論

データベースシステム概論


で、ここからが本題。
今回取り上げるのは、割とあちこちで言及しているのですが、「コンサルタント」と「SIer」の2種。


特に意味もなく、まずはコンサルタントから。
初めに、彼らが行う「コンサルティング」というモノについて少々紐解いてみましょう。
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%82%B5%E3%83%AB%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

コンサルティング (consulting) とは、業務または業種に関する専門知識を持って、主に企業(まれに行政など公共機関)に対して外部から客観的に現状業務を観察して現象を認識、問題点を指摘し、原因を分析し、対策案を示して企業の発展を助ける業務を行うことである。
-中略-
そもそもコンサルティング企業とは、「業務における問題の発見・解決策の提案・業務の改善の補助、経営戦略への提言、などを中心に、企業の様々な業務を効率化するための提案自体を売り物にしている企業」 のことを言う。
-中略-
コンサルタントは専門知識を要していることはもちろんだが、様々な企業に接し経営改善を行っていることから広範囲の知識・経験を有している。そのため、企業はコンサルティングを依頼し自社において発見できない問題をコンサルタントに、他業種との関連、広範な視点から発見させ、その後自社の有する専門知識を加味してより効率の良い経営を行うことが可能になる。

端的に言うと「対象となる専門業務を含む広範囲の知識を以て相談者からの相談に対する提言その他を行う事」だと思われます。
まぁうちのBlogですので、概ね対象はいわゆる一つの「ITコンサルタント」とかいう方々を中心に考えているのですが。
ITコンサルタント、というからには「ITの業務知識を含む広範囲の知識を持っている」方々である、という事になります。


一端ここでSIerさんのお話に移ります。
同じく、SI(System Integrate)とはなんざんしょ? という話になります。
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC

システムインテグレーター(英語:System Integrator)とは、情報システムの開発において、コンサルティングから設計、開発、運用・保守・管理までを一括請負する情報通信企業である。SIerエスアイアー)とも呼ばれる。
-中略-
日本におけるシステムインテグレーターアウトソーシングの一環として流行った業態である。システム開発を、システムのオーナーとなる会社(クライアント)から一括請負して、完成までの責任を負う主契約の相手(プライム)になる。プライムは個々の作業を副契約の会社(サブコントラクター、サブコン)に発注する。
日本において、システムインテグレーターパッケージソフトウェアやSaaSの販売、アプリケーションサービスプロバイダなどを行う場合もあるが、フルオーダーメイドの受託開発が一般的である(後述)。つまり下請けを組み合わせて1から作るのが、日本のシステムインテグレーターである。

*1


http://d.hatena.ne.jp/keyword/SIer

SIer とは、System Integrationの略称SIに「〜する人」を意味する-erをつけて「System Integrater」とした造語であり*1、エス・アイアーと読む。System Integrationとは、個別企業のために情報システムを構築することであり、戦略立案から、企画、設計、開発、運用・保全までトータルに提供するSIerもある。システムインテグレーター

一頃でまとめると「情報システムを初めから最後まで一式いける人」という感じでしょうか。


さて。
「ITの業務知識を持つ」「情報システム一式いける」の双方に共通するのは、当然ながら「相応の技術力がある」という事です。
もちろん。技術力があるだけでは、コンサルティング、SI、ともに成立しませんが。少なくとも相応の技術力がある事は前提なのではなかろうかと、私は思います。
結局のところ、彼らの職分を大雑把に発言するなら「顧客と技術が手をつなげるための仲立ちをする」わけですから。ある意味通訳さんです。通訳である以上「双方の言語に対してある程度堪能である」必要がありますよね? より正確には「双方が堪能であり且つ双方を行き来させる事が出来る能力を持つ」必要があるのですが。
というか。技術力がないのに相談に乗ったり提案や設計をしたり、というのが「どうやったら可能なのか」、私には皆目検討もつきません。
是非一度「英語が全く出来ないけど 英語<->日本語の通訳をやってます」などという通訳の方を拝見してみたいものですが。


例えば。
アルゴリズムのチョイス一つ、プログラムのちょっとした記述一つで、速度が数百倍とか平気で変わったりするものがあります。特に「ある程度以上タイトな性能が要求される案件」について、チューニングは決して無用なものでは有り得ないのですが(横にマシンを展開するにしても相応のcostがかかりますから)。
ちょっとしたクラスの切り方などで、その後の保守メンテナンス性がいっそうんざりするほど変わるのは、少なくとも「ある程度以上のまともな技術者」の間では、周知の事実といっていいでしょう。
「有名で一般的に使われている技術」と「対象案件において適切な技術」が必ずしも一致するとは限りません。正直、どの案件も、少なくともすこしは「変な案件」なのですから*2
設計の仕方一つで、保守費用が呆れるほどに上下したりします。それこそ「マニュアルに沿って素人が通常業務で片付けてくれればエンジニアなんか"ド最悪の例外時"以外は不要」なものから「毎年億単位の保守費用が必要です」まで。
一言で片付けると、技術の「質の問題」になります。
この、素人である顧客が見抜けない質を確保するのは、コンサルタントやらSIerやらの職分の一つだと思うのですがどんなもんでしょうか?


これだけ長々と前置きを書いた理由は簡単です。
正直。これまでコンサルタントさんやらSIerさんやらそれなりの数拝見してますが、まともな技術力持った人をほとんど拝見した事がないです。
よしんばでは「技術力がない」のを受け入れるとして。「自らに技術力がない事を理解して、でも技術力が必要なファクターの一つである事も理解した上で、学ぶ姿勢なり謙虚に質問する姿勢なりを持ち得る」人ですら希でした。
「二者をつなげる」職分を持つ一つに営業さんという方々がいらっしゃいますが。営業さんのほうが、そのあたり真摯な方が多いですね正直。


私の大好きなゲームの話によるたとえで恐縮ではあるのですが。
コンサルティングやSIって、いわゆる「上級職」だと私は認識しています。
つまり、相応の「技術者としての現場経験」もあり、当然ながら「別のジャンルの現場経験」もあり。そういった方が、それらの経験を踏まえた上で初めて出来るのが、コンサルであったりSIであったりするのではないでしょうか?
正直に言えば、若い子が「僕コンサルタントです」と言っても、全く信用出来ません(いやまぁ年食ってるから信用できるかっていうとそうでもないのですが)。
挙げ句「僕はプログラムとかそんなものには興味なくてもっと上流だけをやってたいんです」とかいう、捻子とか歯車とかが一通り狂いまくってるとしか思えない玉言を、別ルートで数回頂戴したことすらあります。
両輪の片側である技術をそこまでおろそかにして、お客様にどんな提言をなさるつもりなんでしょうか?


一度、是非そういう方に突っ込んでみたいのですが(いやまぁやってますが)。
コンサルティングって、SIって、なんですか? その職分とはなんなのですか?」
技術。業務知識。経営を含む戦略。最低でもそのあたりは「一式、高レベルで兼ね備えてこそ」のコンサルタントでありSIerだと、私は思うのですが。
でなければせめて自分が出来ていない事くらいは理解した上で、学ぶなり教えを乞うなりといった謙虚な姿勢が必須だと思うのですが。


或いは。
「技術力なんて大して必要ない」というのであれば。「もの凄い技術力を得た上で」同じ台詞を是非おっしゃってみていただけませんか?
「学歴なんて関係ない」という発言を。高校中退の人間と東大卒の人間とが言った時に。どっちが説得力ありますか?*3
否定するからには「相手を十二分に理解した上でその土俵でそれなり以上の実力を得てから」ってのが必要だと思うんですが。


どんなもんなんですかねぇ?


追記
本文ではなくて、コメントの方への反応で恐縮なのですが。
ひがやすおさんの
SIerが必要としているのは業務知識だという都市伝説
http://d.hatena.ne.jp/higayasuo/20080619/1213849065
のコメントで、「元SIer」さんという方がコメントを書かれていますが…壮絶です。
この方、業務知識に対してはずいぶんと重要性を説かれているのですが(それは否定しません)、技術に対しては驚くほどに軽視されています。っつか、この方が「技術力皆無」なのは、このあたりの記述から容易に予想が出来ます。

SIerに発注をかける規模の顧客で求められることは、業務システムの構築であってその中身が高度で先進的な技術で構築されているかどうかは問われません。

当たり前ですが、業務システムは長いと10年近く使われるものもあり、基幹業務の基幹ロジックになると数十年使われるものもありますから。また、企業の業務というものは大きく変わる(新規開発する)ことは少なく、むしろ法令の改正や、細かいルール変更に対応するような(保守開発の)機会が多くなるからです。つまり、新規開発の割合よりも保守開発の割合が多いのが企業の業務システムの特徴と考えればよいでしょう。
そうなったときに、一時的な流行りや個人の思いつきで書かれたプログラムは問題外として、変にテクニックを駆使して書かれたプログラムほど厄介なものはありません。むしろ保守作業で技術力の高いプログラマの調達が必要になったり、その部分を一から書き直したりすることまで発生するためテクニックを駆使したプログラムが嫌われたりします。自分自身では生産性を高めたつもりであっても、システムのライフサイクルから見れば厄介な種を仕込んだにすぎません。企業の業務システムは、一人でメンテナンスできる規模の話ではなく、また個々人のボランタリ精神に頼って済む話でもないのです。業務改善の必要性が出る時期(法令施行時期など)までに、必ず改修する必要のある話です。

結局、SIerを求めるような企業にとっては、システムのライフサイクルこそが重要なのであって、一時期さらには一担当の生産性や記述テクニックの高度さなどはむしろ邪魔であると言い切ってもいいかと思います。だからこそ顧客データ数千万件を抱えるような企業においては、いまだにホストコンピュータやCOBOL言語を利用し続ける企業が後を絶たないのです。2000年問題の際に、そういった個々人が思いのまま書いた箇所を一から書き直している姿を多々目にしました。

・一時期、基幹業務システムをLAMPなどの基礎技術を利用して「枯れた技術で構築したからモウマンタイ」と抜かしてた企業がありますが、他人事ながら個々末端に至るまで枯れた技術だったのかどうかが不安になります。一部のメンバーがその時期にたまたまはやっていたテンプレートエンジンなどを使っていて、それがメンテナンスされなくなっている可能性などがないのか?ブラウザのバージョンアップに耐え切れないのではないのか?そこまで考慮したうえで利用する技術を選定する必要があると考えます。それが企業の基幹業務システムを構築することの厳しさだと思っています。

なんていうか…突っ込みどころありすぎて。
無知蒙昧というものが如何に恐ろしいものなのかがよくわかります。
せめて。きちんとした礼儀で質問さえしていただければ。快く、且つある程度とはいえ丁寧に説明してくれる技術者は、多いかはわかりませんが、希ではない、と思うのですがねぇ。

*1:尤も。「本来のシステム・インテグレーターは、複数のベンダから汎用のパッケージソフトウェアやハードウェアなどの完成品を購入して、1つのシステムとして組み合わせる事業に特化した企業のことを言う」という記述もあり、この記述を基準にする場合、今回の議論はSIerにはあまり当てはまらないかもしれない。

*2:元ネタ:我々は皆 少しずつ狂っている

*3:とはいえ。東大卒で「僕は低学歴ですから」もどうかと思いますがねぇw > 某氏