株式会社エスプラニングを退職しました

7月31日付で2年半ほど在籍した株式会社エスラニングを退職しました。退職系のエントリーはブクマが稼げると聞いて、状況報告を書こうかなと思います。

前職でやっていたこと

前職は主にJavaによるアプリケーション開発が主業務でしたが、珍しくWeb系というわけでもありません。入社した頃は、Swingでのデスクトップアプリケーションが主プロダクトでした。最近はWebアプリケーションやスマフォ系もやっています。そんな会社で自分が行ってきたことは、開発環境の整備、コード品質の向上、プロジェクト全体の進め方の改善などです。
具体的には、ユニットテスト、読みやすいコード、リファクタリング、レビュー、KPT、カンバン、Trac/Redmine、バージョン管理、継続的インテグレーションユースケース駆動開発などなどです。
ぶっちゃけ言えば、入社した当時はお世辞にも技術レベルは高いと言えませんでした。バージョン管理はCVSでしたし、Excelの課題管理表や意味の無いチェックシートなどを、お客さんに言われるまま使っていた、どこにでもあるような開発現場です。
ですが、2年半ほど経過し、ユニットテストやCIが自然にある開発環境にまでなっています。少なくとも札幌のような地方都市で、そのような開発環境が整備されている会社は少ないと思います(もし、そんな開発環境で仕事したいのであればコンタクトしてみてください)。

なぜ、新しい手法を導入したいのか?

新しい手法は、当然のように古い手法の問題点を解決するために生まれました。なので、新しい事を導入していくと効率よく品質も高くなっていきます。
というのは建前で、新しい手法を導入していく方が楽しいからです。
ずっと同じやり方をやっていく保守的な環境は刺激がありません。新しい事を試せば失敗もします。失敗から学ぶことも多いですし、それを乗り越えれば効率もよくなります。学ぶことは大変ですし、新しい事を学ぶのはプライベートの時間を使います。それを職場で導入します。問題があれば自宅で対策を練ることもあります。
でも、それが楽しい。

新しい手法を導入したことによる良い点

何はともあれ、自分が楽しいです。好きなエンジニアリングを仕事にする以上、楽しめなくなったら業界から身を引きたいと考えています。仕事を続けるモチベーション、それが一番です。
次に良い点として、社員間などで沢山の技術的な話ができます。ああでもないこうでもないと議論して、一緒に解決するってチームによる開発の醍醐味です。時には意見がぶつかります。それでも、保守的に事なかれ主義でいるよりずっと楽しいです。そして、気がつけば仲間も新しい事を見つけてきます。そうなれば自分も成長できます。
勿論、最新の手法を駆使しているので、品質や生産性もよくなります。TDDまでは完全に導入していませんでしたが、ユニットテストを根ざした影響で、各自で作るクラスやメソッドの意味を考えるようになりました。後で困らないように相談するシーンも増えました。CIで常にビルドとテストが走るようになったため、緊急リリースにも落ち着いて対応できるようになりました。ユースケースの導入により、無駄な機能を省くことやテストケースの抽出もスムーズになりました。必要な事を一通りできるようになったため、作業見積もりの精度も高くなりました。

新しい手法を導入したことによる悪い点

ところが、新しい手法を導入していくと、悪い意味でも化学反応が起きるわけです。基本的に「なんで変えるの?今までのやり方でいいじゃん」との戦いです。
保守派としては、新しい事を覚えるモチベーションはありません。それは無駄な努力ですから。努力せずに今の状況が続けられるならばそれで良いのです(勿論、保守的なことが重要なドメインもあります)。
この解決方法はひとつだけあります。改革派多数にしてしまえば良いのです。6人チームであれば、改革派が2人いれば充分です。保守派の中には完璧な保守派の他に、多数派が多く居ます。影響力の強い方につく人を含めて6人中4人になってしまえば、純粋な保守派も押さえ込めます。そして、そんな保守派もやってみたくないだけで、やってみれば意外と楽しんでくれます。食わず嫌いみたいなもんですね。まあ、中にはどうにもならない人もいると思いますが・・・。

やれることは、だいたい終わった

それほど大きな会社でもありません。入社して2年もすると、開発環境周りのアップデートもほとんど終わりました。最近では、Mercurial + Jenkins + Redmine の環境も整っていましたし、最後のプロジェクトではCucumeber + Seleniumでのテストの自動化も試しました。まったく改善点がないわけでもありませんが、やりたいことはだいたいやったかなという所です。去年は、勢いに任せて、プライベートでJUnit実践入門も執筆しました。
JUnit実践入門の執筆後あたりからでしょうか、やりたいことはだいたい終わったと感じはじめます。

キッカケは突然、でも必然

色々な経緯で転職して2年ほど過ぎました。新しいことをどんどんと導入してカンフル剤になるような役割もだいたい終わったかなと感じ、新しい事を探し始めます。MongoDBなどに興味持ったり、ユニットテストから受入テストの自動化をもっと調べたり、どうしても今のスキルの延長で考える事が多かったかと思います。
そんな中で、執筆の前後から東京に行く機会もあり、JavaOne Tokyoの懇親会で都元ダイスケさんと出会いました(ネットでは知っていたけどリアルという意味で)。その後、Facebookなどとかで絡んでいたのですが、ふとしたキッカケで、氏が転職したばかりのクラスメソッド株式会社へ電撃転職するような流れになりました(そのあたりの経緯は後日)。
本当に偶然と勢いだったのですが、ここ2年半を振り返ると、それなりに意味のあるステップを踏んできたからこそ、この機会に巡り会えたと感じます。もし、和田さんに会ってなかったら、もし、TDDBCを主催しなかったら、もし、ユニットテストをもっと勉強しなかったら、もし、前職に新しい技術を導入しなかったら、もし、その導入が失敗していたなら、もし、JUnit実践入門を執筆していなかったら・・・と。

新しいことにチャレンジしたい

次職では主にAWSを扱うエンジニアとなります。
Google App Engineは少し触っていましたが、AWSVPS程度にいじったことがある程度です。基本的にまったく未知の領域です。勿論、基本的なLinuxコマンドは使えますが、JavaのWebアプリ開発で環境構築をするとかそんなレベルです。しばらくは学び、役に立つレベルのスキルを習得することに注力するでしょう。
その方がぬくぬくとしているよりも刺激があって楽しいということで、レベル0から再出発です。ツライと思います。
失敗するかもしれません。それはひとつの経験として受け止めます。その時は、どこか拾ってください(笑)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

追記

東京に引っ越すの?という話ですが、当面は在宅を予定しているため、札幌在住は変わりません。むしろ、札幌に(ry

追記2

転職エントリーは転職先会社ブログでご覧ください。