チームワーク

Catchpoint テクノロジーグループ ― チームワークの大切さ

2022年9月12日
翻訳: 島田 麻里子

この記事は米Catchpoint Systems社のブログ記事 The Catchpoint Technology Group: It Takes a Teamの翻訳です。
Spelldataは、Catchpointの日本代理店です。
この記事は、Catchpoint Systemsの許可を得て、翻訳しています。


最近、Catchpointのサマーインターンの高校生に、ソフトウェアエンジニアリングとは何かということを話していました。
彼らは一週間ずつCatchpointの各部署で過ごしており、先週はCatchpointテクノロジーグループと一緒でした。

もしあなたが熟練した技術系企業のソフトウェア・エンジニアリングのプロなら、この記事はあなた向けではないでしょう。※
大学進学を考え始めなければならないと言われても、自分が何をしたいのか、どんなスキルがあれば「現実の仕事」に応用できるのか、まったくわからないという学生たちに向けたものです。
在学中に専攻を変える大学生が80%以上いますが、その理由は、何かを勉強し始めたものの、それに対する情熱を持てなかったり、正直言って難易度が高すぎることに気付いたりするためです。

それでいいんです! 就職活動のポイントは、週に40時間以上働けるほど楽しい、社会に役立つ仕事を見つけることです。
この記事に関してはと言うと、ソフトウェアエンジニアリングがあなたに向いているかもしれないし、そうでないかもしれません。
ソーセージがどのように作られるのか、そして技術系企業には「コーダー」以外にも多くの役割があることを示すのが狙いです。

※ このブログ記事の見直しにあたり、以下の記述が、エンジニアと仕事をしている人、あるいは社内にエンジニアがいる人、あるいはソーセージがどのように作られているかを理解したい人にとって、複雑な状況をよりよく理解するために役立つのではないかとご指摘いただきました。
もしあなたがそうであるなら、恐らくこの記事はあなたにも同様に向いていると思います。

高校生のインターン生とは、学校でどんな勉強をしているか、趣味は何かという話をしました。
(コンピュータサイエンスや数学……また、左脳と右脳が混在する芸術や演劇も、素晴らしいエンジニアを生み出す可能性がありますね!)
そして私たちは、ソフトウェアを作るには何が必要なのか、チームによってどのような役割があるのか、という話を始めました。

Catchpointテクノロジーグループの仕組み

Catchpointでは、テクノロジーグループにいくつかのチームがあります。

テクノロジーグループのチーム
テクノロジーグループのチーム

各チームは、私たちの製品が「必要なときに、必要なことをする」ことを確実にするために不可欠な存在です。

いくつかのチームは「常時接続」です。

ノートパソコンが壊れても、コーポレートITチームが助けてくれます。
テクニカル・オペレーションチームは、生産システムが正常に動作していることを常に確認しなければなりません。
DevOpsチームは、CI/CDパイプラインが円滑に稼働していることを確実にすることが求められます。
プロジェクト・マネジメントチームのメンバーは、チーム全体が円滑に運営されていることを確認し、継続的な改善のアイデアを適用しています。

これらの責務に加え、上記チームや他のチームは、アジャイルソフトウェア開発ライフサイクル(SDLC)にも参加しています。

アジャイルソフトウェア開発ライフサイクルはどのように機能するのか

ほとんどのアジャイルSDLCの図は、ライフサイクルのステップを次のように挙げています。

アジャイルSDLC ライフサイクル
アジャイルSDLC ライフサイクル

アジャイルの基本的な考え方は、小さな部品を作り、反復作業を頻繁に行うことです。
最初から機能の複雑さをすべて定義できる人はほとんどいないため、この方法は有効ですが、彼らはそれを始めるのに十分な知識を持ち合わせており、チームはその機能を改善し続けるために反復作業を行うことができます。
顧客に提供できる状態になったら、リリースとなります。

それぞれのステップに、ここCatchpointでは「メインステークホルダー」が存在します。
しかし、これらのチームの多くは、ライフサイクル全体を通して関与しています。

典型的な機能がどのように開発されるか見てみましょう

誰かが「この機能を開発してほしい」と言ってきました。
次はどうするのでしょう?

要件の収集

プロダクト・マネジメントチームが動き出します。

作業項目に優先順位をつけ、定義していきます。
それらを定義するために、プロダクト・マネージャーは、顧客や業界の専門家など、協力してくれそうな人に話を聞きます。
彼らは、データ分析チームにその機能についての洞察を求めるかもしれません。

設計

設計は通常、いくつかの異なるフェーズで行われます。

ユーザ体験デザインチームのメンバーは、顧客がこの機能をどのように利用するかを考え始めます。
プロセスの早い段階で、ソフトウェア・エンジニアリングチームテクニカル・オペレーションチームがその実現可能性を評価します。

セキュリティチームは、あらゆるセキュリティへの影響を考え始めます。
品質保証チームは、新機能を理解し、それが正しく動作することを検証する方法(テストプランとテストケースの作成)を考えることから始めます。

開発

さて、いよいよ新機能の作成に入ります。
Catchpointでは、それは恐らく、異なる専門性を持つそれぞれのソフトウェア開発者たちのことを意味します。

フロントエンドの開発者は、顧客が直接操作するソフトウェアの一部を作る必要があり、それは美しく、使いやすく、高速でなければなりません。
バックエンドの開発者は、すべてのデータをフロントエンドに届けます。

Catchpointの場合、彼らはネットワークやアプリケーションを測定するソフトウェアや、これらのデータを高速に取り込み、クエリするための専用NoSQLデータベース「Orchestra」を使って書き込むこともあるでしょう。
開発者がソフトウェアを書いている間、プロダクト・マネジメントチームユーザー体験デザインチームのメンバーは、要件に関するあらゆる質問に答え、実装を容易にするための様々なオプションについて開発者と話し合います。
品質保証チームはテストケースを作成し、ソフトウェア開発者プロダクト・マネジメントチームがすべてをカバーできるようにします。

テスト

このフェーズは、物を壊すのが好きな人のためのものです。

ソフトウェア開発者は、自分たちでテストしたコードを品質保証チームに渡し、検証してもらいます。
品質保証チームの仕事は、ソフトウェアがリリースされる前に、そのソフトウェアの問題点、つまりプロダクト・マネジメントチームが指定した動作と異なる動作をするものをすべて見つけ出すことです。
パフォーマンス、機能性、画面上のおかしな色など、何でもです。

問題(バグ)を見つけたら、他のチームと協力してそれが問題であることを検証し、解決に導きます。
この段階では、脆弱性スキャン、侵入テスト、ストレステストなど、機能によって異なるセキュリティテストも行われます。
テストはすべて、DevOpsチームが管理する「プリプロダクション」環境で行われ、何らかの問題が発生しても顧客に影響が及ばないように配慮されています。

この段階で、誰か(通常はプロダクト・マネジメントチーム)が、その機能を顧客にリリースする準備ができているのか、それとも先に追加すべき機能があるのかを決定します。
その場合は、要件定義段階まで戻って繰り返し作業します。
それが終われば、いよいよdeploy(展開)です。

展開

展開フェーズが始まる前に、DevOpsチームは可能な限り自動化がされていることを確認します。
このチームは、実際の顧客のソフトウェアには触れませんが、リリース後の展開や運用を支援するためのソフトウェアを作成します。
また、この段階で、テクニカル・オペレーションチームエンジニアリング・エスカレーションチームに、作成中のソフトウェアを顧客のために運用する準備ができるよう、あらゆる技術的な引き継ぎが行われます。

メンテナンス

SDLCの最後のパートは、ソフトウェアを本番稼動させ、正しく動作しているかどうかを監視し、問題があれば対処することです。
テクニカル・オペレーションチームは、すべてが正しく機能していることを確認します。
問題が発生した場合、エンジニアリング・エスカレーションチームは何が問題なのかを把握し、顧客や他のすべてのチームと連携して解決にあたります。

祝杯の時!

この機能が顧客にリリースされたので、お祝いをしましょう!
オフィスにいるときは、たいていドーナッツプラントのドーナッツです。

ドーナッツプラントのドーナッツ
ドーナッツプラントのドーナッツ

リモートでは、オールハンズミーティングでお祝いしますし、もちろん人が集まれば直接お祝いをします。
そして、次の機能に向けて!

Catchpoint チーム・ミートアップ
Catchpoint チーム・ミートアップ