学生エンジニアと話す機会が増えました。
先週、学生エンジニア向けインターンTreasureの講師を担当したのです。私はサーバサイドエンジニアリングの領域が担当で、Web API設計やPHPによるAPIサーバの実装、TDDなどについて講義しました。学生は20名ほどおり、みんな熱心に予習をしてきており、その学習意欲には驚きました。実習を交えつつ、講義を進めながら、黙々と作業に没頭する彼ら彼女らをみていると、学習することの楽しさと未知であることに触れる素晴らしさを改めて感じます。誰も生まれた時からプログラムを書くことが出来る人はいません。コツコツと何かを続けていって、いつの間にか自分の考えたものがつくれるようになっている。そういうものだと私は感じています。昨日できなかったことが、今日はできるようになった。昨日これっぽっちもわからないと思えたことが、今日は少しわかったような気がする。その積み重ねが、また次のステップに向かう気持ちを後押ししてくれるのです。
そんな彼ら彼女らをみて、私が職業エンジニアになったときの決断を思い出しました。もともと私はエンジニアとして働こうという気はあまりありませんでした。エンジニアとして働くというのはとても大変なことで、覚えることが多くて、しんどい仕事だと思っていたからです。毎日毎日知らないことと触れて、自分よりもエンジニアリングを知っている人たちに囲まれて、それでも自信をもってやっていくことができるのだろうかという漠然とした不安があったのです。エンジニアというのは何でも知っているように見えます。Webに携わるエンジニアのカバーしている領域というのは、とても広いです。Webの仕組みについて知るのはもちろんのこと、Webブラウザのこと、どのように心地よいインタフェースをつくるかを知ること、使いやすいWeb APIとその設計のこと、セキュリティのこと、ネットワークと通信の仕組みのこと、サーバを運用する方法、Linuxについて知ること、データベースについて知ること、データを分析する方法、デプロイの仕組み、継続してテストをする仕組みの作り方、チームでの快適な開発の仕方、良いコードを書き方、そして良いサービスをつくる方法を探り、それらを追い続けること。なんと知らなければならないことが多いのでしょう。知らないことを知ろうとして領域を見渡そうとすればするほど、その境界が遥か遠くに離れているのではないかと思わされる時があります。終わりが見えないのです。
そうしたことを想像すればするほど、職業としてエンジニアをするのはとても大変なことなのだ、ああ難しくてそれを仕事とするのはとても怖いことなのではと思っていたのです。それがある日、そういった気持ちを全部ひっくり返して、エンジニアになる覚悟をしました。もうきっと私にはそんな大それた多くのこと、素晴らしい先人たちがつくってきたコンピュータと、それを成り立たせている計算機科学の世界に入って、それを実世界に活かすという大それたことはできない、そう思っていたのにもかかわらず、なぜかやはりそこをやりたいと思ってしまったのです。ああ、もう今でもそれが正解か失敗かなんてわかりません。でもそのときにしたのは、エンジニアになるという覚悟でした。それは、やはりそこを知りたいという気持ちと、ここに書いたようなことが面白いと感じることを続けること、そしてそれを知る努力を辞めない覚悟でした。好きになって、素晴らしいと感じたことに携わって、それを知り、自分から少しでも関わりたいと思えたからこそ、あのときエンジニアとして働き始めることができました。どんなに難しく感じても、やっぱりインターネットが好きだし、コンピュータが好きだという気持ちは変わらない。だから学び続けられる、と思ったのでした。
これは大学院修士2年になるころのことです。そういう経緯で私はエンジニアを職業とすることにしました。その後はTrippieceを作ったり、引き続きWebの研究を続けていきました。徐々に後輩たちも職業を選ぶ時間になって、「エンジニアってどうですか?」と聴かれた時に、僕はしばらくエンジニアという職業を薦めることができませんでした。いや、正確には今もなかなか薦められません。どうしてもエンジニアリングが好きだと思える人じゃないと、辛くなった時に好きでい続けられるかと心配してしまうのです。だから今でも職業としてエンジニアをやることを薦めることは少ないのです。聞いてくる人は悩んでいるということなので、なかなか答えづらいのです。でも私も悩んでいましたから、当時の私にそういう質問をされていたら、「君はエンジニアにならないほうがいいね」と言ってしまっていたかもしれません。
さてそんな覚悟をして今こうしてエンジニアとして働き始めて、少し考えが変わったことが有ります。変わったというより、職業とし始めてからわかったことがあります。
1つ目は、最初から全てを知ろうとしなくても良いということです。少しずつ、自分のわかる領域からちょっと広げていくように、少しずつ、学んでいけばいいのです。学ぶという点においてより大事なのは、毎日、毎時間、少しずつ学び続けることです。自分の好きなことへの興味を持続しさえすれば、遅くても早くても確実に何か自分の目指しているものに近づいていくということです。
2つ目は、チームで働くことの楽しさです。私は全てのことを知ろうとしましたが、実際には専門となる領域をもったメンバーが集まると、彼ら彼女らに頼ることができるのです。これは素晴らしい経験です。そこには年齢は関係なく、素晴らしい知識や知見を持っているメンバーが多くいます。私はメンバーを尊敬していますし、よくほかのメンバーから学びます。そして頼ります。それで良いのだと、思っています。もちろん、自分が学び続けていないとあっという間に自分が提供できるものはなくなっていってしまいます。だから、お互いに学ぶのです。そしてそれが楽しいのだと思います。
3つ目は、オープンであることの素晴らしさです。コードもコミュニケーションも、オープンであることは素晴らしいです。社外社内の枠に関わらず、エンジニアというのは常に学ぶことが出来ます。自分の使っているサーバプロセスがなぜそのような挙動になってしまったのか、ということを知りたければコードを追って原因を特定することが出来ます。もちろん、普段使っているサーバのOSだって読むことが出来ます。コードによるコミュニケーションだけでなく、実際にそうした身の回りの開発者と会って、話をすることができます。そこにはいつも何かしらの発見があります。そして自分自身から発信すれば、またそこから得るものが有ります。少なくともこのエンジニアという職業には、こういった場やオープンな物事から学ぶ機会が、星の数ほどあります。
私自身が想像していたよりも、エンジニアとして仕事をすることはとても楽しく、刺激的なことでした。エンジニアになるという決意をしてからは、ぐっと加速して色々なことを知り、手を動かし、それまでは触れることも出来なかったものを経験することができるようになりました。計算機というのは、本当に素晴らしいものです。そして今も時間を見つけては知らないことを知っては学び、さらに知らないことを見つけることを続けています。