見出し画像

チームが楽しんで開発するための開発文化

株式会社ベーシック CTO の @zaru です、こんにちは。今回ベーシックで資金調達を行なったということもあり、僕がベーシックで CTO として意識的あるいは無意識的な取り組みを振り返りつつ、皆さんにベーシックの開発文化を少しでも知ってもらえるような記事になればと思い書いてみます。書くぞ。

深夜に異常なくらい多くのコードを書くらしい

@zaru ってなにもの?

中学生の頃からプログラミングにハマり、自宅サーバを立ち上げて自分でサービス作ったり、無駄なものを作って遊んでました。

こういうのを作るのが好きです。

そして、なんやかんやあってベーシックに中途で入社しました。入社して 10 年ちょっとになります。ちなみに履歴書はまともに書いたことないですし就活もしたことがありません。野生児です。度量の広い会社でよかった、ありがとう。

ベーシックは創業からたくさんの事業を立ち上げてきたのもあり、多くのサービスやプロダクト開発に関わってきました。一般的な Web サービスからモバイルアプリやゲーム、アドテクとかもやってましたね。僕はプログラミングが大好きなのですが、ひたすらコードを書き続けていたら、いつの間にか CTO になってました。なんでだろ。

ベーシックのやってきたサービス…色々あるな

色々なことに挑戦できる環境で本当に感謝です。

人の気持ちがわからない CTO

僕はプログラミングが好きすぎて、プログラミング以外への関心が低く、人と仲良くするよりも CPU と仲良くなりたいと考えていて、会社のメンバーからはよく「@zaru は人の気持ちがわからないし、友達もいない」と評価されます。事実です。だめな人間ですね。でも人が嫌いなわけじゃないです、むしろ好きです。

人の気持ち分かるように、がんばろう…

快適な開発環境にしたい

人の気持ちはわからないけれど、プログラマである自分自身が快適に開発できる環境は、チームメンバーみんなも快適に開発ができるはずと考え、ひたすら自分が快適になる環境作りをしてきました。

例えば、AWS で予算手続きをせずに色々な検証が気軽にできるようにしたり、気になった開発ツールの購入・導入をシュッとできるようにしたり、あとオフィスに物理出社してた頃は、お昼に炊き立てご飯食べたかったので炊飯器設置したり、豆から挽いたコーヒー飲みたかったのでコーヒーサーバ設置したりと勝手にやっていました。自由。

あとは、スクラム開発を導入したり、ペアプロ用のモニタ買ったり、足元の開発環境を改善するために CTO 室を発足させたりもした。

ベーシックは自社開発なのでプロダクトの価値向上が必要。そして開発はプロダクトに直結しているので、快適な開発環境は非常に重要。ちょっとした違和感やストレスがあれば愚直に潰していきたいなと思っています。そういう活動に興味のある方、ぜひ一緒に働きましょう。いえい。

精神的な階層構造をぶっ壊す

快適さ、でいうと僕は上下関係とか立場を踏まえたコミュニケーションや人間関係が苦手でストレスを感じるタイプです。立場が偉い人が偉そうに話したり、意見を押し付けるような行為には顔面パンチしたくなります。

組織を運用するのに必要な物理的階層構造はいいとしても、精神的な階層構造はなくして、フラットにコミュニケーションできる組織を目指したいですし、ベーシックはそうなっていると思います。

実際たいていは僕が若手メンバーからダメ出しされて叱られるくらいには実現できています。がんばれ僕。

困っている人が助けてと言えるようにする

スッと素直に助けを呼べる人もいれば、助けて!と言えない人もいます。人間だもの。でも、チームで仕事をするメリットを活かすためにも、気軽に気持ちを表明できる環境であって欲しいと思っています。

そのためには普段のコミュニケーションが重要で、例えば会議の場で意識的にレベルの低い発言をしボーダーラインを下げることで、他の人が発言しやすい雰囲気を作ったり、TeamGeek で紹介されている HRT (謙虚・尊敬・信頼) の考えをベースにしたり。困っている素振りを少しでも感じたら話しかけるようにしています。

実際にけん玉してた

また、弊社 Slack には #helpme という誰でもどんな質問でもして良いチャンネルがあり、異なるチームであってもじゃんじゃか質問と回答の掛け合いがされています。

結果的に、質問した人以外のメンバーの知見にもなり、チーム全体のナレッジが溜まって良い感じです。ちなみに僕も分からないところをガンガン質問したりしてます。みんな答えてくれてありがとう。

いつもお世話になっております

開発部のコア・コンピテンシー

ベーシック開発部では3つのコア・コンピテンシーを設定しています。

1 : 質とスピードを妥協しない

自社プロダクト開発といえど、開発スケジュールは目安としてある程度は設定します。ただ、スケジュールを守ることを意識しすぎて雑にコードを書く行為は、瞬間的には良かったとしても、すぐに負債となって返ってきてしまいます。

コードが資産とも言える状況の中で自ら価値を下げにいく行為は自殺行為に近く、その場で書ける最高の設計とコードを目指していくのをチームの指針にしています。言うは易く行うは難し。でもやっていくという気持ち。

常に今よりも良くできるんじゃないかという考えを持ちながら取り組むことで、挑戦する機会がどんどん増えていくし、何より仕事を楽しめるんじゃないかと思っています。まさに Enjoy Hacking。

2 : 常に学んで共有する

エンジニアリングに限らないけれど変化の激しい環境の中で、学び続けることは必須になっているし、学んだのなら隣の人に気軽に共有できる方がいいよねっていう風に思っています。

こんな小さなこと共有してもなぁというのを考える必要もないくらいシュッと行動できるといいよね。という感じで弊社 Slack #helpme チャンネル以外に #output チャンネルもあります。これは誰かに伝えるという必要もなく、ただただつぶやくという雰囲気で敷居の高さゼロピクセル。

3 : 他者の生産性に配慮する

効率化っていいと思うんですが、自分だけが効率良くなっても、その反動で隣の人がしわ寄せ的に非効率になることもあると思うんですよね。チームや組織全体の生産性が上がるような観点が必要かなと思ってます。

何も大きなことでなくても、プルリクを作ってコードレビューを依頼する際に、どこをレビューして欲しいか明記されていたり、動作確認するための URL が案内されていたりと、ちょっとしたことで他の人が動きやすくなったりするんですよね。そういうの大事。

楽しめるとは何か

チームが楽しんで開発するための開発文化…の「楽しめる」ってなんでしょうね。なんだろう。僕が定義しているのはエンターテイメントとしての楽しさとかではなく「挑戦と工夫」ができている状態です。

足元の開発環境がぬかるみだと、挑戦したとしても大きく飛べないし、コミュニケーションコストが高いと工夫が効率よく伝播されない。

そんなことを気にせず気持ちよく挑戦と工夫ができている状態を作っていくことを目指して今まで紹介してきたような取り組みなどをしてます。はい。

やっていく気持ち

理想の世界を作るプロダクトを開発したい…!

ferret Oneformrun などのプロダクトを通じて理想の世界を作っていきたいです。顧客の業務フローに強いインパクトが与えられたり、世界中のありとあらゆるフォームを formrun に置き換えていきたいし、新しい概念を作っていきたい。

ferret One や formrun それぞれの挑戦については担当役員の note を読んでみてください。大きな挑戦をしていくので読むとワクワクできると思います。

あるんですよ、理想が
でも時間かかるんですよ
圧倒的に不足しているんですよ

技術的な挑戦もたくさんある

挑戦的なプロダクトを作るのには技術的な挑戦も当然あります。事業成長スピードがやばいくらいに上がっているので、破綻させないように技術的アプローチをしていくぞ!という感じで、直近の技術テーマはこんなラインナップです。

・Vue を 3.2 で TypeScript + JSON Schema で Rails とのデータ連携
・複雑 UI な React で最高のコンポーネント設計を見つける
・Web Component を使った埋め込みフォームの進化
・100K Req/sec POST リクエストを安定かつ高速にさばけるインフラ構成
・数十億レコードを超えるデータが数千億いっても問題ないデータストア
・数百億のユーザ行動履歴を元にした分析基盤構築
・Rails Hotwire を使った Rails way な体験の良い管理画面構築
・デザインや CSS まわりカオス、DesignSystem 設計から UI カタログに
・クライアントの大切なデータを預かっているため、セキュアな体制
・Ruby もいいけど Rust もいいよね…

デザインからフロント、サーバ、インフラ、セキュリティまで幅広く楽しめる技術的課題が盛り沢山です。こんな課題へ挑戦していきたい方、お願いします。助けてください。

絶賛募集中

そんなわけで、開発部のコア・コンピテンシーにピンと来た方や、プロダクトを通じて理想の世界を作っていきたい方、技術的な挑戦をしていきたい方、ぜひぜひ一緒に働きましょう。お願いします。お願いします。

エンジニア・デザイナ以外でも、こういう考えを持った開発チームと働きたい方もぜひぜひお願いします。

あと、毎月やってる LT 大会で、QR コード・ジェンガを同時対戦できるゲームを作ってみんなで遊びました。バグが頻出してノーゲームとなりましたが、こんな感じの楽しい勉強会もやっているので、興味ある方ぜひ。

Nuxt, TailwindCSS, Socket.IO で作った

この記事が気に入ったらサポートをしてみませんか?