このブログから約一ヶ月が経った。創業期の会社ではどんなことが起きているのか、自分の体験ベースで少しずつ書いていく。これは自分やチームに限った話かもしれないので参考にはしないでほしい。
学習と業務
チームにはScala初心者と、そうでない人が同じくらいの割合でいる。しかし全体の進捗はそれほど差がないのが現状だと感じている。それはできる人のフォローアップが素晴らしいのはもちろんだが、初心者側の開発にも工夫がなされているからだと感じる。
基本的に言語習得するには業務コードを書いて問題にぶつかるのが近道だと思っている。エラーコードは完璧ではないが、自分が何を理解していないか的確な粒度で伝えてくれるし、業務でのエラーは書いたコードのよくわかっていない部分が原因になることが多いからだ。そうしてぶち当たった問題を理解すべく体系的にまとめられた媒体で学習したりして進めている。これ自体はかなり当たり前のことかもしれない。
これまでと違う部分は、わからない部分は即周りに聞いていることだ。具体的には15分くらい迷ったらすぐに質問している。相談ではなく、起きている問題を伝え、的確な答えの探し方を質問している。これまでは30分や数時間迷ってから共有した挙句、すごく単純なミスだったとき「なんて愚かなのだ自分は」と反省して終わりだったが、それでは失うものが多すぎる。今一番大事なのはいち早く動くものを作り、本当に必要なものかどうか検証することであり、自分の能力を頑張って高めていくことではない。もちろん自己研鑽が全く必要ないという意味ではない。その精度を高めていくようにしている。一瞬恥をかいてでも前に進める方が重要であり、個よりも全体のバランスを大切にしようということだ。
それを助けるのが個人チャンネルでなんでも困ったことを吐き出すという習慣であり、Working Out Loudというそうだ。なんでもいいから迷ったら声をあげればいいだけだ。フォローアップへの効果も大きいが、業務委託などで非同期に働くメンバーも多い中で、お互いの情報共有などにも役立つので明らかに効果が出ている。やっていてよかったなと思うのは、誰かの時間を一方的に奪っていないという点だ。
Working Out Loudについて書かれたブログはこちらがおすすめ
Twitterでぼんやり困っていることを共有したら、強い人が反応してくれる体験はよくあると思う。みんな無意識にできるのだ。そんな感じでなんとか仕事を進められている。
今のプロダクトでは、
- 決済基盤、サブスクリプション、SaaSの事業ドメイン
- Scalaで関数型プログラミング
- DDD(ドメイン駆動設計)
- マイクロサービスアーキテクチャ
- Eff(Extensible Effects)
といった自分がこれまでちゃんと関わったことのない新しいことだらけの状態だが、みんなで協力しながら理解し、開発を進めていくのはすごく楽しい。作るほどわからないことがでてくるが、その分理解も進んでいく。こういうことをやりたかったのだと改めて実感したのだった。
複雑な事業ドメインとエッジな開発に興味のある方はご連絡ください。