いいエンジニア・すごいエンジニアリングのバリエーション(ブレスト中)


すごいエンジニアリングですね!
いいエンジニアいますねー!

照れます。ありがとうございます。
僕は褒めらるのが大好きなので、上記のような言葉が大好きです。

唐突ですが、先日若い(19歳)エンジニアに「いいエンジニアになりたいんです!」と言われました。
僕はその言葉に対し「おお!がんばれよ!」としか言えませんでした。何かモチベーションの足しになるような気の利いたことを言えればよかったのですが、全く思いつかなかったんです。
もちろん僕は僕の中のいいエンジニア像があります。ただし、それが彼が考えているいいエンジニア像とマッチしているとは限らない。
一方で大きな会社にいくつもあるエンジニアリングチームやその成果を観察していると、様々なタイプのすごいエンジニアがいることがわかります。
まさに、ひしめき合っています。すごさが。

「いいエンジニアリング」「すごいエンジニアリング」ってなんだろう。

その日から僕はこの疑問の虜になっていました。

そもそもエンジニアは、基本的に事業上・社会上に発生する様々な問題に対して「プロダクションで解決する」というアプローチを取る職種で(あろうかと思いま)す。
逆にいうと、ある問題に対して解決をプロダクションに期待するということは、エンジニアが持つ何かしらの「すごさ」に世の中が期待しているということに他なりません。
ということは、それこそがエンジニアが目指すべき すごさ ではないかと。
この角度に向き合えば、エンジニアは未来永劫「ちゃんと期待される職業」であり続けられる。
次19歳に聞かれた時には、こういう観点を持って相談に乗ってあげられるようになっておかなくては。笑

そんなことを考えましたので、身の回りにいる様々なすごいエンジニアを観察して実験的に整理してみてます。
以下、自分的2017年度版
「世の中がエンジニアに期待していること=エンジニアリングのすごさ」
です。
例ではシステムプロダクションにかかわるエンジニアリングの範囲で言葉を選んでいますが、ジャンルが変わっても本質的にはそう変わりないかと思います。

★Optimality(最適性)

最も歴史の長いエンジニアリングの凄さかと思います。
マリオブラザーズが24KBであったかのように、テトリスがJS7行で書けたかのように、この凄さはコンピューティングや人間をはじめとした、様々なリソース(資源)を最適に使おうという意志から生まれる魔法のようなアウトプットで『信じられない!』をもって世の中に伝えられます。
このタイプのすごいエンジニアがいるチームは狐につままれているかのようなシンプルなサーバ構成でサービスを展開したり、スマホ上であり得ないくらい滑らかで魅力的な演出を実現したり、サーバーコストで驚異的な効率を叩き出したりします。

★Strength(強さ)

強いシステムというものが世の中には存在します。
どんなに膨大なアクセスが来ようとも、ユニットアーキテクチャをどこまでも並列に分散させて難なく捌いたり、特定のアクセスパターンに対するパフォーマンス脆弱性を発生させないためのチューニングが生んだ尖った強さであったり、限られた時間の中で母数が多い計算リソース消費パターンに対して迅速に行うチューニングなど、システムが必要外で停止したり障害を起こしたりしないために必要な凄さです。
WEBサービスで例えるならば、WBS砲などで起こる「バズった」や、うるう秒問題で予測されるにわかには予期不能なコンピューティングリソース異常消費の可能性への備えなど、サービスがどんな状況下に投じられたとしても、変わらず可用性を保持できるかがこの凄さのポイントです。
技術力だけではなくて、困難を予測するセンスやデータ観察力が元になります。

★Promptness(迅速性)

要望に対し、いかに早く変化できるか。
ある時はビジネス戦略に寄り添ったアーキテクチャを敷いたり、またある時はひたすら広い懐を担保して未来の指針を待ったり、またある時にはとにかく最速で動かすことを目指す。
この活動を洗練させるために必要な設計思想の柔軟さと実現思考の習熟度は、物を作るプロフェッショナルの誰もが持つべき凄さです。
またこの凄さはアウトプットの正確性と親密な関係があります。正確性を欠いたアウトプットは役に立たず、再度作り直すことになるからです。
イメージ通りのものを、最速で生み出す環境へのこだわりが、この迅速性の元になっています。

★Amenity(快適性)

優れたUIやクイックな反応速度でユーザーに快適さを提供する。
これは、UIのスマートさによる表面的なものであるとか、様々なエンジニアリングの凄さが集結して出来る結果に過ぎないとか勘違いされがちですが、実はそうでは(それだけでは)ありません。
システムのウィークポイント(本来的なもの、現状の開発状況的にやむを得ないもの含め)を見定め、それを巧みにラッピングし「気持ちよさ」を打ち出せる箇所に適切なスポットライトを当てることで、人の気持ちを長所に向け、短所をなかったことにする、いわば、現状と常に戦い、利用者に提供するインターフェイスとの最後の辻褄を合わせる凄さです。
美味しいカレーと美味しいうどんをどう合わせたら美味しいカレーうどんが出来上がるのか考える凄さ、といえば伝わりが良いでしょうか。
かっこいいベーシストとかっこいいギタリストが組んでもかっこいいバンドが出来上がるとは限らない例を思い浮かべるのがいいでしょうか。
プロダクトの状況に対する透明性を担保し、現状の強みと弱みををよく把握して仕事に臨むような高いチームワークを誇るチームでよく見られます。
一人で実現する場合も、チームで実現する場合も、質の高いコミュニケーションが常にチーム内を循環している必要があります。

★Safety(安全性)

人は技術で形作られた新しいものに対して、常に一定以上の危険性を感じています。
その先に快適性やイノベーティブな体験が期待できたとしても、安全性の担保が感じられないとそこに身を投じる人の数は激減します。
世の万物を見渡しても完全に安全性を担保しているようなものが存在していないように、数百万行、数億行のシステムの完全な安全性を保ち続ける手法もまた発見すらされていませんが、世界中に無数に点在し、常に増え続ける敵と戦い続けています。
非常に象徴的で、掴みにくく、なんとなくしか世の中に伝えることができない安全性を、合理性を駆使して生み出していることそのものがこのすごさであると言えます。
我々が日々生み出している「技術的に新しい何か」を世の中が何の疑いもなく楽しむことができる状況を下支えしています。

★Toughness(耐性)

語られても尽くされることのない「継続的インテグレーション」は幾度の仕様変更にも耐え、長きにわたって変化を繰り返し続けることができる状態を目指すことを目的としたプログレッションフレームワークです。
そうしたシステムのタフさはここ数年どんな時にも求められがちな凄さです。
であるにもかかわらず最もコストの必要性が理解されにくい宿命を持っています。
これは、我々エンジニアがその部分を表出させることを怠ってきたからではありません。
輪島塗りの食器を見た時に、工房の整然さをも想像してその美しさを感じる人がどのくらいいるでしょう?
それと一緒か、それ以上に人に伝わりにくい部分なのです。
だから、我々はこの凄さを武器に市場価値を勝ち取ろうとすべきではありません。
その本質を我々エンジニア以外が理解する日は来ないからです。

★Fronteer Spirits(開拓性)

エンジニアは世界で最も『誰もやったことがないこと』に対して心惹かれる職業人種のひとつです。
そこに対する想いは、うやむやな新規性が発生させがちな『実現へ向けた妙な壁』を無力化し、いとも簡単に壁の向こう側にある世界まで到達してしまいます。
思想家ではなく、具現家の立場でその熱量を持つからこそ、この特徴を強く持つエンジニアは『すごい』と賞賛されます。
思想家は機械が動き回る世界の絵を描けますが、動き回った機械が何を始めるのかは、具現家が最もよく理解しています。
世界が最もわかりやすくエンジニアリングに期待している凄さの一つ解いても過言ではないでしょう。。

★Imagenation(想像力)

まだ誰も見たことがないあの壁の向こうには何があるでしょう?
エンジニアのフロンティアスピリッツを下支えする凄さがこのイマジネーションです。
具現家であるエンジニアはまだ見ぬ壁の向こうを誰よりも正確に想像することができます。
そして、であるからそこに向かって迷い無く走り出せるのです。
(僕は最近多くの文章にこの言葉を入れていますが)どんなに魅力的なアイデアが溢れかえろうとも、我々が一度に世に出せるのはたったひとつのプロダクトです。これを正確にイメージできる人がチームにいると、コミュニケーションがとてもスマートになります。
逆にこの機能がチームにないと、どんなに他の視点ですごいエンジニアがいても、いいものは出来上がりません。
そして、この凄さはしばしば出来上がる予定のプロダクトに対する想い入れと比例します。すごいメンバーを集め、誰も大した思い入れのない状態で開始されたプロジェクトが、ぐずぐずのアウトプットを生んでしまう図式では大抵ここの凄さが不足しています。

★Rationality(合理性)

誰にとっての、何にとっての合理性を求めるかによって生まれるアウトプットは変わります。
合理的な構成やインターフェースを持つシステムに、人間は何年もの間苦しめられてきました。その合理性が「機械にとってのもの」でしかなかった時代の話です。
機械にとっての合理性は、その種の合理性を追求する人間にしか価値を理解できず、そんな機会仕様なインターフェースを持つシステムは世界のあちこちで利用者に 今まで教えられたこともないような頭の使い方を人々に強要 しました。
これは、世界の問題解決のあり方までもかえようとしている強い思想であり、具現家であるエンジニアが使う魔法のような実現力の源はこれであると言っても過言ではありません。
しかし、機械的合理と人的合理は全く異なるものです。
これら融和を図るというのがこの合理性の真骨頂ですし、この融和でさえ合理性で解決しようとしているのが、エンジニアの凄さです。

——

長くなりました。できるだけシンプルにまとめたつもりではあるものの。
一口にエンジニアリングといっても、考えてみたら様々なすごさがありました。
こんなことを意識して日頃のエンジニアリングにあたっている人がどのくらいいるのかわかりませんが、キャリアの大小に関わらず、自分はどういったエンジニアになっていきたいかを考えたときに、切り口の参考にでもなれば幸いかと思っています。
近年はレジリエンスなどもエンジニアリングの中では注目対象な強さですが、市場からのスポットライトがあらたるのはもう少し先の話でしょう。

※タイトルにも書きましたが、これはブレスト中です。
きっと抜け漏れがあると思います。
もしもっといい分類を考えていたり、不足している観点を見つけた方は、是非教えてください。

※そういえば考察の副産物ですが、 具現家 って言葉が個人的に気に入ってしまいました。(誤字ではない)
近代のエンジニアたち、クリエイターたち、デザイナーたち、を始め、ものづくりに直接的に関わるみんなひっくるめたくくりに適切な名前を探していたんですが、 これだ! 感があります。(すぐ過ぎ去るかもしれませんが)