こんにちは。Product Teamでデータサイエンティストとして働いてるGaoです。
データサイエンティスト含め、Product Teamは普段チーム開発を行っており、常時ペアプロをしているのですが、1ヶ月間チームから離れて自由に開発をすることができる「1人プロジェクト」という制度があります。
今回、「1人プロジェクト」をやってみたので、感想等をお伝えできたらと思います。
1人プロジェクトをやるモチベーション
私は新卒として入社し、基本的には常にペアプロ開発をやってきました。
言い方を変えますと、業務中に一人で開発に取り組んだことがないということになります。
チーム開発でできていたことが、本当に身についているか試してみたいという気持ちがありました。
また、チームが取り組んだことのないテーマに取り組むことで、知識が増え、技術力の向上につながると思いました。
取り組んだテーマ
今回取り組んだテーマとしては「テキストに対して、ラベルが紐づくデータからの紐づけノイズの検出」でした。
なぜやるかについては、大きく二点あります:
- 教師データから、ノイズを除去、もしくは学習重みを下げることで、機械学習モデルの精度向上につながる
- 多くの教師データはプロダクトを通して、そのままユーザーに届いているので、もし間違った紐づけであれば、正しい紐づけになおすべき
1ヶ月を終えて、作ったものとしてはGCSにアップロードされているラベル付きデータのパスを指定し、実行すると、ノイズが検出され、結果がGCSに保存されるパイプラインです。
工夫したポイント
最初から精度がよく使い勝手の良いものを一発で作ろうとはせず、徐々に作っていくことを意識しました。
最初は精度を気にせず必要最低限で動くものを作り、アルゴリズムを差し替えられるような設計にしたり、使い勝手の面では、CLI → docker → Kubernetes Jobのパイプラインといった段階を踏みました。
良かった事
毎日チームの雑談時間には顔を出し、困ったことがあれば相談、無ければ一人プロジェクトで気づいたこと、学んだ事をどんな小さなことでもいいから共有するということを続けました。これによって悩みは抱え込まずにすみ、一人プロジェクトで学んだものを自分だけのものではなく、チームのものにできたと思います。
また、ノイズ検出手法の調査では、自分のペースで学習でき、知識が増えました。
伸びしろ
アルゴリズムを変えられるようには作ったものの、終盤で選定するにあたって、定性的な判断になってしまいました。ノイズを意図的に入れたテストセットを先に用意し、評価に使ったほうが、より良かったかもしれないと思っています。
もう一つ伸びしろだったと感じる部分は、上記の取り組み理由の2つうち、どれを達成したいかあらけじめはっきりさせていたほうが、動きやすかったのではと思います。例えば、ノイズ除去による機械学習モデルの精度向上が目的であれば、その効果検証は大事でしたし、もし間違った紐付けの修正を実現させたければ、もっとビジネスサイドの方とコミュニケーションを取るべきだったと思います。
感じたこと
今回の一人プロジェクトを終えて、私が最も感じたことは、チームの大切さです。
チームで開発していた時には気づかなかったことですが、自分は一緒に働いているメンバーから勇気をもらっていたんだなーと感じました。1人プロジェクトをやったことにより、もちろん知識は増えましたし、自信もつきました。しかし、「これで良かったんだっけ」みたいな不安が常にあり、今まではチームのみんなに支えられてたんだと再認識しました。
最後に
過去の1人プロジェクトの感想もありますので、ぜひそちらもチェックしてみてください。 tech.uzabase.com
また、ユーザベースではエンジニアを募集しています。
ぜひ、興味を持たれた方はエントリーをお待ちしております。 apply.workable.com apply.workable.com