ジェネレーティブ(Generative、生成的)な文化には、明確な目標意識、高度な協調、そして学びがある。ジェネレーティブな文化の中には、学習の時間と新たなアイデアを提案する空間がある。
Redgateでプロダクトエンジニアリングの責任者を務めるJeff Foster氏はQCon London 2020で、ジェネレーティブな文化を作り上げることによってRedgateがいかに製品開発の方法を改善したか、というテーマで講演を行う予定である。このカンファレンスは3月2~6日に開催される。
Foster氏によると、ジェネレーティブな文化とは、新たなアイデアを尊重し、実験を推奨し、失敗から学ぶことを推奨する文化である。このような文化の下で働きたいと、ほとんどの人が願っている。
Redgateではモブプログラミングを奨励しており、これがアイデアの自由でオープンな交換を実現している。さらに、学習のための時間を確保し、オープンソースイベントや社内カンファレンスを定常的に実行している。
Redgateの大きな課題は、成長する企業の中で文化を維持することだ。そのためには、新たな参入者に対するRedgateの文化の適用をいかに支援するか、従業員のベストを引き出すための環境共有をいかに行うか、といった問題に回答しなければならない。
InfoQは氏にインタビューして、Redgateの文化や、ジェネレーティブな文化が社員の日常作業をいかにサポートするかについて聞くことにした。
InfoQ: "ジェネレーティブな文化"をどのように定義しますか?
Jeff Foster: 定義しなければならないとすれば、それは私が仕事をしたい環境である、ということです!
もっと形式的な表現としては、Ron Westrum氏が紹介している、文化を説明するための類型論があります。氏は3つの形式を説明していて、それらはすべて組織が情報を処理する方法によって測ることができます。"病的な(pathological)組織"では、情報は(共有すべきものではなく)権力の根源です。これが作り出すのは、共同作業がほぼ不可能な状況です。
"官僚的な(bureaucratic)組織"では、極めて形式的な運用手順が用いられます — 情報はAからBへと渡されますが、正しい手続きに従った場合に限られるのです。対応は非常に遅く、書類作業が中心です。ソフトウェア企業であれば、修正を行う度に正確に記入された書面の提出を求めるような、変更承認委員会(change advisory board)をイメージすればよいでしょう。
そして最後に到達するのが"ジェネレーティブな(generative)組織"です。この種の組織には、明確に意識されたミッション(何を達成しようとしているのか)と、高いレベルの共同作業が存在しています。全員が同じ方向を目指し、新たなアイデアが歓迎され、失敗は即座に調査されてクリエイティブな解決策が生まれます。
組織へのメリットを別にしても、大部分の人たちは、このようなジェネレーティブな文化の中で働きたいと願うでしょう。
"Accelerate"におけるNicole Forsgren、Jez Humble、Gene Kim各氏の成果は、ジェネレーティブな文化が、単に人々が働きたいと思うだけでなく、組織としてよりよい結果を生み出すものであることを明確に証明しています。
InfoQ: Redgateの文化はどのようなものですか?
Jeff Foster: Neil DavidsonとSimon GalbraithがRedgateを創業した時、目標のひとつとして掲げたのが、彼らの倫理的価値と人としてのあり方を表現する企業文化を構築することでした。これが当社のアドバンテージになっています — 私たちはプロセスの複雑化と官僚主義に対して配慮し、シンプルであろうと努めてきました。実際に、企業の基本的価値のひとつは、"巧妙な単純さ(ingeniously simple)"なのです。素晴らしい職場を作ることは、当社のDNAの一部です。
InfoQ: Redgateでジェネレーティブな文化を構築するために、どのようなステップを踏んだのでしょうか?
Foster: どんなことでもそうですが、万能的な解決策というものはありません。私たちがRedgateで行ったのは、正しいことを行う、というアプローチです。その上で、それがうまくいくのかを時折調査する、という方法で、物事を改善してきました。
その小規模な例がモブプログラミングの導入でしょう。モブプログラミングをご存じないのであれば、これは開発チーム全体が1台のコンピュータで共同作業して、ひとつの機能を提供する、という方法です。Woody Zuillがこのプラクティスを社内に持ち込んで、現在では多くのチームが採用しています。これがなぜ、ジェネレーティブな文化にとって重要なのか、疑問でしょうか?そうですね、正しいモブプログラミングは、自由でオープンなアイデア交換なのです — これを行うことで、文化を1段階ステップアップできます。
大規模な例として挙げられるのは人材開発(L&D、Learning and development)でしょう。すべてのテクノロジ企業がそうであるように、学ぶべきことは無数にあります。
私たちはL&Dの旅にいるのです。最初は時間の提供から始めました。Googleからアイデアを借用して、各人に毎週、自己開発のための専用の時間を導入したのです。当初はこれでよかったのですが、目新しさがなくなると利用されなくなってきました。
そこで、オープンスペースイベントの定期的な開催を始めました — 参加者がその場でアジェンダを決める、一種のカンファレンスです。これはうまくいって、外部からアイデアを持ち込む多くの機会を提供することができています。カンファレンスのビデオを見たり、Kubernetesのワークショップを開催したり、さまざまな問題について議論したり、アルゴリズムに関する勉強会なども活発に行われています。ただし、オープンスペースがすべての人に適している訳ではありません。構成が十分であるとは言えませんし、セッションがどのようになるのかは予想が付きません(それも面白いのですが)。
そこで私たちは、今考えると少々無謀なことをすることにしました。RedgaterによるRedgaterのための、完全なカンファレンスを開催することにしたのです。航空機博物館を丸1日借り切って、Redgateにとって重要なテーマに関する終日のイベントを開催しました。Redgateにとってこれは素晴らしいものになりました。今年で3年目になりますが、今年はさらに、会社全体にまでスケールアップする予定です。
これらすべてを合わせても、私たちの望む自己開発のレベルにはいまだ到達していません。ですが、ジェネレーティブな文化と素晴らしい人材が育っていますから、きっと実現できるものと確信しています。
InfoQ: ジェネレーティブな文化は、日常の開発作業をどのような形でサポートするのでしょうか?
Foster: どの企業でも同じだと思いますが、優れたソフトウェアを開発する作業はチャレンジであると同時に、極めて実験的でもあります。優れたアイデアはたくさんありますが、すべてがうまくいくとは限りません。ジェネレーティブな文化は、アイデアをビジネスに結びつける確実な流れを支援するだけでなく、意図したとおりに動作しない(こともある!)理由を熟考する時間を得る上でもプラスになります。
好例がモブプログラミングです — 先程の答では肯定的な面を話しましたが、オープンな文化があれば、否定的な面があることにも気が付きます。私たちが見つけたのは、上級開発者が多すぎるとモブはうまくいかない、ということです — 詳細な部分の議論に時間を取られ過ぎて、回答の必要な、もっと基本的な問題があることを忘れられてしまうのです。このような議論を早期かつ頻繁に行うことができるという事実は、ジェネレーティブな文化になるための重要な部分です。
ソフトウェア技術者としての私たちの日常作業は問題解決に関わるものですが、ジェネレーティブな環境は、バグの修正から始まって、問題をレトロスペクティブして新たなプロダクトに持ち込むことまで、あらゆる面からサポートしてくれます。
InfoQ: どんなことを学びましたか?
Foster: "行動は言葉よりも雄弁である(Actions speak louder than words)"ということです。アイデアがあるのならば、その価値を示す最良の方法はそれを試してみることです。