見出し画像

CTOとエンジニアがnoteの開発文化を大公開!#noteエンジニアトーク レポート

「noteにいるエンジニアってどんな雰囲気なの?」
「エンジニアチームはどんな働き方をしているの?」

note社のカジュアル面談では、こういった質問をいただくことが多々あります。そもそも外部から見ると「noteにエンジニアのイメージがあまりない」という意見を耳にすることもあります。

しかし実情は真逆で、noteはほぼ100%が内製で作られています。エンジニア、デザイナー、データアナリスト、PM……と多岐にわたった職種が関わり開発を進めています。エンジニアの人数も数年で10倍ほど増加しています。

noteへの転職を考えてくださっている方にエンジニアの雰囲気やカルチャーをもっと知っていただくために、Clubhouseでのトークイベントを行いました。前半はCTOの今さんと会計基盤チームのリーダーである福井さんがエンジニアの雰囲気やチームについて語り、途中からCTOの加藤さんとCXOの深津さんも飛び入りで加わる展開に。noteのコアな部分まで話は広がりました。

今のnoteの実情がわかるトークとなったイベント内容を今回はお届けしたいと思います。

※この記事は2021年2月15日に行った、Clubhouseの配信を記事にしました(スピーカー全員の承諾を得ています)。

会議はZoomとMiroを使い、リモートでも仕事が回る環境になった

中西さん:noteで人事を担当している中西と申します。今日はnoteで働くエンジニアチームの体制や現在の状況について、CTOの今さんと会計基盤チームのリーダーである福井さんとラジオ的に話していこうと思います。よろしくお願いします。

画像1
画像2

中西さん:noteではコロナの影響もあって去年(2020年)からフレキシブル出社制度を導入しています。会社に来ることも少なくなったと思いますが、実際にリモートで働いてみてどうでしょうか?

今さん:業務で困ったことはほとんどありません。私も今月は会社に行っていませんし。福井さんにいたっては青森に住んでいるので、コロナ禍の前からリモートですよね?

福井さん:ずっと青森から仕事をしていて、リモートワーク歴も6年になります。コロナによる影響はあまりなくて、むしろ会社としてリモート環境が整ったので、前よりも働きやすくなったくらいです。

中西さん:福井さんと何度もミーティングしていますが、Zoomでしかお会いしたことがないです(笑)

今さん:Zoomで会話しながらMiroで資料を共有して会議するスキームができつつあるため、直接会わなくても効率よく作業できますからね。

Miro:プロジェクトのロードマップ作成や画面設計、フローチャートの構築などがドラッグアンドドロップで簡単に行うことができるオンラインホワイトボードツール。

福井さん:noteだとSlackでコミュニケーションをとる文化が以前からあったため、社員的にもリモートへの移行はそこまでの違和感はなさそう。

今さん:そもそもコロナ以前から週5で出勤してるエンジニアは半分くらいでしたしね。リモートで会話や議論をしたり、ドキュメントを残したりするカルチャーは根付いていたのかも。

中西さん:noteのミーティングはほとんどZoomで行っており、誰でも会議に入って聞くことができるのはありがたいですね。気軽に情報を取りにいける。

福井さん:カジュアル面談でZoomでの会議のことを伝えると「それめっちゃいいですね」と共感してもらえるポイントの一つでもあります。

面談でよく聞かれる質問①「エンジニアチームはどういった構成なのか?」

中西さん:ここからはカジュアル面談でよく聞かれる3つのことについてお話していきたいと思っています。

①エンジニアチームはどういった構成なのか?
②noteのエンジニアの雰囲気は?
③機能が実装されるまでの意思決定のプロセスは?

中西さん:まずはじめに「エンジニアチームはどういった構成でやっているのですか?」という質問についてです。

今さん:そもそも社外から見るとnoteってエンジニアのイメージがあまりないみたいなんです。実際は違っていてインフラから、サーバーサイド、フロントエンド、機械学習などすべて内製で作っています。社員の半数が開発に関わっており、みんなでnoteを作っています。

中西さん:今はどんなチームにわかれて作業しているのでしょうか?

今さん:カイゼン(短期施策)、機能開発、会計基盤、データ基盤、機械学習、アプリ、インフラなどいろいろなチームわけをしています。現状ではサーバサイド/フロントエンドを含めてWeb系のエンジニアが多いですね。CtoCのプラットフォームであるため状況も変わりやすく、開発案件も多岐に渡ってあります。ユーザから求められている機能を作ることもありますし、エンジニア以外のチームが助かるような社内ツールを作ることもあります。

中西さん:成長にともなって会社の状況が日々アップデートされていくので「開発体制をどうしたらいいのか」「プロダクト開発としてどう推進していけばいいのか」は今も議論中ですよね?

今さん:そうですね、エンジニアチームの体制は今も変わり続けています。去年のコロナの影響も含めてユーザー数が増えたことにより、noteがさまざまな使われ方をするようになりました。トラフィック量も3倍ほどになり負荷も増え、去年は結構大変でしたね。

ただ、逆を言えば技術でレバレッジを効かせて解決できる領域が広がったため、エンジニアとしてはやりがいのあるステージにきたという見方もできます。

中西さん:抱える課題も多いけれど、できることも増えたフェーズになってきたということですね。おふたりは社歴も長いため、エンジニアの数が何倍にも増えていった変化も見てますよね。

福井さん:僕はエンジニアが4〜5人の時からいます。今は40人ほどになっているので、あれから10倍も増えたのか。

今さん:どの会社でも社員が増えたときの組織づくりには同じような悩みがあると思いますが、エンジニアのパワーを引き出すためにこれからもチームづくりはやっていかないと。

中西さん:エンジニア組織作りは2021年のひとつのテーマでもありますね。

面談でよく聞かれる質問②「noteのエンジニアの雰囲気は?」

中西さん:次に「エンジニアの雰囲気やカルチャーはどんな感じですか?」ということも面接でよく聞かれるのですが、どうでしょうか?

今さん:大人な方が多いため話しやすくて落ち着いているひとが多い印象です。逆に言うとすごく元気で「朝まで飲むぞ!」みたいな感じはあまりないかもしれません。自分のプロフェッショナルイズムがベースにあって、責任感持ってじっくり作業するようなタイプが多いかな。

福井さん:そうですね、さっと開発してさっと帰るスタイルが大半かもしれません。家庭を持っている方も多いですし。

今さん:技術に尖ったエンジニアもいれば、マネジメントが得意なひともいます。当社としてはもっといろいろなタイプの方に来てほしいと思っています。それとnote自体がメディアプラットフォームなので、マンガや音楽などのコンテンツ産業に造詣が深いひとも多いのも特徴ですね。

福井さんnoteには部活動がいくつかありますが、アニメとかマンガは部員数が多いですよね。ポケモンカードの部活とかは盛り上がっている印象があります。

今さん:ポケモンカードがやりたくて仕方がない雰囲気は伝わってきます(笑)あとは開発や技術系の会話で盛り上がることも多いです。Slackで誰かが記事を投下すると、ワーワーと議論になったり。

福井さん:最近は今さんがランチの時間にZoomを作って、新しい技術を触りながら話す時間を作っていますよね。

今さん:そうそう、CTO雑談ですね。フロントエンドが最近追えていなかったので、新しいライブラリや便利そうなサービスが出たら、Zoomの画面共有越しに触ってみて雑談しながらあーだこーだ議論するみたいな会です。

スクリーンショット 2021-04-01 15.13.02

ある日のCTO雑談の様子

面談でよく聞かれる質問③「機能が実装されるまでの意思決定のプロセスは?」

中西さん:意思決定のプロセスは会社によって大きく変わってくると思います。仕様が決定してから実装までnoteではどういった形で進んでいくのでしょうか?

今さん:当社の場合、大枠の開発方針や1年先のコンセプトは経営陣が決めています。CEO、CXO、私とかで。細かい施策や技術スタックなどは現場で決めることが多いですね。現場で決まったあとにCEOやCXOと話し合い優先順位の組み換えなども行いますが、ふたりとも技術やプロダクトに造詣が深いため、議論がしやすくスムーズですね。

福井さん:CEOとCXOが技術的なことがわかるから、専門的なところをエンジニアと近いレベルで話せるのはすごい楽ですよね。

今さん:あと技術的な負債の嗅覚はかなり鋭いと思いますね。普通、エンジニア以外だと新しく追加したい仕様が負債になるかどうかなんて分からないことが多いじゃないですか。

中西さん:CEOの加藤さんとCXOの深津さんも聞いているようなので、このトークに参加してもらいましょうか。

画像5
画像5

深津さん:遊びにきました〜

加藤さん:お疲れさまです。

深津さん:「CEO、CXOが技術的なことを理解できる」って話ですよね。それで言えば加藤さんは本業プログラマーじゃないのに数年前に機械学習を勉強してましたよね。

加藤さん:当時は機械学習があまりにも新しい概念だったので「今からやっておけば間に合うかも」と思って勉強していたんですよ。今はもうついていけないですけど、勉強しているときは面白かった。深津さんもちょっと前までJavaScriptをすごい書いてましたよね。

深津さん:サーバーサイドはさっぱりですけど、クライアントサイドはある程度は書けました。ActionScript(Flash)とかはバリバリやってましたね。僕が一番コードを書いていたときはまだフレームワークがない時代だったので、Windowsのコンポーネントを模したものを全部Flashで実装するみたいな荒業をやってました(笑)

加藤さん:サーバサイドは僕も深いところはわからないので、手探りな部分はあります。「これは大変なのかな?」「どうなの?」とエンジニアに教えてもらいながら進めています。

深津さん:みんなアシストしてくれてますよね。おじいちゃんに教えてくれるみたいに(笑)経営陣が技術に理解があると「この部分は将来的に負債になりやすい」という部分の合意がとりやすくなるのは間違いないと思います。

加藤さん:確かに深津さんがよく言ってますね。「このまま進めると2年後にまずいことが起こりそう」とか。システムが大きくなってくると変な負債ができて、後で悲惨なことになる。

深津さん:だからこそ意思決定は速度も含めて大事なプロセスですよね。いろんな会社を見てきた中でもnoteは意思決定の速さが保たれてると思います。

今さん:逆に今後はその速度を落とさないようにするのが課題ですね。

深津さん:開発のスピードをもっと上げるためにも、ロールバックできる機能であれば「とりあえずやってみよう」というのを根付かせていきたいですね。ダメだったときになかったことにできる機能はどんどん試していいけど、ロールバックできない機能はしっかり議論しようね、って感じです。施策の何割かは「とりあえずやってみればいいんじゃない?」で進めることができますし。

今さん:公開されてないけどしれっと削除された機能もnoteにはけっこうありますからね。

加藤さん:良いか悪いかをまず確認する必要がある機能なら、まずは小さくつくって試していきたいですね。最初のクオリティは高くなくていいから、施策として見せるところまでは素早くやっていく形で。

深津さん:超大作を作らないようにしよう、みたいな話はしますよね。

加藤さん:エンジニアリングに限らずビジネスチームにも同じことを言っていて、時間をかけた企画書を作って持ってくるのは禁止にしています。

深津さん:落書きでいいので1日で持ってきてくれるほうがうれしいですね。手書きのスケッチとか、バグがあるけどとりあえず動くモックとか。

noteが抱える技術的な課題

中西さんnoteのエンジニアチームが2021年に向けて挑戦する、重要課題8選という記事を出していますが、改めて今のnoteが抱える技術観点での課題や、それに対してどのように取り組んでいくかを教えてください。

今さん:技術課題はまだまだありますね。特に最近だとトラフィック量の増加が問題になってきました。去年から投稿数やPVが急激に増えて、MySQLの性能上限に近づいて性能が劣化してしまうなど、なかなか痺れるトラブルもありました。

深津さん:このままトラフィックが増加していくと後々どこかで問題になるかもしれませんね。

今さん:今はまだ大きな問題は起きていませんが、投稿やPVの数が10倍〜100倍とあがっていったときに、体験を落とさないアーキテクチャーにしていかなければいけません。去年から少しずつ対策をしていて、今年も引き続きやっていく予定です。

深津さん:具体的にはどのあたりがボトルネックになっているんでしょうか?直すべきところとか。

今さん:ボトルネックを一つあげるのであればデータベースの肥大化があります。去年からデータベースの分割には着手しているのですがまだまだやりきれてない部分も多く、来年も取りくむべき課題だと思っています。データベースのスケールって言うだけなら簡単だけれど実装するとなると骨が折れる。

深津さん:フロントエンドも課題が多そうですね。

今さん:そうですね、フロントはNuxt.jsでSSR(サーバーサイドレンダリング)しているのですが運用の難しさを痛感しています。フロントエンドのスペシャリストと一緒に速度とメンテナンス性をどちらも追い求めていきたい。

フロントの速度改善で言えばパフォーマンス改善週間という取り組みが少し前にありました。有志のエンジニアで集まって、ハッカソン的なノリで一週間パフォーマンスに注力する取り組みです。

加藤さん:この取り組みはよかったですね。たった一週間でかなり性能があがったと聞いてます。

今さん:逆に言えば、直すべきだったポイント多すぎだったんじゃないかという疑惑もありますが(笑)フロントエンドを直したことでサーバーの負荷も落ちて、明らかに体感速度が変わりました。当社に限らず急成長しているサービスではこういった負債はたまりがちだと思います。

加藤さん:昔は普通に動いていたところがトラフィックがあがることで動かなくなったりしますよね。

深津さん:UXで一番大事なのは速度だと思っているので改善は大事ですね。機能が多いことより速度が速い方が価値がある。

今さん:僕もまったく同意です。今の速度は維持しつつ改善していきたい。爆速とはまだまだ言えないので、伸びしろはまだまだあると思っています。

深津さん:加藤さんは怒るかもしれないけど、速度が2倍になってくれるんだったら半年は新機能つかなくてもハッピーだと思っちゃう(笑)

2年後にくる負債は2年後に先延ばしせず今やる

加藤さん:フロントの速度で言えば、過去にAngularからNuxt.jsに移行したときはだいぶ速くなりましたよね。あの移行は半年くらいかかったんでしたっけ?

福井さん:構想を練っていた段階から数えれば1年はかかったと思います。半分以上のエンジニアが移行に関わってリソースを割いていたので、経営陣がGOサインを出したのはすごい決断だと思いましたね。

深津さん:2年後に来ることを2年後に先延ばすこと好きじゃないんです、加藤さんも今さんも僕も。

加藤さん:「やるしかないならやるか」って感じですよね。ただ移行作業は本当に大変だったと思います。

福井さん:大変でしたね(笑)新機能の追加も並走していたので、移行が追いつかなくて。そこがなければもう少し早くいけたと思います。

加藤さん:Nuxt.jsに移行して速度が速くなったのはよかったですが、それ以上にサーバー代がめちゃ上がることにびっくりしました(笑)

今さん:SSR用にサーバを増設する必要がありますからね。

深津さん:速さはお金なんで仕方ないですよね(笑)

今さん:そう考えるとnote.muからnote.comへのドメイン移行も似た文脈がありますね。

深津さん:ドメイン移行についても「2年後にやるのは地獄だから絶対今やるべきです」って、無茶しましたもんね。

今さん:進めながら「本当にドメイン買っちゃうの?」って思っていました(笑)

深津さん:ドキドキしました。結局ドメインを買ってから半年か1年くらいは調査や研究開発に使いましたからね。「本当にドメインを移して検索流入は落ちないのか?」みたいな確証がなかなかとれませんでしたし。

2021年は基盤をつくって足場を固める一年になる

深津さん:今年、作業として大きいのは基盤化でしょうか。バラバラになっている機能を構造化して基盤として切り出していこうってフェーズですよね。

今さん:そうですね、今年は足場を固めようと思っています。今あるバラバラな機能を抽象化してまとめる形です。通知基盤、ダッシュボード基盤、データ基盤とさまざまな開発を並行して進めています。

深津さん:新機能を増やす数が多少減ってもいいので、今のうちに過去に溜まっていたものは返せるだけ返しておこうって感じですよね。熟成された伝統的なコードはなくしていきたい。

福井さん:昔からある熟成されたコードはめちゃめちゃありますね。最近、牙を向いているコードはまさにそれです。僕が書いたかなり昔のコードもあるんで、申し訳ないと思いながら作業しています(笑)

今さん:最近うれしかったのは過去に僕が書いた機械学習系のコードがなくなったことです。サービスは生き物なので、これからもコードは作っては消してを繰り返していきたい。

深津さん:作って消しての繰り返しは大事ですね。10年続いたプロダクトの熟成したDBサーバーが100台くらいあっていろいろなところで別々に管理されてます的な雰囲気とか怖いですからね。そういった過去のコードを残さないようにしたい。

今さん:とはいえ「なんでこうなっちゃったんだろう」って設計はあるんですけどね(笑)負債を倒していくのはネガティブイメージ持たれがちですが、技術力がいることなのでスキルを活かせる場所でもあると思っています。前向きに捉えると、アプローチの仕方とか事前調査の分析とか、エンジニアのパフォーマンスを活かせるフェーズでもあります。

深津さん:過去のコードの改修で言えば、埋め込み機能周りはキレイに仕組みを変えることができましたね。

加藤さん:ジェネラルな仕組みを僕らで作って仕様を公開し、embedの実際の開発は外部にやってもらうような形にしたので社内での負担はかなり減りましたね。

深津さん:埋め込み機能のような汎用的なアーキテクチャは全体的に増やしていけるとうれしいですね。

今さん:僕はマジック:ザ・ギャザリングのサイトを自分で作って運用しているので、そのサイトのembedを作ろうかなと思ってます。

加藤さん:いいね、楽しみにしてますよ。

今さん:他の方と同じように自分で申請をだして、ディレクターに審査してもらおうと思っています(笑)

それぞれがnoteに来てほしいひととは?

中西さん:最後に今日の話しを聞いてnoteに興味持ってくださっている方もいるかもしれないので、noteに来てほしい人材や合いそうなひとを教えてください。

今さん:本音を言ってしまうと、大規模組織や大規模サービスの経験者はうれしいです。サービスが大きくなってきているので、直面する問題とか技術課題も近しいものがあるのかなと思っています。

あと一般論ですが、プロダクトが成長してくるとスペシャリストが活躍することが多くなってくると思っています。特定領域に自信があると技術的には活躍しやすい場面も増えるかなと。もちろんサービスの企画とかカイゼンもかなり積極的にやっているので、ユーザーの顔が見えるサービスが好きで、note自体のコンセプトに共感している方は大歓迎です。

加藤さん:いま、noteには優秀なエンジニアがたくさんいるんですよ。技術的にも面白いひとが集まっているため「noteに参加したら面白いですよ」ということは伝えたいです。興味を持った方はぜひご連絡ください。

深津さん:よくミーティングで共有していることですが「アセットを作ることが大好き」「スケールさせること大好き」「横展開するのが大好き」というひとは向いていると思います。雑でいいから一日で動くもの持ってきて、その一日でみんなでバキバキ叩きながらしっかり動くものを作っていく。コンセプト検証が大好きなひとが来てくれるとうれしいですね。

福井さん:大枠はみなさんが言ってくれた通りです。僕としては何を作るかというより「誰とどういうものを作りたいか」にもこだわりたいので、切磋琢磨して吸収して高めあえるひとが来てくれたらなと思います。

今さん:noteっていうプロダクトを使ったクリエイターさんの人生が変わったり、仲間が増えたり、人生のステージが上がったり、そういったユーザ体験を増やしていきたいと思っています。僕はそういうひとを見るのがすごく好きですし、まさにnoteのミッションでもあります。興味がもしあれば応募していただければと思います。


▽noteを一緒に作りませんか?

▼エンジニアの紹介記事

Text by megaya

最後まで読んでくれた方へ。note社の様子や採用情報などをX(Twitter)で発信しています!