業務システムにおけるアジャイル その4:「知」のオープン化
はじめに
#中佐藤です。
前回の締めの言葉として「次回は『目利き』の話」と書きました。
今回は厳密に言うとアジャイル開発の話ではありません。しかし私がアジャイルのコンサルやコーチをしている過程で、根幹の問題はこれだよなと思うことがあり、この連載の一環として書いてみます。
時には昔の話を
#しばらく昔話にお付き合いください。
私は学生時代は言語学が専門で、つまり完全な文系です。それなのになぜか、新卒で入社した機械メーカーでいきなり情報システム部に配属されました。
コンピューターやプログラミングはほぼ何も知らずに配属され、最初に教えてもらった言語は汎用機COBOLです。
レガシーシステムの典型として何かとやり玉に上がる汎用機&COBOLですが、その後オフコン・Unix・Windowsサーバーと、割合短期間でいろんなプラットフォームを経験しました。おかげで、10年程度の間に、汎用機からオープン系までさまざまな開発環境の「感覚」を身に付けられたことは幸運だったなと思います。
こんな風に複数プラットフォームでのシステム開発を経験してきましたが、当時気付かなかったことで後から考えて改めて気付いたことがあります。
それは、オープンになった/しなければいけなかったのは、システムだけではないのだな、ということです。
汎用機での開発
#汎用機の世界でのシステム開発というのは、実はある意味「楽」です。
私が汎用機で開発していた頃、技術的にわからないことがあるとどうしたかというと「先輩に訊く」の一択です。これで答えが返ってこないことはほぼありません。
インフラ周りの話で先輩の知識の範疇外のものであれば、汎用機メーカーの担当SEさんに訊きます。ちなみにこのSEさん、ほぼ毎日担当する会社(私の所属する会社)にいらしていました。メールも携帯もない時代、直接訊くのが一番早く、SEさんもそれがわかっているので、日参されていたのです。
そのため、新人の私は最初のうち、自分の会社の社員とこういう別の会社の方の区別がついていませんでした。つまり、社外の人でもほぼ「社内の人」だったのです。
インターネットもない(一般的に使われていない)時代、とにかくわからなければ誰かに訊く、その人が知らなければ「多分あの人が知ってるよ」と教えてもらえる、これですべてが解決する世界です。
さらに汎用機の世界は、社内でゴリゴリにカスタマイズします。つまり同じメーカーの汎用機を使っている会社であっても、他社では開発・運用の環境は全く違っていたりする。
そのため、この頃仮に経験者が他社に転職したとしても、その会社の環境に慣れるのに相当の時間がかかるのが当然。それもひとつの要因で、転職者が少なかったのです。
いわば「人」も「知」もクローズドな世界でした(それが当たり前だと思っていました)。
現在、レガシーな基幹システムの移行が困難、とよく言われるのは、実はCOBOLという言語の問題ではなく、こういう各社独自に築き上げてきた環境の移行の難しさだと思っています。
オープン化の波がやってきた
#さて、ここにオープン化、マルチベンダーの波が来ました。
私の担当したシステムはOSがHP-UX、そこにOracleをインストールし、クライアントはWindowsOSでVisual Basicのプログラムが動く、という環境です。
いろいろなベンダーさんの技術を組み合わせるので、今までのように特定のベンダーさんのSEさんに質問すればOK、とはいきません。
さらに社内でも先頭を切ってオープンシステムに取り組んだチームだったので、社内の誰に聞いても知っている人がいない。ここでやっと「ググる」という技を覚えました。
知識を得るため、外部のセミナーに参加する機会もこの頃から増えました。
何が「オープン」になったのか
#その後、この機械メーカー(ユーザー側)からベンダー側に転職し、特に現職でさまざまな会社様の「内製化・アジャイル開発」のご相談を伺う際に、違和感を覚えることがありました。
それはその会社が「確かにLinuxとかオープンシステムは使っているけど、人や知はオープンになっていないな」ということです。
外部の情報を知らない、セミナーやイベントに参加して自分からその情報を取りに行くこともしない。そういう会社の方が情報を得るためにどうするかというと、出入りの”業者”(ベンダー)に聞くのです。つまり、汎用機時代と同じ振る舞いです。
当然ながら聞かれたほうは自分たちに都合のいいこと、自分たちの知っていることだけを話します。
その情報だけで判断し、自ら動いて外部で情報収集をしていないと、前回のような問題が起こります。ベンダーが言っていることの妥当性が判断できないのです。
気付いてください。「オープン化」という言葉が謳われた時点で、言語やOSや開発環境と一緒に「知」がオープンになっていたことに。
「内製化」とは何か
#つまり、オープン系技術を使うのが当然の今の時代になっても開発者のPCでインターネットを使えないようにしている、などという会社がもしあるとしたら、それは汎用機時代に「知っている先輩に一切質問をせず開発しろ」と言っているのと同じことだということです。セキュリティを重視するあまり、これをいまだにやっている会社があるのであれば、このたとえでそれが何を意味しているのかは、理解してください。
アジャイル開発は、内製化とセットになってご相談いただくことが多いです。ただ、その際に「何をもって内製化というのか」はちゃんと議論が必要です。
私は「プログラムをすべて社員が書くこと」が内製化ではないと思っています。これをしようとするには、現在のシステムはあまりにも複雑だし、組み合わせる技術も多い。
しかしながら、それぞれの技術の「目利き」ができる必要はあり、そのためには常に最新の技術にアンテナを張り、その必要性をこれまでの経験を踏まえて理解し、ベンダーの言っていることの妥当性が判断できる必要がある。
このために、外部の情報を継続して得て、セミナー等に積極的に参加し、技術書を読み、時には自分で環境を作り、(最低でも)チュートリアルレベルのサンプルプログラムを動かしてみる、これをする必要があります。
一時的に「リスキリング」教育を受ければ終わるわけではない、この振る舞いを継続しなければいけません。
マネージャーや人事部門は、こういう人材を採用し、育成・評価する必要があります(そうでないと、そういう意欲のある人から辞めていきます)。
システム開発だけではなく、こういう人の育成も含めて内製化を考えてください。
まとめ
#今回は、個人的な昔話にお付き合いいただきました。
アジャイル開発とは多少外れた内容かなとは思いつつ、現在のお客様先で伺う悩みや、汎用機も含めた開発経験がある人間が今のうちに言っておくべきことかなという思いも込めた今回です。
次回は、ちゃんと(?)アジャイル開発の話に戻す予定です。