2020年の棚卸しと2021年の動き方。

2 min read読了の目安(約2200字

2020年の棚卸し

エンジニアとしての2020年を振り返ると、フルスタックさがより強化された1年、より自虐的に言うと器用貧乏さがより一層強化された1年になりました。
フロントをサポートしつつバックエンドを開発、必要に応じてKubernetesでインフラやバッチシステムの構築を担当するなど、年中いろんなことをやっていました。
そして10月に転職し、次にブロックチェーンエンジニア兼フルスタックエンジニアとして勤務するようになり、より幅が広がることとなります。

今年やったことは主に下記の通りです。詳細は業務経歴書をご覧ください。

  • KafkaとElasticsearchを使ったイベント収集基盤の構築
  • KubernetesとマネージドのArgoCDを使ったGitOpsの構築
  • KubernetesとRundeckを使ったバッチシステムの構築
  • ブロックチェーンスタートアップに転職
  • ブロックチェーンハッカソンでThe Graph, Chainlink, Audius, IPFSを使ったDAppの開発(プライズ受賞)
  • ブロックチェーンアプリケーションの要件定義、設計、開発

以上のように色々なことをやってきて、とにかくエンジニアとしての能力の幅が広がった1年だったなと感じます。
しかしそれは裏を返すと特定の分野に対しての知見が深まっていないことも意味していて、特に毎日新しいことをできるのはいいことですが、「XXX完全に理解した」から「XXX何も分からない」を何度も経験して自己効力感が何度も下がってしまうような経験をしてまあ辛いなと感じることも多々あります。

現在自分は転職したブロックチェーンのスタートアップの唯一のエンジニア社員であり、代表が一緒に開発してくれているものの情報収集や技術的な判断は主に自分の担当範囲です。
そしてブロックチェーン企業だからと言ってスマートコントラクトの開発だけをやっていればいいというわけではなく、

  • スマートコントラクトと連携するフロントエンドの開発を行ったり、
  • ブロックチェーン外部の情報を取得するためのオラクルで利用するバックエンドとしてのAPIを開発したり、
  • 上記アプリケーションをデプロイするためのインフラの選定と実際の構築

の全てを行う必要があります。

ついでに社内の別プロジェクトである仮想通貨ウォレットのネイティブアプリ開発をFlutterでやっているのでこれもプラスアルファで作業に入ってきます。
要するに従来のアプリケーションの全てのレイヤ+ブロックチェーンのレイヤも全てやる、フルスタックにフルスタックを足したような役割になっている状態です。
そのため転職前にやってきた今までのフロントエンド、バックエンド、インフラの経験は無駄ではなく確実に活かされていると感じますが、より広範な知識を求められるようになりかつ自身で調査検討、そして選定と決定の全てを行うということが必要になっていて、その上で自分の中のいくつかの課題も見つかっています。

2021年、いかにして問題を解決するか

とにかく手を動かす

ご本を読んでお勉強する前に、とにかく手を動かして理解するというのが一つ。
個人的には生活においてGTD(Getting Things Done)を採用しているので、一つのプロジェクトがあったときにはそれを細分化した上で1ステップずつ確実にこなせるレベルのタスクに落とし込んで触って理解していく。これにつきると考えています。

こまめなアウトプットはやりつつ、それに時間を割かない

先日Qiitaの方でアドベントカレンダーで記事を書きましたが、それを書きながら「これを書いている時間があるなら開発をした方がいいのではないか」という疑問が頭を離れませんでした。
こまめなメモをする程度のアウトプットは見返すこともできて良いのですが、まとまった時間をとって記事を書く時間があるなら開発をする方が実際の能力としては定着するはずです。
そして今書いているこの記事自体がそれに反するため、この記事を最後に来年はとにかくコーディングに没頭できるように努めます。
これをZennに投稿するときに知ったのですがZennで導入されたスクラップ機能がそういう意味で良さそうなので、活用してみようと思います。

休日の時間を使った自己投資の充実

これは自己投資と言いつつ業務に直結したことをやる、というのが正しいかなと。

副業の効率的な処理

副業自体はタスクがあったときにだけやるという感じなので、そこまで多くの時間を占めているわけではない、今のところ週平均5、6時間といったところ。
開いた時間を使って導入しようとしている技術をやるだとか、開いた時間を無駄にしないように意識します。

各技術の詳細な理解。ただし資格とかのお勉強はしない

手を動かすと言ったように実務ベースで能力を身につけていくのを基本としますが、詳細な理解が必要な場合は文献に当たっていく必要があるでしょう。
資格のような知識だけを身に付けることはせず、必要なときに必要な本を読む。これに努めます。

(この問題解決の方法についてはもう少し深掘りして考える必要がありそう。以降スクラップなど活用してブラッシュアップしていきます)