Technology / Development Issues

コンウェイの法則 - 「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう」

組織とアーキテクチャの関係について論ずる時、必ずと言って良いほど引用されるのが、このコンウェイの法則です。この法則は多くの組織とアーキテクチャについて当てはまり、Everforthもその例外ではありません。Everforthの歴史を紐解きながら、採用してきたアーキテクチャ戦略について紹介します。

1. 好きな時間に好きな場所で開発する

Everforthは働く場所も時間も自由な会社です。社員は北海道から沖縄まで点在し、海外を拠点とする人もいますし、日中に働く人もいれば深夜に働く人もいます。ですから必然的に集まる場所はオンラインが中心になり、ビデオ会議などのリアルタイムなコミュニケーションよりも、チャットを利用した非同期なコミュニケーションが中心となります。連絡や相談はChatwork、Slackなどで行ない、ソースコードなどはGitHubやBacklogで管理、またドキュメントなどもGoogle Workspaceで共有しています。

もちろんそれだけでは人と人のコミュニケーションは上手くいかず、意思疎通で齟齬が起きたり、非効率であったり、あるいは関係が希薄になりがちですから、Web会議での定例やオフィスでのミーティングなどを各プロジェクトで方針を決めて行っています。またオフィスやホテルに集まるイベントなども年に何度か開催しています。

Everforthでは設立以来このようなオンラインとオフラインを組み合わせた自由な働き方をして、それを前提とした開発プロセスを採用していましたから、2020年に社会の状況が一変した際にも皆の働き方が大きく変化することはありませんでした。

2. 自由の中にも規律を作って成果を出す

Everforthは作ることが好きなエンジニアたちが自由に働く会社ですが、好きなことだけやって好き勝手に作っていても上手くはいきません。会社として成り立たせるためにはエンジニアたちが連携して、ビジネス的な成果を出すことが求められます。そのためにはある程度の規律や基盤が必要となるのです。

そのためにEverforthが十数年前に設立した時点で採用した方針は、頭抜けた技術力を持つCTOが開発の中心として立ち、それを周りのメンバーがサポートするような開発体制を採ることでした。このEngineのアーキテクチャは当時の組織にとてもよくマッチし、CTOがEngineの開発を担うことで中核となる機能の品質・性能を担保し、他の開発メンバーはEngineを信頼することで、ビジネスに特化したサービスの開発に注力することができました。

3. 時代と共に変化する ビジネスや体制に合わせた基盤作り

一方で、この十数年の間にEverforthのビジネスは変化し続けました。最初はblogやCMSなどから小さくスタートしましたが、次第にビジネスの範囲は大きくなり、ECサイト基盤、マーケティングやデータ分析など、多様な機能が求められるようになりました。また、コンピューティングも進歩し、システムを稼働させるインフラはオンプレミス中心からクラウド中心、マネージドサービス中心に移行していった時期でもあります。そしてもちろん、Everforthの組織や働き方に共感して一緒に働く仲間も増え、様々な個性を持つエンジニアが増えました。

そのように時と共にビジネス・インフラ・開発チームが大きく変化する中で、プラットフォームに求められる形も変化するようになりました。それまでの中央集権的な開発体制よりも、新しく増えたメンバー達が自律的に動きながら協調するような開発体制に変わっていく必要があったのです。ちょうど、モノリシックなアーキテクチャからマイクロサービスなアーキテクチャへの移り変わりのような移行が求められたとも言えます。

それぞれのメンバが、自分の価値を最大限に発揮できる言語やフレームワークで開発する、しかしながらそれぞれが好き勝手に開発するのではなく、一定の開発方法論を共有することで効率的に開発できるようになる。そのような開発方法論を目指してEverforthでは新しいプラットフォームの検討を始めています。

つまり組織が変わり続ける限り、その組織が開発するプラットフォームも同じように変わり続けるのです。

4. 優れた集団知性による 新しいプラットフォーム開発へ

ここまでで述べたように、十数年前と現在では、ビジネスの規模や求められるスピードが違います。また、選択できる技術の幅や、また採用も含めた体制なども変化しています。そのような状況の変化に対して個別に対応するだけではなく、組織・アーキテクチャ・ビジネスの全体を俯瞰して見ることで、最適な方針を探し続けています。もちろん現時点でベストだと思った方針が数年後にはベストでなくなる可能性も十分にあります。

次章でも述べられますが、Everforthにおいては全てのことが「継続的な変化」と「適応」が前提とされます。これはテクノロジーにおいても同様です。

「変化」に適応するだけではなく、どのように変化するかも含めて、ただただトップダウンで決めるのではなく、エンジニア一人ひとりが自律的に考え抜き、その意見をぶつけ合うことで、集合としての判断は良いものになるであろうということを信じています。

皆で最適な方針を探し続け、それに沿ったプラットフォームを構築することは、それそのものが抜群に面白いチャレンジだと考えています。集団浅慮にならない、優れた集団知性により新しいものを生み出すチャレンジを楽しめることをEverforthはエンジニアに求めています。