RubyKaigi 2018 が楽し過ぎたから再開したブログ

表参道でWebエンジニアをやっています。

「エンジニアのオナニー」だっていいじゃないか

所詮エンジニアのオナニーなんですよ

お酒の席での、先輩エンジニアの言葉だ。もともとは、他のエンジニアさんが言っていた言葉らしい。*1

技術が好きなエンジニアであれば、新しい技術を追いかけたり、美しいコードや設計にこだわったりする。こだわるのは良いが、それが事業の成長に繋がっていなければ、エンジニアの自己満足に過ぎない。「所詮エンジニアのオナニーなんですよ」という言葉は、そのような意味だと思う。

サービスのために技術がある

サービスの成長のために、技術がある。それは分かっているつもりだ。

特に、今の会社には明確なビジョンがあり、本気で世界を変えようとしている。
だから、エンジニアもサービスのことを考え、技術的な課題にはバランスを見て向き合っていく。それで良いと思う。

しかし、全てにおいてそれが正解なのだろうか。それしか許されないのだろうか。

職業エンジニアは、様々な制約の下で開発している

制約と言ってパッと思いつくのは以下のようなものだろうか。

  • 既に出来上がっている仕組み
  • 豊富なドメイン知識
  • 止められないシステム
  • 割り込みタスク
  • 顧客の要求
  • ビジネスサイドの要求
  • 多すぎるミーティング
  • 合意形成が求められるチーム開発
  • 技術的負債

タイトルの言葉に凝縮されているのかもしれないが、多くの場合において、エンジニアは自分の気持ちが良いように開発できていないような気もする。*2

こんな開発はどうだろうか

具体的な解決策を提示できるわけではないが、最近思っていることはあるので、書き出してみる。

機能を削ぎ落とす

「バグを生まない一番の方法は開発しないことである」という趣旨の言葉を聞いたことがある。

機能をなるべく削ぎ落とすことで、シンプルに美しいプロダクトを保つことができるかもしれない。

一度出した機能でも、あまり使われなければ思い切って削除しても良いと思う。
残しておくと、それが技術的負債につながる可能性がある。

最小限の人数で開発する

  • 開発する機能を絞る
  • なるべく自動化する
  • マネージドサービスを使う

などの工夫をすることによって、必要最小限の人数で開発することはできないのだろうか。
小さく保つことで、コミュニケーションコストやチームビルディングなど、様々な問題が問題ではなくなるかもしれない。

急成長を目指さない

例えば個人開発であれば、自分が食べていける、あるいは、家族を養っていけるだけの収入を得られれば良いのかな、と思う。それでも十分に大変なことだと思うが…

サービスを維持したり、緩やかに成長していければよい良いのであれば、開発はかなりやりやすくなるかもしれない。

理想のサービスとロールモデル

esa というサービスと @_sesere さんという開発者の方に影響を受けた。

esa.io

twitter.com

esa はいわゆる情報共有サービスで、ホームページによると

2,000を超える会社・団体にご利用いただいています。

ということだ。個人で利用している人も多いだろう。(僕の観測範囲では)3人でサービスを回していらっしゃって、とても良いなあ、と思っていつも拝見している。

@_sesere さんは、最近だと Peing -質問箱- を開発されたことで有名だと思う。
僕は、【7年かかった】19歳から7年、1人で30個のWebサービスを作り一発当ててもう働く必要がなくなったので振り返ってみる - 考えすぎてしまう人のブログ という記事を読んで、当時感銘を受けたのを覚えている。

最後に

「エンジニアのオナニー」だっていいじゃないか

要は、これがこの記事で言いたいことだ。
自分が創りたいものを創り、それで食べていけたら最高だと思う。

このように偏った考えをしているのは、学生時代の経験が関係あるかもしれない。
僕は、生きている意味が本当にわからなかった。打ち込めるものもなく、死んだような目をして生きていた。今はそんなことはないが、根底にはそのような考えがある。すると、やりたくないことをやってまで生きていなくても良いよね、と思ってしまったりするわけだ。

逆に言うと、やりたいことやって生きていきたいよね!ということだ。
今すぐどうこうしたいとは思っていない。少しずつ、自分のペースで、目標に近づいていきたい。

とりあえずは、

  • 個人開発する
  • ブログや Qiita を書く
  • ネタがあれば登壇する
  • ポッドキャストに出てみる

といった活動を続けていくつもりだ。何かしら道筋が見えてきたらよいな、と思っている。

*1:誤解がないように書いておくが、僕はこの先輩が好きだ。新しい人が入って来たら最大限のフォローをし、アラート通知が来れば真っ先に対応する。担当するシステムについて熟知し、技術力も高い。僕もいつも助けてもらっているし、尊敬している。だから、全てわかった上での言葉だと思っている。

*2:このように書くと現状に不満があるように思われてしまうかもしれないが、そうではない。本当に良いチームで開発させてもらっているし、恵まれた環境にいると思っている。