見出し画像

サーバーサイドエンジニアの選ぶ5冊。エンジニアにとって大切なのは「品質」とそこに至るまでの「過程」だと思っている話

こんにちは。note編集部の大場です。
今回は、WEB開発チームに所属するサーバーサイドエンジニアの黒田さんへのインタビューをお届けします。

黒田さんと私は同じチームに所属しており、仕事の中で話す機会が多いのですが、エンジニアリングの観点だけでなく、役割の枠に収まらないような広い視野からの意見やアドバイスをもらえることが多々あります。

黒田さんのこれまでのキャリアや思想を紐解くため、今回は黒田さんを形成した「本」をテーマにインタビューを行いました。

<登場人物紹介>
⚫︎ 黒田和也
ポジション:サーバーサイドエンジニア
福岡工業大学大学院情報工学専攻出身。2014年から福岡を拠点に移す。BtoBのWeb開発業務に携わった後、2020年cocone vに入社。現在はWeb開発チームにて主にサーバー開発を担当。日々、最も効率の良い開発ができないか考えている。

⚫︎ 大場耕
ポジション:フロントエンドエンジニア
青森生まれの埼玉育ち。学生時代にHTML・CSSやFlashなどに触れ、Web制作の楽しさに目覚める。都内の広告代理店やデザイン事務所などでWebサイト制作の経験を積み、2021年に勢いで福岡へ移住。2022年にcocone v へ入社。現在はWeb開発チームにてフロントエンド開発を担当。最近はマイクロインタラクションに興味があります。

今回のインタビューでは、黒田さんにあらかじめおすすめの書籍を5冊選んでもらい、それぞれについて語っていただきました。黒田さんが選んだ書籍はこちら。

  1. ゲームプログラマになる前に覚えておきたい技術

  2. シューティングゲームアルゴリズムマニアックス (C magazine)

  3. Effective Python 第2版 ―Pythonプログラムを改良する90項目

  4. カオスエンジニアリング ―回復力のあるシステムの実践

  5. Hooked ハマるしかけ: 使われつづけるサービスを生み出す 心理学×デザインの新ルール

🎉 【1・2冊目】エンジニアとしてのはじめの一歩

大場)これは「黒田さんを作った5冊」という認識でよいですか?

黒田)今回紹介する5冊は、"エンジニア"としての黒田を作った本、といったところでしょうか。

ゲームプログラマになる前に覚えておきたい技術』と『シューティングゲームアルゴリズムマニアックス』の2冊は学生時代に読んだもので、『Effective Python』『カオスエンジニアリング』『ハマるしかけ』は就職してからです。

『ゲームプログラマになる前に覚えておきたい技術』
『シューティングゲームアルゴリズムマニアックス』

大場)今回挙げてもらった書籍を見る限り、今のサーバーサイドエンジニアとしての仕事と直結している本はあんまりなさそうだな、というのが率直な印象で。

そもそも、黒田さんがプログラミングを始めたのはいつ頃でしょう。何かきっかけがあったのでしょうか?

黒田)HTMLを書くこともプログラミングに含めていいなら中学生の時ですね。本格的に始めたのは大学生になってからです。『ゲームプログラマになる前に覚えておきたい技術』と『シューティングゲームアルゴリズムマニアックス』の2冊を読みました。ただ、ゲームプログラマーになりたくて買ったわけではないんです。どちらかというと、研究に必要だったので手に取った、という感じです。

大場)大学ではどんな研究をされていたんですか?

黒田)HCI(Human-Computer Interaction)の研究をしていました。人間が3次元空間内に用意された迷路を迷わずに進むためにはどうすればいいか、という研究です。どんな風に描画したりどんなインタラクションを用意したりするとプレイヤーが迷わないか、というのを定量的に評価する、っていう。そのためには2Dと3D両方の知識も必要になって、この『ゲームプログラマになる前に覚えておきたい技術』には当時の自分に必要なことがどちらも書いてあって。『シューティングゲームアルゴリズムマニアックス』も同じ流れで、研究のために読みました。

大場)ありがとうございます。プログラマーとしての黒田さんの基礎を作ったのがこの2冊、ということですね。

🧠 【3冊目】自分を過大評価しないための読書

大場)続いて、3冊目の『Effective Python』についてのお話を伺ってもいいですか?

黒田)この本には、言語に依存しない、プログラミングに関するベストプラクティスが書かれているんですよね。もちろん仕事でPythonを書いている人にも発見があると思います。全エンジニアに読んでもらいたい一冊ですね。

『Effective Python』

大場)黒田さんはどんなきっかけで手に取ったのですか?

黒田)「ダニング=クルーガー効果」って知っていますか?ざっくり言うと、能力の低い者ほどすぐに自分を過大評価してしまう、という認知バイアスの仮説です。ちょっと勉強しただけなのに、「すべて理解した」という気分になってしまう。この本を読むと、その過大評価によって生まれてしまった自尊心をぶち壊すことができます。

大場)むむっ、黒田さんの自尊心がマックスだった時に読んだということですか?

黒田)いや、逆です。自分は常に「今の知識で大丈夫なの?」と思っていて、自分を過大評価しないために読みました。そういう意味では、プログラミングに関することだけではなく、社会人としての健全なメンタルのあり方を学んだ、と言えるかもしれません。

大場)おお、なるほど。「無知の知」ってやつですね。Pythonについての本ですがですが、エンジニアとしてのマインドを学んだ1冊なのですね。

👀 【4・5冊目】 関心はプログラミングよりもっと手前の部分に

大場)続いて4冊目の『カオスエンジニアリング』はどうでしょう。先ほどの『Effective Python』と違って、この本には具体的なコードは全然出てこないですね。

『カオスエンジニアリング』

大場)書かれている内容の抽象度がこれまでの書籍と比較すると高くなっているというか、「プログラミング」そのものではなくその周辺に存在する「組織」や「システム運用」などについて書かれていて、黒田さんの興味や関心の対象も変わってきたんだなあという印象です。これはいつ頃読みましたか?

黒田)2年前くらい、cocone vに入社してからです。

カオスエンジニアリングの一般的な定義は「システム的な弱点を発見するために行う実験の円滑化」です。この本はNetfixやGoogle、Microsoftなど、私たちもよく知っている会社の様々なカオスエンジニアリングの手法について書かれています。

印象に残っているのは、災害などで物理的にサーバーが壊れた時にどうするか、どうやってそれに備えたテストをするか、について書かれている章です。

大場)「5章 Google DiRT:災害からの復旧テスト」ですね。(Dirt = Disaster Recovery Testing)

黒田)噛み砕いて言うと、「コンセントをいきなり引っこ抜いて電源を入れ直した時にきちんと復旧できるかどうか」みたいなことが書かれていて。プログラミングとは直接関係ないというか、普段コードを書いている時にそこまで意識することはないと思うんですけど、でも、サービスの安定した稼働のためには絶対に必要な知識だと思うんです。

大場)なるほど、この本で学んだことを一言でまとめるとどうなりますか?

黒田)「自分の作ったものをどれだけ信頼できるの?」ということかなと思います。

自分が書いたコードがどれだけカオスな状況に耐えられるのか。コードの信頼性や妥当性を担保するモノサシを増やすための本ですね。そして、これも自分を過大評価してしまうのをリセットするのに有用です。

大場)無知の知・2ですね。これは全エンジニアが読むべきですか。

黒田)全人類に読んでほしいですね。

大場)ちなみに、そういうところにまで関心が及ぶのはサーバーサイドエンジニアならではなのかな、という気もします。

黒田)そうかも知れません。(サーバーは)作れて当たり前なので、自然とその先まで考えるというか。

大場)おもしろいですね。フロントエンドエンジニアは…というと主語が大きすぎますが、少なくとも自分は、きちんと画面をつくることに執念を燃やす一方で、それ以外のことについては、誰かに任せた、みたいに考えてしまいがちかも知れません。

最後の、5冊目の『ハマるしかけ』。これはどういうきっかけで手に取ったんですか?

黒田)日本のウェブサイトのUX(ユーザー体験)について、まだまだ改善の余地があると感じたからですね。

『ハマるしかけ』

黒田)Twitter(現X)のトップページがどういう理由で変わっていったかを分析したり、消費者・ユーザーに行動を促す事例としてコカ・コーラの自販機について紹介したり。技術的な話だと、なぜページングではなく無限スクロールを採用するのか、とか。ユーザーがサービスを利用することを習慣づける方法について書かれた本です。

プログラミングについてはあまり書かれていないので、気軽な気持ちでたくさんの人に読んでほしいです。カバー裏の文章もすごくいいんですよ。

他社の決断や行動に影響を与え、習慣的な行動を作り上げるにはどうすればいいか? 人間の認知心理から導かれる、プロダクトデザインの本質について書かれた良書です。良いプロダクトなのになかなか使ってもらえない、グロースハックを駆使しているのにユーザーが定着しない、そのような悩みを持った企画者、開発者におすすめします。

これを読むことで、UXを考える時の基準がひとつできました。ただ、どうアウトプットするかは書かれていないので、この本の考え方をどう使うかは、個人の裁量ということでお願いします。

📚 感性も個性も必要ない。ソースコードに求められるのは品質だけ

大場)ありがとうございました。この5冊を読んで、黒田さんは何か変わりましたか?

黒田)5冊どれも印象的ですが、やはり3冊目のダニング・クルーガー効果のグラフで、てっぺんから突き落とされたレベルで考え方が変わったと感じます。

大場)4・5冊目の話にも繋がっていましたが、黒田さんは、自分を過大評価してしまう状態になることへの恐れがあるんですか?

黒田)そうですね。驕(おごり)って得することってないじゃないですか。
驕ったコードを書いてもいいことなんてなくない?っていう。

大場)「驕れる人も久しからず」ですね。

黒田)よくチームのメンバーにも話すのですが、仕事で書いたソースコードは、自分の資産ではなく会社の資産なんです。

エンジニアの世界にプラスは存在しないと思っていて。書かれたコードがきちんと動くのがゼロ、バグが起きたらマイナス。バグがあって、それを解消してもゼロに戻るだけで、プラスにはならない。

例えば、noteに個人が書いた文章は、その人の作品だと思うんです。
個性的でおもしろい文章はプラスになると思うんですけど。
でも、ソースコードは文章でも芸術作品でもないから、バグが発生せず健全に機能するものが提供できれば良い。
感性も個性もいらない、誰が書いたかも関係ない。品質がすべて。
そう考えると、驕っている場合じゃないと思うんです。

大場)なるほど…。コードをゼロかマイナスで評価するんですね。

黒田)書きながら常に「マイナスになってない?大丈夫?」と疑う姿勢でいます。リリースされたものは求められた品質に応えたと思う成果物なので、あまり興味がないんですよ。

大場)それは(テストなどを経て)マイナスではないことがとりあえず担保されたから自分の役割は果たせたと感じられる、ということですか?

黒田)そうです。それに対して「うれしい」とかもありません。
課題を解決するために考え続けるのが楽しいのであって、リリース=ゴールまで辿り着いたら自分の中では完了なんです。

大場)自分だったらたぶん、リリースできたら喜ぶし、「これからガンガンアップデートしてよりよいものにしていくぞ!」みたいな気持ちになるんですが、そういう感じではないんですかね。

黒田)ないですね。リリースはできて当たり前、それがゼロなので。そこまでの過程を大事にして、ちゃんと仕事する。それだけです。

🍮 終わりに

「黒田さんが選ぶ5冊」の紹介を通じて、最初は関心の対象がエンジニアとしてのスキルを高めることにあったのが、徐々にそれよりもっと手前にある「人」や「サービス全体」に移っていったことが分かりました。
また、品質の高いアウトプットのためには「過程」が最も重要で、そのために、慢心せず常にインプットし続ける姿勢は一緒に働く仲間として素直に見習いたいと感じました。私はリリースできたことをうれしく思うタイプの人間ですが、良いコンテンツを提供するために「過程」を大切にして良いコードを書きたい、という想いは共通していると感じることができたインタビューでした。

ここまで読んでいただき、ありがとうございました。


🫖 余談
本インタビューは、「ゲストの人に書店で書籍を1万円分購入し、それぞれについて紹介してもらう」という人気YouTubeチャンネルに強烈にインスパイアされた企画でした。株式会社トーハン YouTubeチームの皆様、素敵なコンテンツをいつもありがとうございます。これからも楽しみにしています。


■採用情報


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