お久しぶりです。Andyです。
前職を辞めてから2ヶ月ほどが経ち、いろいろな事がありました。
将来この2ヶ月を振り返って結構おもろかったなーと思えるよう、備忘録的に記事をしたためます。
退職
5/31付で3ヶ月勤めた会社を離れました。
初めはReactを書くつもりでしたが気づいたらVueを書いていたり、100人以上が集まるNuxt Meetupを開催したり、はたまたMicroservicesのアーキの話に首を突っ込んだりと楽しい時間でした。
FinTech領域で優秀なメンバーと仕事ができて学ぶ事が多かったです。
無職突入
退職のタイミングでいくつかオファーをいただいていたのですが、なるべく慎重に次の会社を選びたかったし、なにより自分自身のスキルをもう少し高めなきゃならんなということで無職期間に突入。
ブログの更新は12日で辞めてしまいましたが、当初の想定どおり6月いっぱいは良い感じにアタマとカラダを鍛えられました。詳細は後述。
また時間的な余裕ができたことで、普段はなかなか会えない友人と親交を深められたり、小旅行に出かけられたりできたのが良かったです。
何度か関西に帰省したり、軽井沢に行ったり、横浜に行ったり、幼馴染とNBA Finalsを観戦したり。
今後もしばらくはスタートアップでどっぷり働くと思うのですが、人一倍と休暇には時間とお金を投資していきたいです。
修行編
生来の怠け癖というのはなかなか抜けないもので、このままではダラダラと時間もお金も使い果たしてしまうなと、おバカな頭で直感しました。
そこで「アタマとカラダを鍛える」ということで、いくつか目標を立ててそれに向かって取り組むことに。
Embedded content: http://studio-andy.hatenablog.com/entry/2018-05-31
その際の意気込みというか決意表明的なものは上の記事を参考のこと。
1ヶ月間の主なAchievementsとしては以下の通りです。
カラダを鍛える
ランニング:
なるべく毎日走るようにしました。久々の運動なので少しヒザを痛める醜態もありましたが、それと天気の悪い日を除いてはほぼ達成。帰省中は京都でも鴨川沿いを走れてなかなか気持ちよかったです
** バスケット:**
Amazonでバスケットボールを購入し、4年ぶりにバスケを再開。駒沢公園のバスケットコートまで自宅から徒歩10分ほどなので、夕方から高校生に混じってプレイしたり、夜中にシュート練習に行ったりする日々です。スリーポイントが届かなくなっててワロタ
アタマを鍛える
React + Redux + Next.js +TypeScript:
転職候補の会社がどこもReactの会社ばかりだったので、Reactの最新情報へのキャッチアップとReduxの勉強をガッツリとしました。はじめてTSと組み合わせて見ましたがJSXで型の補完がゴリゴリ効いて気持ちよかったです。
Saga含めて様々な実装パターンを調査 & 研究できたので、後述のArchitectureの話を理解するヒントになったかなと思います。
Flutter:
まずはDartの基礎文法を学ぶところからでしたが、今まで触ってきた言語のニュアンスに近いところがありそこまでは抵抗を感じませんでした。
GitHub上でinKinoというアプリの実装例を見つけたので、こちらを写経。
Embedded content: https://twitter.com/andoshin11/status/1002606449694892033
Reduxの記述に冗長な部分も感じましたが、少ないコード量でこれだけのNative UIができるのかーと感動しました。
Python(Django), Scala, Kotlin:
Pythonでクローラーを使ったり機械学習をしたことはありましたが、Webアプリはまだ作ったことがなかったのでDjangoに入門。認証の仕組みやORMは面白かったですが、あまりワクワクしなかった(失礼)ので途中で放棄。
KotlinとScalaについては簡単に文法を調べて環境構築をしたところでMPがゼロになり終了。本質的で無い作業で疲労する言語は僕には向いてないのかもしれません。JVM系の言語とかJavaScriptとか...
そういえばSpring Bootもちょっと触りました。
Rust:
入門レベルですがかなり好きかも。マルチスレッドプログラミング楽しい!!
チュートリアルも充実していて親切でした。
Clean Architecture
普段は仕事でJSの特定のFWばかりを触っているのですが、いろいろな技術を学ぶ中で良い意味でFWの特徴を相対的に捉えることができたのではないかと思います。
そんななかVue.js / Nuxt.js Meetup Osaka #0 に登壇する機会があったので、「オレだけの最強のFrontend Architectureを作ってやる!」と思いDDDをはじめとした様々なArchitectureの勉強を開始。
Embedded content: https://speakerdeck.com/andoshin11/clean-architecture-with-vue
最終的には上記のようなClean Architecutreを採用した構成に落ち着きました。
このあと前職の同僚にレビューしてもらったり、Frontend界隈の友人たちと議論するなどして、今ではもう何段階かアップグレードしています。
デザインパターンの歴史を学んだり、様々なアーキテクチャのpros/consを検証したり、自らアーキテクチャを組んだりしたことでエンジニアとしてまた一歩レベルアップできる良い経験でした。
その他
Next.jsの文脈でGraphQLやApolloを触ったり、Goでアプリケーションを作ったり(Go合宿にも参加)、DTNの勉強したりと濃密な1ヶ月でした。
転職活動 ~ 入社
前職のネームバリューもあり、比較的「強い」転職活動だった気がします。
1ヶ月の転職活動で最終的に20社ほどにオファーをいただくことができ、うち半分ほどは経営陣の方と直接お話しをさせていただきました。
改めて自分のキャリアや人生を賭して叶えたい夢について向き合う良い機会だったので本当にギリギリまで悩みました。人生でこんなに悩んだことないんじゃないかなというくらいです笑
結果として創業当初から縁のあるFinTechのスタートアップに決まり、6/28からフロントエンドエンジニアとして働いています。
転職活動中に相談に乗ってくれた友人たちに心から感謝です。
予想通りハイレベルなメンバーばかりで何もできないまま1ヶ月が過ぎてしまいましたが、1日も早く会社の武器になれるよう精進します。
これからのこと
方針としては大きく2つ。
1. Frontendのエキスパートを目指す
巷ではUIフレームワークに関する論争ばかりが目につきますが、Frontendの本質的な部分(Architecture, CI/CD, Testing, Accessibility, etc...)にフォーカスしていきたいです。
幸い今の職場でも経験方法なメンバーに囲まれているため、どこでも胸を張ってFrontend Developerを名乗れるようにスキルを盗み、磨いていきます。
2. 「広く浅く」
何かの分野でそこそこのレベルは目指せても、業界トップレベルのスキルを身につけるには途方も無い努力が必要です。そしてエンジニアリング以外にも情熱を注ぎたいぼくがそのレベルにたどり着ける可能性はとんでもなく低いでしょう。
なので合わせ技で攻めます。
具体的にはバックエンド領域、とくにSRE分野の領域を学んでいきます。
いまはまだ現場で一番下っ端のエンジニアですが、数年後にもう何段階か上のポジションからビジネスに関する意思決定ができるようになるはず(予定)です。その時にバリューを発揮できるための投資を今から開始したいなと思います。
また無職期間にも改めて実感しましたが、様々な技術を学んでそのそれぞれを相対的に評価していく手法は、今扱っている技術のレベルを大きく高めてくれます。
繰り返しにはなりますが変化の激しい業界だからこそ、ビジネスに必要な道具(技術)の本質的な価値を評価できるように視野を広く保ちたいです。
ということで絶賛サイドプロジェクトで実践中です。
Vue.js + Node.js + TS + Go + Firestore + k8sというかなりエキサイティングな構成で開発しています。年末くらいにはカタチにして世に出したいな。
まとめ
- 会社選びは悩みすぎるくらいがちょうど良い
- 短期間でも意外といろいろ勉強できる
- 持ち玉の数は正義
言語やFWに関係なくアーキテクチャ話に付き合ってくれる人、ご飯行きましょう