一流のエンジニアリング:火花が目覚める
私はMatchboxBrasilのテクノロジーリーダーとして1年を終えました。この期間に学んだいくつかの勝利と教訓を記録したいと思います。

やあみんな、元気?
この投稿では、昨年のマッチボックスで行ったすべてのことを振り返りたいと思います。2021年5月に参加して以来、私は一人で何もしていません。
誰もが理解できるように、Matchboxは2017年に設立されたサンパウロのHR Tech(HRスタートアップ)であり、2020年の終わりにHRのマーケティングプラットフォームであるB2BSaaSであるSparkを立ち上げました。
私は最近、成功したキャリアの4つの柱についてのThiago Ghisiによる非常に興味深い投稿を読みました。このフレームワークを使用して、この投稿の概要を説明します。
したがって、事実の時系列順をたどるつもりはありませんが、主に私たちの主な進歩と学んだ教訓を引用したいと思います。
プラットホーム
第1の柱->プラットフォーム—コードベース、スクリプト、インフラストラクチャ、CI / CDパイプライン、バッチジョブ、アーキテクチャパターン、データベース、特定のプログラミングパラダイムまたは言語、フレームワーク、ツール、またはライブラリに関する技術スキル。一般に、エンジニアだけが見て評価できるすべてのもの。エンジニアの仕事の中心は、ツールで問題を解決する能力です— Thiago Ghisi
プラットフォームとして、プロジェクトの標準化で多くの進化を遂げました。現在、Typescript用に書き直したモノリスと、Node.jsバージョンとTypescript用の書き直しの両方を標準化した他のリポジトリのサーバーレスマイクロサービスがあり、OTEL、X-Ray、ラムダインサイト機能を有効にすることに加えて、これらのプロジェクトのリリースプロセス、クラウドアクセス許可の関連付け、リリース中のすべての依存関係の作成。
まだ改善すべき点がたくさんあります。下の画像と同じフローを使用するプロジェクトがいくつかあります。マスターブランチがあり、新しい機能をデプロイするプロセスは、ブランチとメインブランチのマージから始まります。 、ただし、このトリガーがプロジェクトリポジトリリリースによってのみ実行されるプロジェクトがすでにいくつかあります。

私たちが大きく進化したもう1つのポイントは、開発プロセスのほぼすべてのプロジェクトにSonarQubeを配置したことです。各プルリクエストはコード分析を経て、複雑さとセキュリティの両方の観点から、行われる変更の改善に関する洞察をもたらします。
この点に関する私たちの主な成果物は、間違いなくMongoDBのデータモデリングを解決したことです。100%正しくなり、すべてがすでに解決されているとは言いません。これは、私たちの努力が必要なシナリオがまだあり、ケースの戦略を保証して考えるためにいくつかの負荷テストに取り組んでいるためです。 -ケースバイケース。
しかし、私が祝うことができるのは、この改造では、データベースへのすべてのクエリを再検討する必要があり、マングースモデルを一元化するライブラリを作成し、いくつかの再利用可能な機能をいくつかの場所に一元化したことです。私たちは、会社の戦略に従って、才能に焦点を当てて新しいモデルを設計しました。これにより、最終的にプロジェクトを拡大することができます。
使用するSQSキューで調整と微調整を行い、エラーを発生させたメッセージバッファーの一部のみの処理と再処理に遅延を追加しました。これにより、ラムダで70%以上の節約が実現しました。 (1か月から次の月までの平均で400米ドルから90米ドル強ですが、レビュー期間が短いため、変動が生じる可能性があります)。
フロントエンドでは多くの変更が加えられ、CRA自体を使用する前に、新しいReactフレームワークとしてNext.jsを採用し、ビルドおよびリリースプラットフォームとしてVercelを採用しました。さらに良いことに、両方のプロジェクトが本番環境で一緒に実行されています。ルーティングシステムを使用して、NextからCRAに転送し、Nextに渡されていないページを機能させます。これにより、Nextのルートでマイクロフロントエンドを使用できるようになります。これはまだそれほど多くはありませんが、すでに多くの可能性を開いています。
この変更は多くのメリットをもたらしました。これは新しいプロジェクトであるため、Atomic Designを詳しく調べ、最初から持っていた多くの複雑なコンポーネントをやり直し、Reduxを削除し、ContextofReact自体を採用しました。React Testing LibraryとJestを使用してより多くのテストを適用し、より優れた、より高速な成果物を生成し始めました。

製品
第2の柱->製品の配送。それはアプリ、ウェブサイト、プラグイン、ガジェットです。それは外部です。それは、ユーザーが使用しているもの、ユーザーが持っている経験、利用可能なリソース、ユーザーが実行できること、アクションを実行できる速度、速度、セキュリティ、および信頼性の認識です。これは、ビジネス側がテクノロジーチームによって提供されると考えているものであり、会社の収益性を高めます。—チアゴ・ギシ
製品に関しては、後で説明する 配信に加えて、ユーザーとのユーザビリティ調査を行いました。これは、プラットフォームエクスペリエンスに直接影響し、クリック数を減らし、作業領域を増やしました。および製品内の他のダイナミクス。
また、上記のプラットフォームのアクションの中には、プラットフォームのパフォーマンス、速度、信頼性の認識に直接影響を与えたものもあります。これは、以前は持続不可能で非常に悪かったものでしたが、ますます使用され、良いものになっています。より楽観的。

参加するとすぐにメールキャンペーンモジュールを配信しましたが、それ以来、多くのことが改善され、撮影での評判が高まり、キューアーキテクチャ、キャンペーンテンプレート変数のアセンブリと収集が改善され、フロントエンドの改善に投資されました。今日の調整により、プラットフォームは1か月あたり900,000を超える電子メールに対して平均120の電子メールキャンペーンを配信します。
大規模なアップの量にはほど遠いですが、ここでのメッセージは、さらに多くのキャンペーンを送信する準備ができているということです。

タレントベースをセグメント化し、これらのトリガーを自動化せずにメールキャンペーンをトリガーするモジュールを用意することはあまり意味がありません。その意味で、大幅に改善されました。
私たちの基盤は300万人に近く、数千の動的セグメンテーションとアクティブな自動化があります。セグメンテーションはスケジュールされたバックオフィスプロセスであり、タレント間の検証を実行するため、実行に莫大な処理コストが発生しました。処理コストがはるかに低いセグメンテーション内で検証されるため、ほぼリアルタイムのプロセスが、はるかに高速で、はるかに低いコストで実現されます。
HR Botを購入し、製品バスケットに追加しました。HRBotは、従業員向けのAIを使用して疑問を解消し、質問に回答することでHRの多くの問題を解決するため、人材の旅をより水平的に見ることができます。HRボットの導入とSparkへの統合に取り組んでいます。
Spark内にチャットボットモジュールを提供します!その中で、FAQ、疑問、サービスに広く使用されている意図の識別を備えたチャットボットがあるHR Botとは異なり、ここでは顧客が事前定義されたフローでチャットボットを作成することができます。これは、いくつかを満たすのに役立ちます入学、退出調査、さらには採用など、HR内の他のユースケース。

そして、いくつかの調査とインタビューの後、使いやすさを進化させ、さらに多くのアクションを含めました。チャットボット内で、下の画像に加えて、事前定義されたテンプレートを使用してユーザーが新しいチャットボットを作成するのを支援しました。チャットボット自体だけでなく、管理面でも多くの改善を提供しました。

私たちの開発トラックには、さらに多くの配信、新しい登録フロー、新しいパイプラインのリリース、その他のニュースがあります。
また、 Spark認定など、顧客による製品の採用に大いに役立った、Matchboxのマーケティングおよびカスタマーサクセスチームによって実行されたいくつかの教育活動についても言及する価値があります。
プロセス
第3の柱->プロセスと文化。それが方法です。—チアゴ・ギシ
プロセスについて話すとき、最初の数日間で多くの改善点があり、開発用トレッドミルが提供されたすべての方法ですべてを変更したかったことを覚えています。
現実は厳しく、納得させるのに少し時間がかかりました。まだまだたくさんの仕事があります。問題だったのは遅れではなかったと思いますが、それを持ってきて征服したのかもしれません。仕事がどのように行われたのか、どのように行われたのかを質問したとき、その方法が最善かどうか疑問に思い、時間の経過とともに多くのことを変えることができました。

昨年は多くの配信を行いましたが、これは過去90日間のほんの一部であり、1営業日あたりの平均配信率はすでに8PRです。私が1年間カットアウトを持っていた場合、配信なしで間隔が長いこれらの高いバーがこのカットアウトにはるかに多く存在する可能性があります。これらの配信は、配信日またはプレゼンテーションに関連していると確信できます。配信は毎週行われ、利害関係者へのプレゼンテーションと結婚しており、毎日独立しているわけではありません。今日でもいくつかのコミットメントがありますが、すべての配信が1日で同時に行われる場合よりもエラーの影響を受けにくくなっています。 。
チームの全員にとってはるかに明確になり、継続的デリバリーの一部であるもう1つのポイントは、コードを本番環境に移行することです。落ち着いて、あなたはそれを間違って読んでいませんでした、私たちは承認プロセスを経ずにコードを本番環境に入れました、私たちはテストとして使用する承認/開発環境を持っています、そして私たちは機能承認を行います、しかし例えば、いくつかの新しいページ、新しいモジュールでは、本番環境またはその環境のテスト会社で非表示のページを使用して承認できます。これにより、承認が本物であることを確認できます。また、既存のもの、移行、その他のでたらめに大きな変更を加える必要がある場合に、 Optimizely機能フラグを設定してこのプロセスでさらに役立つように取り組んでいます。

運用を大幅に改善しました。最初は特定の人に大きな作業負荷がかかっていましたが、それでも少し低いレベルですが、それまでのサイズと機能の量、特に成熟度の高さからです。製品、何かがうまくいかなかったり落ちたりしたとき、私たちは動かなかった、誰か、そしてそれはいつもほとんど同じ人々が彼らがしていることを止めて私たちのクライアントに起こっている問題を調査しなければならなかった。
私はいくつかの戦略を実行し、より多くの援軍が到着し、チームに分かれて行動の範囲を分けました。主に調査と必要なものに時間を費やすために、主にAWSとMongoDBのサプライヤーと一緒に現金を燃やし始めました完了したので、財政的救済のために10万ドル以上のクレジットを獲得できました。チームに、何をする必要があるか、技術的負債はまだ残っているか、キューと処理時間を改善するために何をする必要があるか、ボトルネックは何かについて話させました。 、いくつかの議論の後、私たちは行動計画を立て、新しい実装のラウンドの後にいくつかの結果を得ました。
コードを毎日本番環境に導入し、運用を低レベルに保つには、リーダーとしての配信の品質を向上させる必要があります。これは、私たちが日常生活に適用し始めた、基準を引き上げるのに役立ったいくつかのプラクティスですが、それでもまだまだ先は長いです。
いくつかの技術的な洗練の儀式は、特に新しいインフラストラクチャやアーキテクチャを構築する必要がある場合は、製品チームにノーと言って、事前に妥当な間隔で行う必要があります。日にち。
開発用トレッドミルにユニットテストと自動テストを含めることは不可欠ですが、このステップを適用しなかったチーム内でそれを実践することは容易ではありません。実際のテストの開発を練習するために、 dojoと呼ばれるいくつかのラウンドを実行し、100%のテストカバレッジにもかかわらずユースケースをテストする理由を説明しました。

コードレビューは、より良い配信と自己管理チームの成熟のために不可欠です。ここでは、まだRDステーションにいたときにこの記事に書いたすべてを複製しようとしました。
人々
第4の柱->人とリーダーシップ。これは2番目の方法であり、おそらく最も重要です。—チアゴ・ギシ
はい、人が最も重要です!私のチームは私の最大の資産です。それがなければ、エンジニアリングリーダーとして、上記の他の3pを書くことはできません。あなたはそれを揺さぶった!
私は軍隊に会わなければなりませんでした、ここマッチボックスの多様性は本当の公式です、私は開発者、セキュリティ、開発者の間に15人のリーダーがいます、4人は女性、3人は黒人、1人はゲイです、私たちは私が望むほど多様ではありませんが私はより多様なプロファイルを受け取ることにオープンです。現在、チームには4人のジュニアがおり、より多くの初心者を受け入れるためのインターンシッププログラムを作成しています。
3つの製品、CSおよびEngineering All Hands、20を超えるHH(ごくわずかですが、継続的な改善の過程にあります)、チームメンバー、同僚、および「議長」(内部ニックネームI)との500を超える個別の会話がありました。 CEOにどこに行けばいいのか、上司に申し訳ありません)。
たくさんの難しい会話、フィードバック、耳を引っ張る、期待の調整、そして私がこのチームのすべての人を助け、サポートするために私がしたことを想像することができます。
多くの昇進、キャリア開発、現れた機会など、私たちが何とか達成できたことが間近に迫っています。ここMatchboxでは、6か月ごとにすべての従業員を再評価しています。
これらすべてのことは、キャリアについての会話と、それぞれの個人的な義務のツアーを構築することによってのみ可能になり、誰もが自分のキャリアに責任があることを明確にしています。
この全期間中、私も多くの助けを受けました。Lazariniとメンターシップを行い、エンジニアリングマネージャーと話をして、Tour of Dutyを構築しました。また、Linkedin、Whatsapp、Google Meetでのメッセージや会議で、いくつかの質問を交換しました。
私はエンジニアリングのリーダーシップを拡大し、Matchboxerサイクルのコースを受講し、Matchboxの他のリーダーの助けを借りて内部メンタリングを適用し、すでにいくつかの成果を上げています。
チーム自体が毎週木曜日にHoradoSaBEERで知識を共有する数十の講義を行い、過去6か月のベストを人気投票で授与しました。
私たちはオンラインで、そして直接、講演者としてイベントに参加し、私たちの知識を広め、共有し、より良いことがやってくるのです!
結論
ふぅ、私はたくさん書いたと思います、今年はあっという間に過ぎました!一緒にたくさんのことを学びましたMatchbox| 製品、CS、エンジニアリング、そして私たちはまだ征服して改善することがたくさんあります、上に行きましょう!
すぐに、マッチボックスエンジニアリングのもう1年前のこと、業績、そして私たちがどれだけ進化したかについてお話ししたいと思います。それは困難でしたが、昨年は2021年と2020年の比較で93%以上成長しました。
カーニバルは4月だったので(笑)、2022年はまだ始まったばかりです。
私はこのテキストを完成させることができず、会社のHRに、この経験を書いて私たちの欠員とリンクを共有するように促す力を与えることができませんでした!
