Time is money

日常のこと、web関連、映画の感想について書いていきます

いいエンジニアって何だろう

学生というブランドを捨てて、エンジニアとして社会に出てから半年。

いつも考えていることがあります。

「いいエンジニアって何だろう」

まだ答えがわからないのですが、今考えていることを書き起こしておこうと思います。

f:id:okutaku:20170122000100j:plain

皆、自分の役割の中で、「いい経営者」「いいデザイナー」「いいセールス」「いいマーケター」「いい料理人」「いいクリエイティブ」って何だろうって考えて、自分なりの姿に近づこうとしていると思います。

「エンジニア」の定義

ここでいうエンジニアとは、IT系のことで所謂プログラミングです。自分では当たり前と思っているけど、それは僕がIT業界にいるからだと思います。どの業界のエンジニアも作り手であることには変わらないと思うのですが。

「いいエンジニア」って何だろう

すぐに本題に入ります。これまで様々なエンジニアに会ってきてました。

元いた会社で言えば、本を出版したり、OSSにコミットしていたり、コンサルをしていたり、マネージメントをしていたり、会社を経営していたり。周りで言えば、モバイルアプリを作っていたり、ハードを作っていたり、コミュニティを運営していたり、起業していたり、趣味でプロダクトを作っていたり。本当に多種多様なエンジニアがいて、その誰もが一目置く方々です。

能力で見たら、複数の言語を扱えたり、複数のフレームワークを扱えたり、実装が丁寧であったり、爆速だったり。グロースハックにコミットしたり、SEOに強かったり。いろんなエンジニアがいます。欲をいえば、全ての立場を経験して、全ての能力を持っている全知全能的なスキルセットが望ましいと思うのですが、現実はそうは行かず、趣味志向があって、得意不得意があって、はたまた宗教チックなことがあって。

プログラミングはあくまで手段だという言い切る人もいれば、プログラミングすることを目的にしている人もいるという意見があって。これは科学研究でいう基礎研究と応用研究だと思っていて、どちらもないと意味がない。卵が先かニワトリが先かという問題に発展してしまいそうなので、深くは言及しません。

色んなエンジニアがいる中で、「いいエンジニア」なんて定義できるはずもなく、そもそも「良い」という基準は主観的で、ある経営者から見たら、何でもできて実装も高速で堅牢でオラオラにならないエンジニアが良いとされて、あるエンジニアから見たら一切の無駄がない綺麗なコードを書く人が良いとされるかも知れません。

詰まるところ、自分の考える「良いエンジニア」って絶対的な基準はなくて、誰にどう思われたいかで決まる気がします。雇用される立場から見たら、プロダクト志向のエンジニアが良くて、同業からみたら技術的に深いエンジニアが良いのかなと思います。

現状どうなの

大学時代にプログラミングを始めて、学科が化学系だったこともあり、実験・レポートが忙しすぎて、書いている量としてはそこまでではありませんが、歴としては4年くらいになります。誰にも負けないものは何かと言われれば、やっぱりRailsを用いたアプリ開発で、サーバーを1から構築したり、自分でプロダクトを作って公開したりしていました。実装は早い方だと勘違いしています。現在はベンチャーのサーバーサイドを担当していて、web周りは全て見ています。

能力的にみたら、全然大したことなくて、モバイルもマーケットに公開したことはあるにせよ、WebViewを使ったブラウザアプリであったり、Railsを4年近くやっていると言っても、RubyRailsのコミッター、コントリビューターでもなければ、gemを作ったこともない (何を作れば良いのかわからない)。Qiitaに投稿するようなネタもないし、LTすることも思いつかない。SPAは開発したこともあるけど、そんなに大規模のものは作ったことがないし、インフラ周りも1から構築できるとは言っても負荷分散やエラー検知までの周辺の知識も経験もない。

エンジニアの能力の深さって、あるところで域値を迎えると思っていて、今自分はそこにいると感じている。やりたいことをググれば、大抵のことはわかって実装までいける。ライブラリで困ったことがあってもドキュメントを読めば大抵のことは解決できる。ロジック的なことで頭を抱えても、どうにか迂回策を思いつく。社会人になって、半年しか経ってないけど、毎日コードを書いているので、できることの幅は広がった。だけど、深みがない。気がしている。一番怖いのは何でもできるエンジニアになって、器用貧乏になってしまうこと。そんなエンジニア、きっとすぐにリプレイスされてしまう。今は解散してしまったけど、SMAPが言う、No. 1ではなくてOnly 1のエンジニアになりたいと思いつつも具体的な行動に移せてはいない。今に全力投球しすぎて。

自分のエンジニアとしてのルーツを辿ると、劣等感というか負い目に感じることがある。自分は情報系の出身でもなければ、幼い頃からプログラミングに親しんできたわけでもない。ちょっと新しいことを始めたいと思って始めたプログラミングにハマっただけ。プログラミングを書くことが好きで、フロー状態でいつまでも書いていられる。研究生活で心の底から辛いと思ったことはあるけれど、プログラミングはそんなことはなかった。端から見たら相当ハードでも、楽しければ辛くない。そして、作ることが楽しい。自分が作ったプロダクトがユーザーに使われて、幸せになってくれたら最高だ。ここまで書けばわかるように、どちらかと言われれば、かなりプロダクト志向のエンジニアだと自覚もしている。ただ、RubyとかRails、Reactなど作った人を本当に尊敬しているし、いつかはそうになって行きたいと思っている。

ここからは受けいりになってしまうけど、将来的にエンジニアは3つのパターンに大別されると思っている。技術がわかる経営者、あるいはマネージャークラス、はたまた主に技術を行使するプレイヤー。自分はどうになって行きたいのか結論はまだ出ていないけど、しばらくはコードを書いていたいと思う。

ここまで、思っていることを書きなぐってきたけれど、そろそろ終わりにしようと思う。現状、自分が思う「いいエンジニア」は

課題解決ができるエンジニア

だと思っている。ごくごく当たり前かもしれないけど。言われたことをやることは簡単だ。こういう機能がこの期日までに欲しいんだけど、という要望に応えるだけのエンジニアでは不十分に思う。仕様書通りに実装するスキルもかなり大事だし、多分、完璧にこなせる人はそう多くない。だけど、自分が死んでも達成したいKPIに対して、何が問題になっていて、どうに改善すれば、どう数字につながっていくのか。それをインパクトとか工数、経営視点で考えられるエンジニア。そこを目指したい。当たり前だけど、この数年はがむしゃらにそこを追求したい。

まだ、「いいエンジニア」という答えがちゃんと捉えられていませんので、諸先輩方、ご指導ご鞭撻よろしくお願いしますm(__)m

今年の目標は「全力コミット」です。

追記

かなりの先輩エンジニアから言われたことですが、パワースポットを自分の中で決めておくといい。全力で走っていると、自分が今どこにいるとか、自分の心身の限界とか認知できなくなる。大きな仕事を終えた後に来る、一番怖いのが燃え尽き症候群。そういう状態に陥った時に、一歩立ち止まって、自分を俯瞰的に見るためにパワースポットを各々決めておくといい。

f:id:okutaku:20170121175110j:plain

僕の場合は、「土曜日の浜松町」。東京タワーのお膝元で、いつも賑わいつつも落ち着いた雰囲気のある場所で、プログラミングを始めるきっかけを与えてくれた場所でもある。浜松町近くにある、芝公園で一人でぼーっとするのがたまらなく心地よい。桜の名所でもあるので、是非一度訪れてみるといいかも。土曜日、というのは浜松町はサラリーマン街であるため、平日はブラックスーツが多い。土曜日は違った一面が見れてすごくいい。芝公園の芝生の上で、「あれ、自分って何でエンジニアをしているんだろう」とか「自分の目指しているところ、ミッションって何だろう」と考えるのが、中二みたいだけど、好きだ。当然、明確な答えは出てこなくて、結論「今に全力で!」って単純化されてしまうけれど、充電できるので良い。これからも、全力でやりつつ、心が折れてしまわないように、定期的に訪れたい。