やりたいことに気がついたかもしれない
なんか今日仕事していたら、ふと、自分が心からやりたいことに気づいたような気がするので、忘れないうちに今の思いを綴っておく。
今、やりたいこと
大規模だったり、やりたいことが複雑だったり、パフォーマンスが必要だったりして、技術的に困難なシステムを、堅牢に、またスピーディに作りたい。 言い換えると、「私は、大規模で多機能で高性能で、なおかつ安全かつスピーディな拡張が可能なソフトウェアを作るソフトウェアエンジニアです」と言える人間になっていたい。
今まで目指してきたもの
技術のスペシャリストを目指していたが、だんだんとものを作れる・形にできるエンジニアを目指すようになっていった。
学生時代~社会人1年目: 様々な技術を使いこなす、幅広い要素技術にめっちゃ詳しい人
とにかくコンピュータが好きで、コンピュータでできることには何でも興味を持った。特に、コンピュータ・ネットワークは本当に面白くて、最高だった。 コンピュータなんて一台でも面白いのに、通信して複数台で情報がやり取りできるなんて面白いに決まってる。分散コンピューティングを学んで、コンピュータを協調動作させるためには堅牢な仕組みづくりが不可欠であることを学んだ。 古典かもしれないが、GoogleSearchやGoogleFileSystem、BitTorrentの仕組みには本当に胸が踊るような思いだった。
技術に詳しい=優秀なエンジニアという図式が私の中でできていた。今になって、いや違うだろ…って思うけど、当時は本気でそう思っていた。
優秀なエンジニアになるために、私はいろいろなスキルや知識を身に着けた。
- プログラミング言語
- 機械学習
- DeepLearning
- SVMとか
- Linux
- Webフレームワーク
- Ruby on Rails
- PlayFramework
- SpringFramework
- コンピュータ・ネットワーク
- 競技プログラミング(チョット)
- 応用情報処理技術者試験
こうやって振り返ってみると、「これってなんのために身に着けたの?」って感じるスキルセットだ。 なんかくくりが全然違くて妙に散らかってるかと思えば、同じ用途のフレームワークを複数学んだり、プログラミング言語だって多すぎる。
まあそれもそのはずで、特にやりたいことっていうのはなかった。 新しいことを覚えて、それをつかってなんか小さいものを作って満足するっていうのを繰り返していた。
社会人一年目は実務でプログラミングをしなかったので、暇な時間を使ってScalaで遊んでいた。
社会人2年目: 作れるエンジニア
そんな調子でいたら、ようやく実務でプログラミングをする機会を得た。
プログラミングはずっとやってきたから余裕やろ(^^) 研修でも優秀な成績を収めてたし、とか思ってたら、ここでとても大事なことに気づく。
「おれ、ちっちゃいものしかつくったことねーわ」
業務で作るプログラムは、当然のように規模が大きいシステムの一部だ。 全体はでかいけど自分の作る範囲は小さいので、コードを大量に書くわけではない。 それでも、全体の規模が大きいということはコードの書きやすさに大きな影響を与える。
すでに既存のコードがあるということは、すでに作られている仕組みに則って作るということだが、規模が大きすぎて何をやっているシステムなのか、どこにルールがあるのかさっぱりわからなかった。 また、自分の書く部分でも、このクラスはどんな使われ方をされるだろう、読む人は何がどこに書いてあれば読みやすいだろう、ということを考えながら書くのも初めてだった。
また、システムがどんな仕様を持っていればよいのか?を考えるのも非常に苦手だった。ということにも気がついた。 どんなフローでユーザーを誘導するのか?どんなエラーが起こりうるか?こういったシステム設計の言わば基本みたいなところが、ぜんぜん身についていなかったことに気づいた。
そんな体験を通して私は気づいた。
「おれなんもつくれねーじゃん」
焦った。クリエイターであるはずの私が、何も作れないのである。 この頃から「作れるエンジニア」を志すようになる。 何のために作るのか?今一番作るべきものは何なのか?つくったものをどのように使ってもらうべきか? そんなことを考えるようになっていった。 サービス・ビジネスのことも考えなければということを、誰の受け売りかはわからないが、思っていた。
同時に、システム設計の方法を学んでいくようになる。
これらの知識は、「作る」ために私に足りていなかった部分を大きく補ってくれたように思う。
そして、「作れるエンジニア」になるために、まあいろいろあって転職をした。 今は転職して1ヶ月経ったところ。当初の望み通り、存分に作る仕事をやらせてもらっている。
本当にやりたかったことと、目指してきたもののギャップに気がついた
私が本当にやりたかったことは、技術を駆使して自分にしか解けないような難しい問題を解く、ということなんだと思う。
社会人として生きているうち(環境が大きいと思う)、お金になるものを作らなければ行けない、という考えが芽生えていった気がする。だから、ビジネスの視点を持ったエンジニアに~とか、Webサービスで世の中にイノベーションを起こして~とか、全然思っていなかったけど、そういう方向を目指していた。
自分で自分に目隠しをして、大きな音の鳴っている方向に進んでいたような、そんな気がする。
目指したい方向性が見えてくると、やらなくちゃいけないことの方向性もだんだん見えてくる。 それで、今思いついているやらなくちゃいけないことっていうのが、もう本当にびっくりするくらい、楽しそう、やりたいことなんだよね。多分今度こそ、自分の気持ちに気がついた気がしています。