本誌は、「生涯エンジニア」というテーマの下、OSSで活躍する著名なエンジニアの方々に自身の経験を振り返りながら、若手エンジニアへのアドバイスをお願いしている。今回も引き続き、Rubyの父として知られる、まつもとゆきひろ氏にご登場いただく。

前回は、どういう理由からRubyの開発を始め、どのようにしてコミュニティを形成するに至ったかについて話を聞いた。今回は、エンジニアがステップアップしていくために必要なものを教えてもらう。

エンジニアがステップアップしていくために

――前回は、まつもとさんご自身がどのような道を歩んできたのかについてうかがいました。続いては、若手が成長するための方法についてお尋ねしたいと思います。「エンジニアの幸せ」を実現するにあたっては、技術を磨いていくことも重要だと思います。若いエンジニアがこれからステップアップしていくためにどんなことが必要だとお考えでしょうか?

まつもとゆきひろ - ネットワーク応用通信研究所フェロー、楽天技術研究所フェロー、Rubyアソシエーション理事長。社会人3年目の1993年にオブジェクト指向スクリプト言語「Ruby」を開発。記述の簡単さなどが開発者から支持され、現在では世界中で広く利用されている。最も著名な日本人ソフトウェア開発者の1人。

まつもと : 今この場でパッと思いつくのは3つですかね。

まずは、向上心を持つというのが大前提です。当たり前と言われそうですが、傍から見ていると向上心がないようにしか見えないエンジニアが多いのには驚きます。

例えば、私は他の人が書いたプログラムを見る機会が結構あるんですが、何をやっているのか訳の分からないコードを書いて平然としている人がかなりの割合でいるんですね。「何でこんなコードを書いたのか」を聞くと、「動いたから」と返してくる。時間が経ったときに、あるいは他の人が担当することになったときにどうやってこのコードをメンテナンスできるんだと……。

他に多いのは、「これで教わってずっとこれでやってきました」という返答です。確かに昔はそれでよかったかもしれないけれど、状況が明らかに変わっているのにやり方を全く変えようとしないのはおかしい。愕然とする事実ですが、そういう職業プログラマが多いのが実情です。

エンジニアとしてステップアップしていくために、向上心を持って常に自分のベストを尽くす。これは大前提です。

今はインターネットが当たり前に普及しています。梅田望夫さんの「高速道路論」にもあるように、本気で学ぼうと思えば圧倒的な量の情報を得ることができる時代です。事実、若い世代のプログラミングの能力は上がってきています。私が審査員を務める20歳以下のプログラミング・コンテストには、面白いプログラムを作ってくる学生が多いですし、中学生でRubyのコミッターになった福森くんの例もあります。向上心さえあれば、技術や知識を高める環境があります。技術がついてくれば、プログラミングも楽しくなってくるはずなので、とにかく向上心を持って取り組んでほしいと思います。

2つ目は、自分の意見を持ってはっきりと主張することです。

ソフトウェアを作るには技術的にさまざまな選択肢があります。どんなツールを使うか、どの言語を採用するか、どんなアルゴリズムで作るか、などです。そういうことを、私は極力自分で決めたいと思ってきました。

私は仕事にはこだわりがあって、常に最高の仕事をしたいと思っていますが、それを理不尽な理由で妨げられることが許せないんです。例えば、諸般の事情で生産性がよろしくないツールが導入されそうになったときは猛烈に反対したこともあります。私は雇われプログラマでしたが、そういうことについてはかなりはっきりと意見を主張してきました。Rubyを作ったのは言うなればその自己主張の極致で、私のわがままを実現したようなものです。読者のみなさんにも、自分の意見をはっきりと主張してほしいと思います。

3つ目は、ステップアップというとちょっと違うかもしれませんが、自分の隙や欠点を受け入れることも大切だと思います。

Rubyがどうしてここまで普及したかということについて、ある人からこんなことを言われました。「あまりにも完成度が高すぎると取り付く島がない。適度な隙があると、何でこれができていないんだ、と思って手を差し伸べたくなる」と。

実際、私はUNIX技術者で、WindowsやMacではプログラミングができません。隙だらけですよね。RubyがWindowsやMacで動くのも、コミュニティ・メンバーの助けがあったからです。今では、スーパーコンピュータでもRubyを動かせるようになっていますが、私一人ではとてもそこまで広げることはできませんでした。

仕事でベストを尽くすのは当然ですが、誰しも隙や欠点があるものです。その欠点にナーバスになって直そうと躍起になるよりも、隙を受け入れた方がいろんな人が手を差し伸べてくれるようになるんじゃないかと思います。「握手できるアイドル」ではないですが、近さを感じると応援したくなるのが人情です。同じやるなら周りから愛された方がやってる当人も楽しいはずです。

OSSコミュニティの使い方

――前回、福森くんの話が出ましたが、エンジニアが自分の腕を磨いていくための場として、あるいは、一生涯プログラミングに関わっていく場として、OSSコミュニティは有効なのではないかと思っています。その辺りはどのようにお考えでしょうか?

まつもと : その通りだと思います。先ほどの話とも関連しますが、向上心が感じられないエンジニアが増えるのは、プログラミングの世界にふるいをかける仕組みが全くないことが一つの原因だと思います。

例えばスポーツの世界では、小学校、中学校、高校と進んでいく中で生き残った優秀な人がプロの世界に身を置いています。片やプログラミングの場合は、大学を卒業してプログラミング未経験者でも職業プログラマになれてしまう現実があります。それがいいか悪いかは一旦置いておくとして、そういう環境が、ひどいコードを書いても平然としていられる職業プログラマを生む土壌になっていると思います。

野球の例で言えば、OSSのコミュニティは、レベルの高い草野球あたりに位置づけられると思っています。ふるいの機能を果たすかは疑問ですが、自分の腕を磨く場所としてはもってこいだと思います。

――OSSコミュニティに関わる人がどういう風になっていってほしいとお考えですか?

まつもと : Rubyに関して言えば、その人が一番満足する形でコミュニティを最大限活用してほしいと思います。勉強に使ってもらってもいいし、コミュニティの実績で自分を売り込んでもらってもいい。そうやって、コミュニティからどんどん羽ばたいていってほしいと思います。それが、その人の「エンジニアの幸せ」になると嬉しいですね。