Help us understand the problem. What is going on with this article?

開発と理想主義 vs 現実主義

TL;DR

  • Qiitaで現実主義的な立場の方が書いた「現実は甘くねえんだよ!」な記事がランクイン
  • その記事の筆者とコメントでやり取りをしていた方が理想主義的立場で記事を書き、これまたランクイン
  • 実際はどちらも大事だよ、という話をしたかった

はじめに

開発者の格差を書いたある記事がQiitaでランクインしました。
現在その記事は何らかの理由でコミュニティガイドライン違反として非公開となってしまっております。
個人的に記事内容には同意できましたし、開発にも有用なものだったので、理由は定かではないのですが……

確実に言えることは、その方はいわゆる「現実主義的な」立場から記事を書いていました。

そしてその記事のコメントでやり取りをしていた方が新たに記事を書き、そちらもQiitaでランクインしました。

エンジニア業界を少し外から眺めて

こちらはまだ公開されております。
その方は、実際に記事を読んで頂きたいのですが少なくとも比較的「理想主義的な」立場から記事を書いています。

経験則、この2タイプの方の議論は交わりません
平行線です。

これは実際の開発、プロジェクトにおいても非常に重要で、PLやマネージャーのような立場の人はどちらの考え方も理解できることが理想です。
どちらの考え方も大事ですから。

一応「ポエム」タグは付けておりますが、実際の開発における処方箋として書くつもりです。
テーマがテーマなだけにあまり定量的な議論はできないのですが、可能な限り実プロジェクトに応用できる議論にするつもりです。
どうぞお付き合いください。

定義

単なるレッテルに終始しないため、具体的にどういう傾向がある人が「現実主義的」で、どういう傾向がある人が「理想主義的」かを語ります。
もちろんあくまでも私の定義なので、「あー、あの人はこっちだな」と実際にご一緒にお仕事された方を想像しながら読んでみてください。

「現実主義者」はマイナスをゼロにすることに長けた人です。
エンジニアリングにおける負債や課題を敏感に察知し、不安を潰していく。
スタート地点は「課題」。ゴールは「課題の解決」。
その傾向が強い人です。

私は「現実主義者」寄りである自覚があります。
個人開発にはあまり興味はなく、「プログラミングたのしー!!!!」という気持ちもあまりありません。
ただ、「どのようにすればこのプロジェクトは最も効率的に、平和に終わるか」「技術によってそれを成し遂げる方法は何か」を考えることに関しては、それなりに変態的な執着心があるという自負があります。

次に。
「理想主義者」はゼロを1に、あるいは1を100にすることに長けた人です。
エンジニアリングそのものに希望を持ち、楽しみ、息をするように新規の技術を導入する。
そういう人もたくさんいます。
スタート地点は「素晴らしいプロダクトへの渇望」。ゴール地点は「素晴らしいプロダクトの実現」。

ちなみに先程述べたように私は明確に前者なのですが、「効率的に負債を潰すツール」「開発を楽にするフロー」のようなものは大好きなので、周りからは後者に見られることもあります。
閑話休題。

さて。
前者はSIer出身者に多く、後者はWeb系(自社サービス系)出身者に多いとか、そういうことは色々あるのですが……
なぜこの二者の話は噛み合わないのか。

それは根本的に目指すものが異なるからです。
そしてタチの悪いことに、この2タイプは対極のようでいて、コインの裏表のような関係で、ある瞬間にあっさり裏返ります。

目指すべきところ

現実主義者が目指すのは仕事としてのプロジェクトの完遂です。
これは「仕事さえ終わればどうでもいい」というようなネガティブなものではなく、一種の職人気質であり、立派なプロ意識です。

「仕事さえ終わればどうでもいい」というようなネガティブなものは、それはもう現実主義以前にただの悲観論者です。
度が過ぎた悲観論者がプロジェクトの足かせとなるのは別問題なのでここでは語りません。

一方、理想論者が目指すのはプロダクトの向上あるいは新規なアイデアの実現、あるいは自己実現です。
こちらも言うまでもなくプロ意識です。

しかしながら、強い現実主義者と強い理想論者が同じプロジェクトに入ると、事故るか、事故らないにせよピリッとなります。
前者は「なぜ導入するの?」という発想をし、後者は「なぜ導入しないの?」という発想をするからです。
スタート地点もゴール地点も違います。

そしてタチの悪いことに「コインの裏表と同じ」と例えたのには2つの理由があります。
まず1点目、現実主義者特有の問題。

悲観論に陥らず現実主義を極められたとして、その人は理想論に陥る可能性があります。
負債は嫌だ。防ごう。
デザインパターンを適用しよう。
DDD的発想を導入しよう。
CI/CDを導入しよう。
……そして負債は消え、その代わり学習コストが限りなく高いツールが大量に残った。
後任はそれらを負債と呼び始めた……

笑えない話ですが、あるあるです。
結果的に初心者が書いたコードが一番保守しやすいというような笑えない話も起こりがちです。

で、それらの高度な技術を担保するためには、学習意欲が高く優秀なメンバに引き継ぐしかない。
……エンジニアは基本的にみんな学習意欲が高いからこれくらい分かって当然だ!
……とまでいくと、理想主義者を通り越して空想論者になります。現実主義的だった彼はどこに行ったのでしょうか。

もちろんこれは極端な例ですが、現実主義者が地に足をつけて負債を減らすために導入したツールが学習コストの兼ね合いで負債になる、これはよくある話でしょう。

さて、2点目。
こちらは理想主義者特有の問題。
自分を現実主義者であると思っている場合がある、ということです。

「え? エンジニアは学習意欲が高くあるべきでしょう? 現実としてそうじゃないならエンジニアである意味ないじゃん?」

正論です。
正論ですが、現実……弱小SIerを含めた、すべての「エンジニア」を包括する現実は、彼の想像を遥かに超えて無茶苦茶です。正論が意味を成さないパターンも多々あります。
ただ一方、その逆パターンとして、最終的に「その理想論者が言っていることだけが最も現実的」ということは大いにあり得ます。
唯一の現実主義者は、最も理想主義者だった彼だった……
しかしながらそれを判断できる人はほとんどいません。
いずれのパターンにせよ誰かが心にダメージを受けることになります。

ということで、要約すると

  • 理想主義者と現実主義者はスタート地点もゴール地点も違う
  • でも本質的には共通しているところがあるから、下手すると一瞬で立場が裏返る
  • 裏返った結果よくわからないことが起こることがある

というあたりになります。

ならどうするの

わからん!

……と言うと「お前処方箋って言ったやん!」と言われそうですが……
実際に大事なのは、プロジェクト的に言えば

  • この2パターンのエンジニアがいると認識しておく
  • どちらが優秀とか劣っているか、そういう話ではないと認識しておく

個人の生存戦略的に言えば

  • どちらの傾向が強い現場も経験できるようにキャリアを形成する
  • あるいは、自分の立場を自覚してその逆方向の現場を避けるようなキャリアを形成する

のあたりだと考えます。
要するに、ざっくりしていますが「いろいろな人がいると分かっておく」ことなのではないでしょうか。
キレイな言葉を使うなら「多様性の肯定」です。
ここでエンジニアの善性に依拠したソリューションを考えてもそれは理想主義に寄り添うだけですし、パターン別対処法みたいなことを考えても過度に現実主義的でおそらくあまり役に立たないでしょう。
それよりも「いろんな面白いエンジニアがいるなぁ」「俺もその一人なんだなぁ」と思っておいたほうが楽です。
これは一種の救いでもあります。

要するに、「俺にとって開発なんてしょせん仕事だよ、あー帰りたい」と言ってても超絶優秀な人はいますし、ギラギラ目を輝かせながらイキイキ仕事をするあまり優秀ではない人もいるでしょう。
もちろんその逆、「俺にとって開発なんてしょせん仕事だよ、あー帰りたい」と言いながら何もしない人もいますし、ギラギラ目を輝かせながらイキイキ仕事をして恐ろしい利益を上げる人もいるでしょう。

経験則、「こういう考え方をしてる人、こういう仕事観の人はおかしい」とか思い始めたら危険信号です

この記事はかつて理想主義的な考え方を許容すらできなかった自分を思い出しながら、自戒をこめて書きました。
私の過去についてはこのあたりに記しています。もしお時間ありましたらぜひ。

また、数は少ないのですが、「ハイブリッド型」ももちろんいます。
現実的に、理想を追う。
言葉では簡単ですが最も難しい。でも、私は明確にそれを目指しています。

ここまでくるとエンジニアリングでもなんでも無い、それどころか現実主義や理想主義を通り越した持論ですが、後ろ向きに前向いてる人間ってのが一番魅力的に見えます。少なくとも私はそうありたい。

終わりに

「ポエムには終わらせたくない」と思いつつ本格的にポエムになってしまった気がしますが、この記事が少しでも何か具体的なソリューションに繋がりましたら幸いです。
お読みいただきありがとうございます。
ではまたどこかで。

KizashiTakata
フリーランスエンジニア / Python / PHP / Java / vue / AWS / Serverless Framework / Laravel / Data Engineering / DevOps / 筋肉駆動開発
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした