既卒文系未経験のバンドマンがソフトウェアエンジニアになって8年たちました

これは hey Advent Calendar 7日目の記事です。

heyにソフトウェアエンジニアとして入社して3年が経過し、ある程度の成長があったので今回はそれを棚卸ししていきます。
5年目までの記事もありまして、合わせて読んでいただけるとちょうど8年分のキャリア事例となります。興味がある方はご覧ください。

RSpec筋がついた

私は入社以来 STORES というネットショップ開設サービスの開発に携わっています。
こちらはRuby on Rails製のWebアプリケーションでして、2012年から開発が続けられており多くのユーザーさんにご利用いただいています。

私が入社した2018年ごろの STORES はそれまで少人数のスタートアップだったこともあり、テストコードがあったりなかったり、みたいな雰囲気だったのが正直なところでした。そのため、既存機能の改修や不具合の修正のたびに新しくテストコードを追加して回ったり、PRのレビューに「テストコードを書いていきましょう!」とコメントして回ったりするなどしておりました。

幸いなことに現在ではテストが書かれていない箇所はかなり少なくなり、テストコードを書く文化は STORES にとって当たり前のものとなりました。
ここに至るまでに多くのテストコードをRSpecで書いたため、RSpec筋が発達したのではないかなと思っています。

設計の引き出しが増えた

私が携わっている STORES と STORES レジ はモノリシックなRailsアプリケーションでして、そのデカさもかなりのものになってきています。

どうすればデカくなっていくRailsアプリケーションを保守しやすく可読性が高いコードベースにできるか、ということをより考えるようになり、Clean Architectureやオブジェクト指向設計実践ガイドといったソフトウェア設計の本を何度も読み返しては試行錯誤を繰り返してきました。

Railsの設計というところでTexta.fmがめちゃくちゃ刺さったり。

ドメインを抽象化して将来を見通すのがうまい同僚、保守しやすく再利用しやすいインタフェースを設計するのがうまい同僚、いろんな優秀な同僚に恵まれたこともあり、このあたりの引き出しの数は増えたのではないかなと思います。

良いコードを書くという点でも2、3年前の自分のコードを見て「もっと良く書けるなぁ」と思えているので、ドメイン知識がついたということもあると思いますが、一定成長はできているのかなと思います。

セキュアなWebアプリケーション開発の知識が増えた

転職するまでは小規模なアプリケーションを作りまくるような仕事が多く、セッション周りは理解するというより「RailsだったらDevise使えばいいし、そうじゃなかったらFirebaseとかを使えばとりあえず認証認可機能ができる(なるべくカスタマイズしない)」みたいな認識で開発をしてたというのが正直なところでした。
が、さすがに STORES くらい多くのユーザーさんにご利用いただいているサービスではそういう認識でやっていくわけにはいかないな、と考えブラウザセキュリティ周りの知識は意識して身につけていくようになりました。

セキュリティ施策に携わる機会もあり、この辺りはある程度成長できたのかなと思っています。

MongoDBがちょっと使えるようになった

STORES はメインのデータベースがMongoDBなので、自然とMongoDBの知識も身につきました。

MongoDBについてのテックブログが結構読まれたり。

ISUCON10の予選問題をMongoDBに書き換えてみたり。

RDBと比較して定石やノウハウが少なく、Webアプリケーションにおいてデータベースをどのように使うかということにRDB以上に頭を悩ませる必要があるため、転じて以前よりRDBのトランザクションやデータモデリングについての理解度が上がったような気もしないでもありません。

アジャイルちょっと理解した

STORES ではスクラムをベースにしたチーム開発でほぼずっとやってきたので、その辺りの知識や経験を積むことができました。

アジャイルは悟りのようなものだなと感じていて一生「アジャイルできるようになった」と言える日は来ないんだろうなと思っているんですが、まずはそういう認識が持てたことだけでも成長なのかなと思っています。

とはいえ、ここ1年くらいスクラムチームのリードをやっていく中でようやく「私たちはうまくやれている」と思える瞬間も多々作ることができているので手応えを感じている部分でもあります。

知識の範囲が広がった

技術的なこともそうでないことも、様々なことを経験させてもらいました。
プロダクトマネジメント、ピープルマネジメント、リーダーシップ、コミュニケーション、お金、などなど。

もともと転職理由として「技術力を提供するだけでなく事業に貢献するような仕事をもっとしたい」というのがありまして、エンジニアリングを使ってどのように事業に貢献できるか、ということをよく考えてきました。
そのためには、エンジニアリング以外のことも理解できていたほうがよいという体感がありそういった知識をつけていきましたし、どの分野の同僚もすごく優秀な方ばかりなのでそういった方々の仕事ぶりからも多くのことを学べました。

技術だけでなく人としても成長できたかなという実感があります。

今思うこと

heyという会社の事業はとても良いことをやっていると思えているし、もっと長期的に働いて価値に貢献できたらいいな、と素直に思えているのでしばらくはこの会社でいろいろやっていこうかなと思っています。

一方でキャリアについてはこれからどう進んでいくのがいいのか悩んでいるところがあるのも正直なところです。
マネージャーやるのか、もっと技術を深堀りしていくのか。

どう進むにしろ、課題と向き合って仕事を楽しみ、めちゃくちゃ成果出してもっとお給料がもらえるようになり、貯金して人生のどこかで2年くらい休職して大学院に行って興味あるトピックの研究をするのが私の夢です!

この記事が気に入ったらサポートをしてみませんか?