見出し画像

継続的に自社プロダクトを開発するため Tandems でやっていること

環境づくり

フルリモート

Tandems ではフルリモートを採用しています。 以前は出社 or リモートを選べるようにしていましたが、新型コロナウイルスの感染拡大が深刻化して、フルリモートに移行しました。 もともとリモートでの開発もしていたため大きな問題はありませんでしたが、やはりカジュアルな会話が減ったなと感じていました。 そこでメンバーから提案のあったオンライン会議ツールの Gather を導入してみると思った以上に活用され、今では手放せないツールの 1 つになっています。

月 1 でメンバー全員でオフライン作業

月 1 回実施している全社会議はオフラインでやるようにしています。 シェアオフィスを借りているので当日は早めにみんなで集まって作業しています。 カジュアルな会話は後述する Gather で増えましたが対面で会うことも大事だなと考えます。

新規事業提案制度

Tandems ではサービスアイデアを公募する制度を設けています。 アイデアを持っているメンバーは自由に応募し、採用された場合はプロジェクトを立ち上げて事業化を目指します。 現在もメンバーから挙がったアイデアを具体化しプロジェクトを立ち上げて開発を進めています。
今後はアイデアソンやハッカソンなども実施していきたいなと考えています。

テック関連の技術書、サービス、セミナー費用の補助制度

そのままですね。技術に関わることであれば可能な限り会社として補助します。

リモート開発補助制度

メンバーが作業環境を整える際に、必要な物品の購入にかかる費用を支給する制度になります。 フルリモートなので自分の作業環境はいい感じにして作業効率を上げていってもらいたいですね。

メンバーとの 1on1

1on1 ミーティングとは定期的に部下と上司が 1 対 1 で行う面談のことです。 以下を目的として進めています。

  • 成長の促進

    • 経験したこと、考えていること、今後やりたいことを話し合い成長を促進、支援できるようにしています。

  • 思考整理のサポート

    • 仕事の仕方、キャリアプランなど 1 人で考えると迷走してしまうので方向性を示したりしています。

  • 個人目標の状況確認

    • 後述しますがメンバーそれぞれに個人目標を立ててもらっていて、進捗を確認したり、方向性のずれがないか確認します。

日々の業務

デイリースタンドアップ

スプリントの透明性を上げることを目的としています。
進め方は以下のような内容をメンバー全員に聞いていきます。

  • 昨日やったこと

  • 今日やること

  • 問題点・共有したいこと

注意しなければならないのは他人事にならないことです。 他人事になってしまうと、この集まりは無意味になってしまいます。

スプリントプランニング

スプリントの計画を立てます。 タスクの優先度、ベロシティを意識しそのスプリントで達成できるであろう計画を立てていきます。 その際、達成するために問題点がないか議論します。

スプリントレビュー

スプリントの成果を確認し、フィードバックを引き出しバックログの追加や優先度変更などを検討します。

スプリントレトロスペクティブ

スプリントのふりかえりの会議です。 スプリントレビューはスプリントの成果についてフォーカスを当てますが、スプリントレトロスペクティブではプロセスにフォーカスを当てます。 プロセスを振り返り、議論することで次のスプリントの効果と成果物の品質を上げることができます。

コードレビュー

コードレビューの大きな目的はシステムの品質の担保, メンバーのスキル向上になります。 案件によって変わってきますが基本的にテックリードともう 1 名が承認したもののみマージできるようにしています。 コードレビューの大きな目的は、システム品質の向上ですがいくつかポイントがあります。

  • 可読性

    • 命名が適切か、必要なコメントが書かれているか、複雑度が高くないか

  • 保守性

    • 適宜関数化ができているか、メンテナンスしやすいか

  • 冗長性

    • 処理が冗長になっていないか

  • テスタビリティ

    • テストを書きやすいか、必要なテストが網羅されているか

  • パフォーマンス

    • パフォーマンス低下につながる箇所はないか

もちろん Linter を導入してコードレビューのコスト削減もしています。

モブプログラミング

モブプログラミングとは複数人で 1 つの成果物を生み出す開発手法になります。 みんなで同じ画面を見ながら開発を進めることができるのでプロジェクトの立ち上げ時や全体で認識をあわせて開発を進めていきたい時に効果的です。

開発ツールの選定

Slack

Slack はメッセージングアプリです。 基本的に開発時のコミュニケーションは Slack で行います。 Slack では "情報は流れる" という前提で使っています。残しておきたい情報は後述する Notion を使ってまとめるようにしています。

Gather

Gather はオンライン会議ツールです。 Tandems ではフルリモートを採用しているのでどうしても気軽に質問しづらかったり、雑談が減ったりなど問題を抱えていました。 Gather を導入して、想像してた以上に利用されていて、コミュニケーションが増えたなと実感しています。

Linear

Linear はプロジェクト管理ツールです。 もともと Pivotal Tracker を使っていましたが UI や他のサービスとの連携などで不満を抱えながら使っていました。 Jira, Backlog, Wrike, Trello など検討しましたが Linear が一番開発体験が向上しました。 まだ導入したばかりなので使用感など別の記事にまとめていきたいと思います。

Figma

Figma はデザインツールです。 資料、プロトタイプ、デザインの作成に利用しています。 個人的に Figma でのデザイン体験が最高すぎて他サービスとは比較せずに決めてしまいました。 利用していて困ったこともないのでこのまま使っていきます。

Miro

オンラインホワイトボードツールです。 以下のようなメリットがあります。

  • 直感的に操作できる

  • 共同編集できる

  • テンプレートが充実している

Tandems では以下のような使い方をしています。

  • 仮説検証

    • カスタマージャーニーマップ

    • ペルソナ

  • マインドマップ

    • 思考整理

  • 技術的ダイアグラム

    • 視覚的に伝えると効果的な資料作成

Notion

Notion は情報管理ツールです。

Notion は様々な活用方法がありますが Tandems では以下のような使い方をしています。

  • 会議の議事録

  • 社内 Wiki

    • ナレッジの蓄積、共有

  • オンボーディング

    • 入社してすぐにやることを明文化する

    • 困ったら情報を探せるようにする

技術の標準化

技術の標準化には複数の観点があると思っていて、まずプロジェクトを横断して標準化しているのが以下になります。

  • タスクの粒度(できるだけ小さく)

  • 見積もりの方法

  • コードレビューの観点

  • 仕様書のフォーマット

  • 大まかな実装方針

これらを標準化することよって得られるメリットが、チームを超えて業務を担当する事が出来るようになるということです。 Tandems では複数のプロジェクトが動いているため、興味を持った案件にスムーズに入れる環境作りが大事になってきます。

プロジェクトによって変動するのが以下になります。

  • アーキテクチャー設計

ただ会社として大きく使用する言語、フレームワークは固定しています。 理由としては "ナレッジマネジメントしやすくなる" というのが大きくて、社内として教育しやすいような形にしています。 とはいえ、エンジニアが自分で考える幅が狭くならないために定期的に技術について話し合う場を設けていて、 いい言語、フレームワーク、ライブラリ等があれば積極的にみんなで話し合って導入するようにしています。

ナレッジの共有

プロダクトを開発していると、良い事も悪いこと色々とナレッジがたまっていきます。 それらを社内で共有することによってプロダクトの品質を高めるようにしていっています。 ナレッジの蓄積には Notion を使っていますがいまいちなので以前使っていた Scrapbox を再度導入するか迷っています。

個人のスキル向上

テックブログ

社内で話して以下のようなメリットがあると感じたのでコーポレートサイトをリニューアルするタイミングでテックブログを開始しました。

  • アウトプット能力向上

  • 会社、個人のブランディング

  • 採用力の強化

  • 知識の定着

勉強会

勉強会はまだ定期的には開催できていなくて、今後増やしていきたいなと思っています。 以下のようなメリットがあるため個人のスキル向上に効果があるなと考えています。

  • アウトプット能力向上

  • 社内でのナレッジの共有

目標設定

Tandems では OKR(Objective and Key Result) という目標管理フレームワークを導入しました。 OKR とは Objective(達成目標)& Key Results(主要な成果)の略称です。

OKR ではまず企業全体の「達成目標」と「主要な成果」を決めます。 次に企業の達成目標とリンクさせながら、チームの OKR、個人の OKR の順に細分化しながら設定していきます。 企業が求めている結果が個人の目標となり、企業と個人の方向性が統一され、認識の不一致がないようになります。

Tandems のこれから

すべてメンバー全員で話し合い、メンバーの納得を得られた施策で生産性を向上するようにしています。 まだ自社のプロダクトは少ないですが、ミッション "ともに未来を実装する" のようにみんなで協力し世の中を豊かにするプロダクトを世に出していきたいです。




この記事が気に入ったらサポートをしてみませんか?