芸歴15年のソフトウェアエンジニアがどのようにキャリアを積み、この先生きのころうとしているのか

これは VOYAGE GROUP Advent Calendar 2016 の14日目のエントリです。

こんにちは。VOYAGE GROUPでソフトウェアエンジニアとしてECナビの裏側で働いている駒崎です。

もう2016年も残すところ18日になりました。師走ですね。 今日は寒い季節にふさわしい思い出混じりの話でも書こうかと思います。

駄文、長文ですが、おヒマな時に読んでいただければ。少しでも参考になればという思いです。

今北産業」と言いたくなった方は最後までスクロールしちゃってください。

最近やっていること

いきなりという感じですが。わたしは何者、という説明も兼ねて。

VOYAGE GROUPに入社して以降、僕の基本的な立ち位置はアプリケーションエンジニアであり、 事業の成長とアプリケーションを支えるべく、日々奮闘しています。

ECナビというサービスは12年も継続しているので、「これは。。。」と唸らされる古の部分も多いのですが、 比較的新しめの技術導入をやれるようになってきていたり、 KAIZEN会と言う好きなことをやれる時間もあったりして、なかなか飽きるのが難しい職場です。

↑のあたりの話は2016年11月3日のPHPカンファレンスでお話させていただいた資料があるので、ご興味あればこちらをドウゾ。

https://speakerdeck.com/dkkoma/ecnavi-at-phpcon2016

最近のお仕事は、インフラチームとアプリエンジニアチームの両方に所属して、 インフラ側のノウハウをアプリチームにコンバートできるように、 インフラチームが行っていた業務を引き継ぎ&勉強しながらこなしています。 最終的にはアプリチームで自分たちのサービスを全て面倒見れるようになるといいですね、という想いです。

これまでインフラのお仕事はまともにやったことがないのですが、 僕自身もやってみたいと考えていたこともあり、新しいスキルセットを仕入れつつ活躍する機会をもらえています。 しみじみと、今の年齢でこういう機会をもらえるのはとてもありがたいお話だなぁと思います。 その一方で、勉強しているだけではダメだなーと感じて、自分のパフォーマンスが出ているのかと考えることも増えましたが。

最近のお話しはこのあたりにして、いままでのキャリアを振り返ってみたいと思います。

SIer編、キャリア最初の5年について

学生の頃は特に何も考えてなくて、プログラミングができればいいやくらいのノリで、就職先はいわゆるSIerの下請け会社でした。 当時2002年では、今のように情報が溢れていなく、ちゃらんぽらんな僕は何も考えずに就職先を決めたのでした。

お仕事

入社してしばらくはテスターをやったり、仕事がないときは待機(会社でVBAで遊んだり)、今考えると何してたんだろうという生活でした。 最初に炎上案件(UNISYS系汎用機の)に駆り出されてCOBOLを書かされたのが業務プログラミングデビュー。

そこである程度、能力を認められ、そのプロジェクト関係者に連れて行かれ、 5年ほどメインフレームエンジニアとしてCOBOLを書き続けることになります。 エビデンス作りとか本当に辛い。何百ページもあるDBダンプを印刷してマーカーでテスト対象データに線を引いたりするんですよね。 今でこそ貴重なスキルとして高収入も見込める!?経歴ですが、当時は早く違う仕事がしたいなと思っていました。 下請けSIerとしては珍しく(?)チームの居心地がとてもよかったので転職を考えることはありませんでした。

高専卒の僕は若干変なやつだったのですが、大人として大事なことは当時のチームでかなり学ばせてもらったと思っています。 たぶんきっとかなり運が良かったのだと思います。 ただ、振り返ると今時の基準では、この時期の技術的な成長速度はだいぶ遅かったと思います。 ネトゲ廃人でしたし。

SIer編、次の5年

会社は変わらないまま、ついにJavaの現場にはいることになります!バイバイCOBOL

野良ゲーム開発

Javaの勉強が必要だと思い、当時流行っていた某ネトゲエミュレータ開発に参加させてもらって、コミッタとして活動をしました。 この時代ではJUnitとか書こうぜというのは当たり前になりつつあった気もしますが、 テスト書こうぜというコミッタの方の提案も通ることなく、テストなにそれおいしいの状態でひたすら機能開発をしてました。(ひどい)

ゲームを起動しては手動デバッグし、の繰り返しで泥臭い開発でしたが、 Java5から導入されたjava.util.concurrentあたりを駆使して並行プログラミングをしていたので、この辺りの考え方をかなり学べたと思います。 32bitのWindows機でゲームを動かす人が多かったので、メモリやスレッド数を節約するように工夫していました。

とにかく知ってるゲームの仕様を自分で実装していくのが楽しくて、毎日帰ったら夜中まで開発していました。 この過程でJava自体もだいぶ勉強できた気がします。

お仕事

仕事の方は炎上続きのプロジェクトばかり経験することになります。 Javaのwebアプリケーションを開発することができたのは良かったのですが、とにかく大変。 過去最高に炎上したプロジェクトに配属されたとき、体力の限界だと思いエミュレータの開発はやめてしまいました。

最初の1,2年はコードを書けていたのですが(ちゃんとテストも書いた!)、 しばらくすると圧倒的仕事量に押しつぶされ、いわゆるSE的な設計書を書くだけの仕事になってしまいました。

そんなこんなで4年くらい炎上案件をやっていたのですが、その後大きな災害が発生し、このままでいいかなぁと考えるようになりました。 もっと世の中に公開されているサービスの開発がしたいなぁと。

初めてのweb会社

9年間勤めた会社をやめるのはとても勇気がいりましたが、頑張ってなんとか転職できました。 次の会社はEコマース関連のパッケージ製品を開発していました。

お仕事

入ったときにリリース2ヶ月前の大きめの請負案件が炎上しており、そこのメンバーになりました。 今考えると、炎上耐性を買われて採用されたにちがいない。

フレームワークRuby on Rails(RoR)を使っていて、当時としては最新の3.0。 メンバーはすごい人ばかりがいて、当時の僕はよくわからないまま出来る人ばかりだなぁと思っていました。

RoRどころかrubyも触ったこともないので、他のエンジニアのコードやチャットから色々吸収させてもらいました。 だいたい学んで開発出来るかなぁと思ったところで別のプロジェクトが立ち上がり、 プロジェクトマネージャーはこいつがやりますといきなりお客様相手に宣言されて、かなりキレた思い出があるのですが、それはそれ。 結果的には良い勉強をさせてもらいました。

プロジェクトがひと段落したところでやっとRoRの開発しつつ、テストコードをRSpecで初めてまともに書いたりなど。 最初は生真面目にカバレッジ100%網羅するようなテストを書いたりしていましたが、そういうものじゃないなと勘所もつかめてきたり。 CI環境も回していたし、GitHubを使っていたり、比較的先進的な環境だったように思います。

インフラの人が辞めてしまって、Apacheの設定とかやったことないのにとりあえずやってみたり、 インフラ経験もないのにOSセットアップから納品までさせられたり、 とりあえずやってみて、なんとかしてきたことが多かったかなという気がします。

最後の方は初めて自社サービスの開発メンバーとなり、高専の時以来のPHPをやっていました。 PHP4からPHP5.4にいきなりレベルアップ!

VOYAGE GROUPへ

本格的にユーザー向けの自社サービスをやりたいなぁと思うようになり、VOYAGE GROUPへ。 入社以来ECナビの開発をしています。

お仕事については最初に書いた通りです。

これからどうやって生き残るか

過去の傾向からやりたいこと/必要性ありきで、あとから技術がついてくるタイプなので、

  • Javaを勉強したときのように手が止まらないくらい没頭できるプロダクト開発をやって、新しい言語を習得する。
  • 仕事に関してはだいたい周囲が助けてくれるし、なんでも手を出してみる。(出させてくれるところにいく)
  • サボってた時期のことは忘れる。(芸歴10(+5)年です!)

というのがこの先も良いのかなと思いました。

最後に

この記事はVOYAGE GROUP Advent Calendar 2016 の14日目のエントリでした。

明日も楽しみですね〜。