2020年の振り返りと2021年に取り組みたいこと
業務の振り返り
細かいところは公開できないので簡単に。
1月、小さい案件だけど顧客に近い立場で技術をリード。インフラ~バックエンドまで見れるスキルは役に立った。
2-4月、別チームのヘルプ、アーキテクチャは固まっていて、個別の機能開発、API開発やインフラの改善タスクがメインだった。素早く細かく対応して、チームに貢献はできたが、技術的な難易度は高くないので個人的にはまぁまぁの満足度。
5-12月、技術を中心にサーバレスで難易度が高い機能の設計、開発をやらせてもらった。サーバレスかつ技術的な難易度が高い案件でアーキ的なポジションをやらせてもらったのはとても良かった。個人のスキルで切り開いていく点も楽しいし、チームでレバレッジきかせることもできるのも楽しい。レビューだったりOJTだったり、チームメンバの育成に貢献できたのも良かった。
一方で一時期はまっていた競技プログラミングのコンテストには2021年は全く参加しなくなってしまった。水色になるまでに頑張って得た知識とか考え方は意味があったので良かったが、競技プログラミングのレートにこだわって頑張ることの価値は今の所薄いので、今後もコンテストに参加することはない気がする。
ソフトウェアエンジニア活動
Go言語を中心に、外部登壇や技術ブログ執筆など多くのアウトプットを残せた。とても良かった。会社の明示的な仕事としての外部登壇も複数あり(割愛)。
登壇(個人)
- インライン展開をGoでのぞいてみる, golang.tokyo #28, 2019年12月.
- ワークフローエンジンをGoで作る, Umeda.go 2020 Winter, 2020年01月.
- ワークフローエンジンをGoで作る (再演), golang.tokyo #29, 2020年02月.
- Go1.14のcontextは何が変わるのか, Go 1.14 Release Party in Japan, 2020年02月.
- Introduction to JSON handling in Go, umeda.go, 2020年11月.
技術記事
会社の技術ブログにいろいろ書いた。Qiitaとかはてなブログにもいろいろ書いている。会社以外の記事の出し元は統一したのがいいのかもしれないが
- Goの標準ライブラリのコードリーディングのすすめ, Future Tech Blog, 2020年03月.
- Go Tips連載3: ファイルを扱うちょっとしたスクリプトをGoで書くときのTips5選, Future Tech Blog, 2020年05月.
- 春の入門祭り 🌸 #01 Goのテストに入門してみよう!, Future Tech Blog, 2020年06月.
- DBスキーマを駆動にした開発のためのライブラリ調査, Future Tech Blog, 2020年07月.
- GoとSuffixArray , Future Tech Blog, 2020年08月.
- LambdaとGoを使ったサーバーレスWebAPI開発実践入門, Future Tech Blog, 2020年09月.
- GoでLambdaからLambdaを呼び出すときに気をつけたいポイント6選, Future Tech Blog, 2020年11月.
Qiita
Qiitaにもいろいろ書いた。「Go1.14のcontextは何が変わるのか」の記事はGoのカンファレンスの方に目をつけていただいて、登壇にもつながったので良かった。記事の質の濃淡問わず、引き続き今後も積極的に外部発信していく。
- Goでワーカープールを15分で実装する方法, 2020年1月.
- Go1.14のcontextは何が変わるのか, 2020年2月.
- 改行コードって難しいっ, 2020年4月.
- QiitaにCLIで投稿や更新できるツールを作った, 2020年4月.
- 【初中級編】Go言語を始める方のための落とし穴、問題の解決方法やよくある間違い, 2020年10月.
- Go言語を使ったTCPクライアントの作り方, 2020年12月.
- AWSでのMFAをちょっと便利に扱いたい, 2020年12月.
OSS
Goでいろいろなプロダクトを作れた。自分がやりたいことを実装するのにGoが一番書きやすいので、しばらくは今後もGoを書いていくと思う。まだまだ技術力不足で到達できなかった点もあるので(d-tsuji/clipboard
とか)、引き続き低レイヤーの知識も磨いていきたい。
- github.com/d-tsuji/clipboard
- github.com/d-tsuji/awsmfa
- github.com/d-tsuji/ttycopy
- github.com/d-tsuji/qiisync
- github.com/d-tsuji/gosdlisp
- github.com/d-tsuji/awesome-go-orms
- github.com/d-tsuji/flower
- github.com/future-architect/go-mcprotocol
- ...
OSSにStarをたくさんつけてもらえたのも良かった。ちなみにFindyの偏差値だと90以上あるんだけど、偏差値90とは一体なんだろう。相対的に高いのかもしれないが。
他人のプロダクトにもPRも色々出したが、機能開発とかバグFixというよりもTypoとかREADMEの指摘が多かった気がする。ただ外部のプロダクトで仕事に直結しないプロダクトの機能開発PRを出すのはなかなか優先度が上がらないので難しそう。future-architect/go-mcprotocol
は会社の案件で使用しているプロダクトで、コネクションプーリング周りの機能を開発した。仕事で使うプロダクトだとPRは出しやすい。
2021年に取り組みたいこと
技術的にはアーキテクチャ選定を含む設計力を磨いていきたい。設計でしくると、実装が複雑になったり運用コストが高くなる。実装レベルのリファクタリングはテストをしっかりと書いていれば素早く対応できるが、設計レベルで失敗があると、取り返すのが難しい。大抵の場合はリファクタリングのコストがかかりすぎるので、リファクタリングできないことが多い。YAGNIの原則はもちろんそうなんだけど、設計を後回しにする、ということではない。会社の仲間から学べることも多いし、ビジネスとより向き合わないといけないし、技術書を読んでいろいろ思考していきたい。Design It!は再度読んでみるのと、Release It! 2ndを読む。
- https://qiita.com/ma91n/items/207f32db1b51754d6933
- https://qiita.com/tmknom/items/be5c4b350f561991f2f5
- https://www.slideshare.net/yusuke/qcon-tokyo-2016
具体的には上記の一つは会社の先輩が書いた記事だが、こういう記事がかけるように観点を養っていくのと、プロジェクトで実践していく。思考&実践、フィードバックのイテレーションを回していきたい。
技術記事やOSSのアウトプット、外部登壇は2020年は豊作で良かった。2021年も引き続きアウトプットしていく。
技術を中心としたロールは変わらないけど、否応なく仕事では少なくともプロジェクトマネージメント的なロールも求められそうなので、少しずつ勉強していく。プロジェクトマネージメントも立派なスキル(暗黙的にできていることもあるだろうけど)。
その他
健康第一。30代になって、体力的にも無理がきかないので、メリハリをつけて頑張っていきたい。特に積極的に休むことが大事。また、リモートワーク中心の生活になったので、ランニングとか散歩とか積極的に取り組んだ。これは良かったと思うので2021年も継続。ちなみにコンピュータサイエンスの修士号も頭の片隅にあって、JAISTの研究室とかながめていたけど、今の所あまりいきたい研究室がなかったのでひとまず2021年も後回し。
あとは囲碁クエスト(9路)でレート1900を目指したい。「決定版! 囲碁 9路盤完全ガイド」を読んで筋を勉強するのと、囲碁クエストで負けた棋譜をAIで解析してベターな手を検討する。