2020年 ソフトウェアエンジニアとしてできたことと振り返り

エンジニアとして働き始めて2年目が過ぎた2020年。備忘録として今年の振り返りを残しておく。今年もたくさんの挑戦機会をいただくことができて、1年前と比べて成長を実感できたと思う。

立場

2018年からタイミーでソフトウェアエンジニアとして働いています。主にRails/AWSで開発をしています。
この記事では主にタイミーでの経験について書きますが、会社を代表するものではないことを先に記します。

触った技術

Ruby, Rails:リリースから2年程度のプロダクトの保守や、APIモードでのプロダクトの0→1、外部API(Stripe, Hubspot)との連携など
Go:他の方が作ったAPIサーバーへの機能追加や、CLIツールの作成など
インフラ:AWS/ECSでのRailsのホスティングやawscliの操作
Terraform:AWSリソースやDatadog Dashboardなどの管理
フロントエンド:Vue.js/vue-routerによるSPA
その他:Docker, GitHub Actions,社のテックブログ立ち上げなど

Ruby, Rails

2019年から引き続きメインで触った技術となった。キャリアの始まりがProgateで始めたRailsだったこともあり、愛着も大きい。
今年は引き続きリリースから2年ほど経つモノリスのRailsアプリの保守や、新規事業の技術選定としてRailsのAPIモードを利用し0→1の立ち上げを担当した。Railsの規約に乗った0→1でのリリースの速さはやはり体験がよく、APIモードとなるとビルドも爆速でかなりよかった。
今年は外部APIと連携する機会が多く、ActiveModelのノウハウがいくつか溜まった。これもいつか記事にしたい。
2021年も引き続きRailsを触るはず。プロダクトが巨大なコードベースになっていく上で、いかに影響範囲を狭めモジュールを切り責務を分けていくかは2021年の技術的挑戦にしたいと思っている。

Go

2020年の年始はGoの学習を始めコードをひたすら書くことから始まった。小さなアプリケーションやCLIツールをいくつか作ったりしつつ、本番稼働しているマイクロサービスの機能追加ができたのでよかった。
まだgoroutineやcontextなど、きちんと理解できているわけではないのもあり、来年はもっとGoを書く機会を増やしたい。

作ったものたち


インフラ

本番環境のRailsアプリのECS/Fargate移行の一部を担当した。ECSのシンプルな構成なWebアプリケーションの構築はできるはず。
成果としては社内で利用しているRedashをFargateに移行し、テックブログで記事を書いた。

今年最もよかったことは、自身より圧倒的にレベルの高いエンジニアのメンバーがSREとしてジョインし、かつ同じチームで師事させてもらえたことだ。彼の書くTerraform/Goのコードを参考にさせてもらいつつ手を動かす機会をいただけたことももちろん、ソフトスキルや働き方、思考プロセスについてもフィードバックをいただけた。
持論として、成長する最も速い高速道路は「自分よりレベルが数段上のエンジニアの真似をすること」だと思っている。課題にぶつかったときに「あの人だったらどう考えるか・どのようなコードを書くか」を考え、自分の価値基準を更新していく。
そういう意味で、今の職場は自分より強いメンバーが何人もいるので嬉しい。来年もどんどん吸収していきたい。

Terraform

インフラを学ぶと同時にTerraformも学んだ。宣言的アーキテクチャの考え方は個人的にも好みで、Terraformは気に入って使っている。HCLはRailsの次に書いた言語かもしれない。
Terraformを学んでよかったことの一つに、AWSリソースのドキュメントを読む手段が増えたことがある。AWSのドキュメントを読んでもいまいちピンと来ない時に、Terraformのドキュメントも読んでみると同じ事象を別の言語で説明しているので理解できる、といったことが度々ある。そのリソースの一般的な構成をexampleで知れたりなど、AWSの学習速度が副次的に上がったように思える。
個人のAWSリソースをterraformで管理しようとリポジトリを用意してはいるが、まだホスティングするものが少なく使い切れてはいない。

個人でherokuで動かしているサービスがいくつかあるため、heroku providerを使ってIaC化しておくのは良いかもしれない。

フロントエンド

2019年までは簡単なjQueryしか使ったことがないことにコンプレックスがあったが、新規事業でRails APIモードを選定し、フロントエンドには生のVue.jsを利用した。
この選定はチーム内のフロントエンドができるメンバーが使いやすい技術を選定した形だが、初めてSPAに触れる身としてはとても感触がよく良い経験だった。SingleFileComponentも理解しやすくすぐコードを書き始めることができた。
とはいえチームメンバーが作ったソースコードに対して修正追加していただけであり、自身で0から組み立てられるかと言われれば難しいと思う。
2021年はNext.js + TypeScriptを業務で触る機運があり、自身としても今最も手に入れたい技術だと思っている。今年ジョインしてくれたフロントエンドエンジニアのメンバーが残しているソースコードや資料がかなり参考になるので嬉しい。年末年始はそのコードを基に勉強している。

技術的なアウトプットについて

2019年の今頃は「技術的なアウトプットがしたいが、業界に貢献できるような深い技術的知見を持ち合わせておらずアウトプットできるものがない」と悩んでいた。

これは今思えばいくつか分解できて、自分の場合は以下の2点だったと思う。

・仕事で使っている技術を抽象度高く言語化できない
・仕事に着手する前に技術的挑戦の仮説を立てていない

仕事をする上で何かしらの技術を用いて課題解決をしているので話すこと事態はあるはず、まず言語化能力を高めるのが良さそうと自己解決したのと、「このタスクを着手すればこういった挑戦ができそうだな」と事前に仮説を立てておくと自分はモチベーションもあがり成長につなげやすいと感じた。あくまでプロダクトや会社への価値提供を第一にした上で、技術的挑戦は二の次であることは前提の上で。

今年は15分程度の登壇を1回、大きめなブログ記事を3本出すことができた。中でもStripeの記事は200はてブを超えることができたので、達成感も大きく嬉しい。


とはいえ特定の技術に対して深い知識があると自信を持って言えるかといえばまだ難しいと思っている。去年ほど恐怖を感じることはなくなったが、問題解決の幅を広げるためにも深い技術知識を得ることは貪欲に続けていきたい。
そのために外部へのアウトプットはプラスな点が多いので、今後も継続的に続けていきたいところ。

PjM/PdM

2020年の中盤は社内の1プロジェクトのPjMを任せていただき、2020年後半から現在は1チームのPdMをさせていただいている。
「チームの意思を統一しどのように大きな価値を提供し続けるか」は難しいチャレンジで、今ちょうど大きく悩んでいる最中ではあるけれど、2021年は一つでも結果を残せるように頑張りたい。

終わりに

2018年のシード期のタイミーに入社してからずっと思っているけれど、スタートアップ(タイミー)はどのフェーズでもいろんな分野で挑戦できる課題があり、会社とプロダクトが成長する度に自身も成長させてもらえていることを実感している。
今後も会社の成長につながることであればなんでもやるスタンスは変えず、むしろPdMとしてプロダクトの方向性を示せるように、やっていき!!
関わってくださったみなさん、今年もお世話になりました。来年も何卒よろしくお願いします。
良いお年を!

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