一人前のエンジニアになりたくて
プログラミングとの出会い
初めてプログラムを書いたのは、高校生の時。
インターネットが大好きで、もっと面白いものはないかと調べているうちに、プログラミングというものを知った。たしか、ゲームをつくろう、みたいな文脈だった気がする。
「初心者にはRubyという言語がいい」みたいな記事を読んで触ってみた(今の自分なら初心者にRubyはオススメしない)。コマンドラインの対話ゲームみたいなものを作って、弟とか彼女に自慢していた。でも、そのあと特に作りたいものもなく、一ヶ月もしたらピタリとやめてしまった。
初めてのアプリケーション開発
大学に入って数ヶ月で、「環境問題を解決したい!」という受験前の情熱も冷めてしまい、退屈な大学生活に飽々していた。 そのタイミングで、父親のシゴト(革製品の製造・販売)の手伝いとして、商品の在庫データベースを作ることになった。パソコンいつも触ってるからExcelとか得意やろ、みたいな適当な理由で頼まれた。
初めはExcelで作っていたのだが、工場と店舗をリアルタイムでつなぎたい、きれいな納品書や請求書を印刷したい、画像も管理したいとか、Excelでは実現できないと思い(今考えればExcelでもできそう)、たまたま所有していたFileMakerというアプリケーションを使って構築することにした。OfficeのAccessと似たようなもので、データベースのスキーマやリレーションを定義して、入力画面や印刷画面をGUIでつくり、ボタンを押したときの挙動を、簡単な(当時は難しかったけど)スクリプトを書いたりした。ちなみにこのシステムは現在(2016年)も稼働していて、6年ほど実務に貢献している。
この経験で、いままでコンテンツを消費するためだけのものだったパソコンが、何かを生み出すために使えることを知った。また、プログラミングとはどういうものなのかが少しだけど分かった気がした。
プログラミングにのめり込む
その後、父の知り合いでウェブ制作をしていた人から、そんなアプリケーションが作れるならウェブサイトとか簡単につくれるよと言われ、ウェブサイトをつくるアルバイトを始めた。HTMLやCSSから、WordPressでphpを学び、jQueryのコードをコピペしながらJavaScriptを勉強した。初めは、割のいいアルバイトくらいにしか考えていなかったが、3年になる頃には大学の勉強そっちのけで、JavaScriptのサイ本とか、On Lispとかを読み漁るようになり、プログラミング自体にすっかりハマってしまっている自分がいた。
シリコンバレーでAppleとかGoogleの本社にも遊びにいった
当時の自分は、何でも器用に80%くらいでこなすけど、飽き性で、すごく情熱をもって取り組めるものや、これだけは誰にも負けたくない、みたいなものがなかった。それがプログラミングになる予感がして、ワクワクしていた。
自分が書いたプログラムでもっとも記憶に残っているもの
大学を休学して、フリーランスとして活動
大学4年になるときに、大学院に進むべきか就職するべきか悩んで、大学を一年間休学することにした。大学院に行きたいと思わなかったが、エンジニアとして就職するには実力不足だと感じていたので、エンジニアとして武者修行しようと思った。
初めは友達とウェブサービスを作ったりしていたが、後半はクラウドワークスなどを中心にフリーランスとしてシゴトをしていた。
2ちゃんのまとめサイトから、スタートアップのアイデアのプロトタイプ、出会い系の掲示板やTwiiterに自動投稿するbotなど、多様なシゴトをやらせてもらった。クライアントには、学生とは思えないレベルですごい、みたいな評価をもらって、すっかり一人前のエンジニアになった気でいた。天狗とまではいかないが、少なくとも就職しなくてもフリーランスで十分食べていけるという自信があった。
プロジェクトに失敗
そんなタイミングで受けたシゴトで、その後のエンジニアとしてのキャリアに大きく影響を与えたものがある。内容は、ある業種の顧客管理システムで、報酬は今まで受けたシゴトの中で最高額。自分の持てる全てのスキルを駆使してやろうと、かなり気負っていた。
mobileにも対応してリッチなUIにしたいとの要求で、アーキテクチャの指定はなかったので、Laravel4 + Angularを使ったレスポンシブなSPA(Single Page Application)として作ることにした。デザインもなかったので、Bootstrapをベースに、DribbbleやPinterestに上がっているものを参考に、自分でデザインした。
約二ヶ月間、かなりの時間をその開発に費やして、100%とはいかないまでも、自分としては満足できるものが出来た。 しかし、クライアントの評価はかなり悪かった。当時の自分は、その評価に納得できず、いいがかりやクレームだと感じられ、自分のプログラムの有用性を主張して対抗するばかりだった。
実力不足を痛感
その出来事は結構ショックで、自分が評価されないことに納得がいかず落ち込み、プログラミングから数週間離れていた。落ち着いてきたタイミングで、冷静に自分を振り返ろうと「いいプログラマとは」みたいな記事やプロジェクトマネジメントの本などを読み漁った。
その結果わかったことは、自分のシゴトはプログラムを書くことではなく、プロジェクトを成功させることだということだ。不完全な仕様書が渡されたのなら、自分なりに解釈して実装するのではなく、本当にしたいことは何かを考え、相談する。時間が足りないのなら、中途半端に機能を作るのではなく、その理由を報告して、どこを最低限必要としているのかを相談する。そんな、今思えば当たり前のことが何も出来ていなかった。
自分がフリーランスとして一人前にエンジニアをやっていた気になっていたけど、プログラムを書くのが少し上手いだけで、エンジニアとしてプロジェクトを成功させるため必要なその他のことが何もわかっていなかった。完全にエンジニアとして実力不足だと痛感した。
そのような経験があり、このままフリーランスを続けても一人前のエンジニアにはなれない、正しくプロダクトを作る方法、プロジェクトを成功させる術を学ぶ必要があると思い、就職することを決めた。
プログラミングの魅力
まず、プログラミングは単純に楽しい。 自分の手で書いたものが動くという体験は素晴らしいし、新しい言語や技術に触れるのはワクワクする。
それに加えて、Wantedlyに入社して感じたことは、自分が作ったものを使ってくれる人がいるとことの喜びだ。自分は、フィードチーム(この記事を投稿する機能などを開発している)のリーダーをやらせてもらっているが、毎日多くの企業・ユーザーが投稿してくれ、それらの投稿が多くのPVを集めてブランディングに成功したり、さらにそこから採用に繋がっている様子が見られる。フリーランスとしてクライアントのためにプログラム書いていたのと比べると、全然違った嬉しさがある。
誰かが喜んでくれるものを、自分の手で生み出すことができる。シンプルだが、やはりそこがプログラミングの一番の魅力だと思う。