人間とウェブの未来

「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。

DevOpsの文脈でのDevelopment ResearchすなわちDevResについて

DevOpsについては多くが語られてきました。一方で、開発者と研究者の関係をDevOpsの文脈、いわゆる、Development ResearchすなわちDevResとしたときの関係性についてはあまり語られていません。これからの企業、ひいては、社会における開発者と研究者のあり方についてはDevOpsという名の元に解決しようとされてきたことの多くがまた繰り返されるように思えます。むしろ、DevOpsとして取り組んできた歴史よりも、技術者と研究者との関係性やその分断は、古くから続く課題といえるかもしれません。

これまで技術者と研究者という観点で述べてきたこと

実際に、僕はペパボ研究所という研究開発組織の主席研究員、エンジニア組織のチーフエンジニアとして、いわゆるDevResに近い取り組みをここ2年程行ってきました。その取り組みの中で、徐々にDevResにおける大切なことが明確になってきたように思います。また、技術者と研究者のあり方についても、以下のように沢山述べてきました。

geek-out.jp

hb.matsumoto-r.jp

hb.matsumoto-r.jp

hb.matsumoto-r.jp

hb.matsumoto-r.jp

hb.matsumoto-r.jp

本エントリでは、これらのエントリにつらつらと書いてきたことを総括して、現時点でDevResに思うことを以下にまとめてみようと思います。技術の透明性に従って、少なくとも僕がいるWebサービス業界では研究開発による事業の差別化がこれからもっと必要になってくることでしょう。その際に、組織として取り組むべきことをあらかじめまとめておくことで、各社でのさらなる研究開発の発展と研究開発エンジニアを目指すエンジニアのキャリア形成の助けになると幸いです。

DevResで大切なこと

前提として、企業で研究開発を行っていくには、その専門性からどうしても開発者と研究者という役割が生じてしまいます。もちろん、一番良いのは個人としても開発者と研究者という役割を作らないことが理想ですが、新規性・有効性・信頼性のある技術を作り上げる研究者の役割と、日々のサービスの課題を解決して品質を向上し継続的に開発し続ける開発者の役割を個人として両立することはとても大変です。

DevResにおけるこういった境界を超える活動は理想ではあるものの、その役割分担を分離するかしないかということは、実はそれほど重要な観点ではないのです。あくまで目的を達成するための一つの手段と言えるでしょう。とくに、DevOpsのようにOpsにDevのプロセスが適用可能となってきた背景と違い、技術背景の変化の観点からも、DevとResは依然としてまだまだ包含関係にあるスキルが少ないように感じています。

では、そのような状況を踏まえて、企業における開発者と研究者がチーム、あるいは組織として協調して相乗効果を生み出すDevResにとって大切なこととは何でしょうか。

それは、

  1. コンセプトを揃えること
  2. プロダクトを改善・作ることを目的に実用化を意識すること
  3. 開発者あるいは事業部門と常に連携をとり相互の役割に関心を持ちながらその透明性を維持すること

だと考えています。

逆にいうと、これらの3つの大切なことにもとづく「文化」を作り上げることさえすれば、開発者と研究者の役割分担や、実業務の境目をなくす活動についてはそれほど重要ではないと考えています。互いの業務に踏み込むことで、より深く相互の役割やスキルを理解し実践することは重要ですが、先に述べたとおり開発者と研究者の専門性はそうたやすく両立できるものではありません。

むしろ、実質的な役割の差や技術背景を見ることなく、役割の境界を超えることや両立そのものに囚われすぎると、視座が低くなって視野が狭まり、手段が目的になって、むしろ文化を醸成する観点では悪手になる可能性もあります。例えば、Devにサービス開発と同時に必要以上に新規性のある技術や論文執筆を求めることや、Resに新規サービス開発や短期的な成果を積極的に求めることは、アンチパターンとさえ言っても良いでしょう。

DevResにおいて大切なことは、まず、開発者と研究者が取り組みのコンセプトを揃えることで同じ目標や技術に対する倫理観を持ち、それぞれの役割からプロダクトに向けた実用化を強く意識することです。それによって、例えば、研究のためのサービス、研究のための技術開発、さらには論文のための研究になることを防ぎ、そこから生じる開発者と研究者の軋轢を生み出さないようにすることができます。

その上で、開発者と研究者の仕事について互いに強く関心を持ち、アウトプットとコミュニケーションをし続けることです。その活動が、相互にDevとResの取り組みの透明性を向上させ、活動を維持し続けることによって、DevResの信頼関係が構築されていきます。それぞれの仕事を十分に実践することは難しくても、やっていることの意味や目的、貢献や背景を相互に認識し、理解することは可能なはずです。最初はDevとResの間に、間での連携を担当する職種を置くのも良いでしょう。いずれにせよ、そのような関係性を意識しながら行動することによって、やがてその活動が文化を醸成させるのです。

3つの大切なことにもとづくその文化が醸成されれば、組織が拡大しても効率的な役割分担が可能となり、組織としてもスケールできるでしょう。注意すべきは、どちらか片方の役割が優れている、ということではないと意識することです。互いの役割に敬意を持って取り組むこと、その文化の醸成が何よりも大切なのです。

それさえできれば、DevとResで役割が明確に分担されていても、組織として研究開発とサービス開発がうまく機能し、事業を差別化、および、事業を差別化する技術の醸成につながっていくことでしょう。

まとめ

本エントリでは、DevelopmentとResearchの役割の違いを考慮して、DevOpsの文脈でDevResを考えた時に大切なことをまとめてみました。これはあくまで現時点での見解であり、DevとResの役割の変化や包含関係、技術背景に応じてこれからも変わり続けていくことでもあります。我々はその変化にアンテナを張り巡らせて、このような概念を適宜アップデートし続けていくことを忘れてはならないでしょう。

この考え方は、開発者や研究者によらず、役割として分離が必要な専門家が、足し算ではなく掛け算の連携をおこすための考え方としても一般化が可能かもしれません。ですが、僕自身が実践している対象はDevResであるため、過度な一般化はここまでにしたいと思います。