退屈の価値
@NalaGinrut: 私の経験を少し共有しますが、どんな真剣なこと(いわゆる本気で取り組んでいること)は退屈です。他人が自分のしていることが非常に楽しいと言うとき、それはまだ表面的な段階です。
@zhangjintao9020: 前半の文は基本的にその通りです。後半の文については、成就感や喜びを感じるポイントは人それぞれ異なります。退屈であっても、喜びを得ることは可能です(旅の風景も悪くない)。
私自身の経験からしても、確かにその通りです。
子供の頃、美術を学び、中国画を描いていました。新しい絵を描き始めるとき、一番楽しいのは前半です。輪郭を描き、姿勢を調整し、全体のレイアウトを決め、色調や感情を決定するなど、これらは作品全体に影響を与える要素です。
しかし、後半に入ると、細部を描き込んだり、前半のミスを修正したりする段階になると、それほど楽しくなくなります。人は忍耐力を失い、手先も不器用になります。しかし、本当に言いたいのは、これらの後半の雑務こそが、作品が細部において観客を感動させるかどうかを決定するということです。私の先生は当時、そのように言っていました。
その後、ソフトウェアエンジニアとして、プログラマーの通病にかかりました:長期間従事していると、常にプロトタイププロジェクトがたくさんあります。通常の操作は次のようなものです:
- 突然興味が湧き、新しいプロジェクトを開始する
- プロジェクト内のあるコンポーネントが独立するべきだと気づく
- そのプロジェクトを一時中断し、そのコンポーネントの開発を始める
- コンポーネントの汎用性が不足していることに気づき、より多くの使用シナリオをカバーし始める(たとえプロジェクトが1つのシナリオしか使用していない場合でも)
- プロジェクトの進捗が非常に遅くなり、少し怠け始め、ゲームをしたりテレビを見たりすることに決める
- しばらくすると、そのプロジェクトへの興味を失う
そして、やっているうちに続けたくなくなるのです。
プロトタイプがなぜ興奮させるのか
プロジェクトのプロトタイプを作ることはいつも興奮させます。その理由の一つは、プロトタイプシステムが迅速にフィードバックを得られるからです。
ソフトウェアエンジニアリングにおいて、プロトタイプシステムを作るのにかかる時間は非常に短いです。
これは、すべてのプロトタイプシステムが最初は「俺思うに」から始まるからです。プロトタイプの目的は、新しい技術の原理を示したり、新しいアイデアを試したりすることです。
また、プロトタイプのソリューションは通常、孤立した環境で構築されます。システムの実装は小さな要求を満たすだけで、本当の外部要求やユーザーとは隔離されています。つまり、これらのプロトタイプは、将来の拡張の煩わしさを無視して、現在の最小限の要求を満たすだけで良いのです。
したがって、「俺思うに」からプロジェクトが最初に動くまでの時間は本当に短いです。典型的な「俺思うに」はハッカソンのように、一晩で十分です。このようにして開発者たちは、「俺思うに」から「ワーイ」までの喜びを迅速に享受することができます。
しかし、正式な製品はそう簡単ではありません。それを製品にするには、多大な時間と労力を投入する必要があります。
もう一つの理由は、確実なロードマップを作るよりも、新しい技術や概念の興奮に陥りやすいからだと思います。
会社の業務運営においても、これは特に顕著です。
例えば、7年前の「機械学習」、3年前の「ブロックチェーン」、3か月前の「AI」、そして現在の VR/AR。ニュースで大企業がある分野に「オールイン」する準備をしていると聞くことがありますが、実際には、会社のリーダーが30分のポッドキャストを聞いた後にこの「オールイン」を決定したか、あるいはある社員が短期間でプロトタイプを通じて新技術の概念を迅速に検証し、トップダウンで報告した後、「オールイン」することを決定するのです。
どうやって始まったとしても、とにかく、みんなが興奮してプロトタイプシステムを構築し始めるのです。このようにすることには多くの利点があります:
- 初期段階では、速さが重要です。したがって、生産システムに必要な調査研究は一切考慮する必要がありません。
- これにより迅速な内部成功をもたらし、会社のイノベーション文化を祝うことができ、全員が心から拍手を送ります。
- 従業員にとって、これは楽しくてエキサイティングな「練習」です。日常の仕事に比べて、気を散らす良い機会です。
そして、これらの興奮が徐々に消えた後、プロジェクトは停滞します。どうするか?
プロトタイプでは不十分
冒頭のツイートの見解に同意します:多くのことは、本気で取り組むと、退屈になります。少なくとも、退屈な部分が長期的に、そして固定的に大きな部分を占めます。
例えば、現在使用している Quail.ink を例にとると、4月18日にニュースレターを書くことを決めました、そして4日後に最初のバージョンがオンラインになりました。しかし、実際にオンラインになったのは7月7日で、最初のバージョンがオンラインになってから2か月以上が経過していました。
オンライン当初は非常に不完全でした。今でも Quail の Todo リストは非常に長く、たくさんの作業をこなす必要がありますし、多くの問題を解決する必要があります。
これらの作業の中には、最初から計画されていたものもあります。例えば、コンテンツの購入支払い、カスタムドメインのバインディング、データのインポートとエクスポートなどです。
また、多くの作業は予期していなかったものです:
- 新たに発生した問題やバグの解決が必要です。このような問題はよくあります。例えば、先日発生したデッドロック問題は、プロセスが正常に動作しなくなり、チェックして修正する必要がありました。
- 以前の計画で考慮されていなかった部分です。カスタムドメインを例にとると、最初は cloudflare の TLS for SaaS を使用するつもりでしたが、後で適さないことがわかりました。そのため、計画を
変更して、acme を使用して各バインディングドメインに Let's Encrypt 証明書を追加することになりました。これにより、追加の作業量が発生しました。
- 他にも多くの作業があります。特定の機能開発には関係ない事務的な作業です。例えば、最近2か月の訪問量が増えたため、以前は行っていなかった負荷分散が必要になりました。負荷分散を行ったため、以前の単一キャッシュを redis に変更する必要があります。このような作業はユーザーには感じられませんが、必須の作業です。
これらの作業の多く、特に最後のカテゴリの作業は非常に退屈です。頻繁に内心ではやりたくないと思いますが、やらなければならないのです。安定したサービスと継続的なイテレーションには代償が必要だからです。
これはエンジニアリングに関することだけです。
プロダクトマネージャーとしては、将来何をするか、何をしないかを考える必要があります。エンジニアリング以外のすべての思考と意思決定、例えば「バックエディターはどのレベルに達する必要があるか」、「AIをどの程度統合するか」といった要件設計、そして「コアユーザーである著者たちが気にすること」といった長期的な問題も考慮する必要があります。
退屈さを減らす
退屈の原因が分かったら、プロジェクトを続けるための機会が得られます:
早期に宣言する
現在、多くの独立開発者が採用している「公開中に構築する」という方法です:早期に自分が何をしているかをみんなに知らせるのです。
一方で、最初のフィードバックを得ることができます。もう一方で――これは非常に重要な理由ですが――みんなが続けるように励ましてくれます。
以前、Hototというプロジェクトがありました。最初はただ遊びで始めたのですが、突然スペインのLinuxメディアに取り上げられ、ユーザーが一気に増えました。それが嬉しくて継続して作業を続けました。TwitterがAPIポリシーを変更するまで。
需要の存在を確認する
多くのエンジニアにとって、このことは難しいかもしれません。マクロ的な「このことはやる価値があるのか」やミクロ的な「このユーザー体験は良いのか」ということは、ユーザーや市場を理解することと密接に関係しています。
プロダクトマネージャーになることを学ぶ以外にも、簡単な方法があります。それは、自分が代表する人々のニーズにのみ注目することです。
他人を理解するよりも、自分を理解する方が容易です。自分が作ったものに非常に満足しているなら、それは潜在的に自分と似た人々も満足することを意味します。この方向性を確立した後、自分を代表するこの人々のニーズを満たすことに集中すればよいのです。
やることとやらないことを選択する
何かをすることは投資です。コードを書くことや設計には時間とエネルギーが必要であり、サーバーには金銭も必要です。したがって、「投資」である以上、その合理性、つまりリターンを考慮する必要があります。
新しいアプリやサービスを作るつもりなら、この「投資」が合理的であることを証明する必要があります。この新しいプロトタイプ製品が名目上の付加価値しかもたらさず、直接的な経済的リターンが見込めない場合、それが実際に私たちにもたらすものを確定する必要があります。
もちろん、すべてのプロトタイプ製品が経済的な収入を生む必要はありません。概念の検証や新しい分野の探索のために作られることもあります。これらのプロジェクトの目標は、ユーザーフィードバックを得ること、ソリューションを提供すること、または技術革新を促進することかもしれません。これらは直接的な経済リターンをもたらさないかもしれませんが、投資の誘致、評判の構築、将来の商業化の基礎を築くなど、他の面で価値があるかもしれません。
この視点において、あることを「やるかやらないか」を選択することが非常に重要です。これらの決定により、経済的リターン、プロジェクトの実現可能性の検証、ユーザーの満足度、商業的な評判などの結果が得られます。これらの結果はすべて定量化可能であり、「やるかやらないか」の決定に使用されます。
とはいえ、面白いか退屈かを気にせず、長期間にわたって正しいことを継続的に行い、時間を友人として扱うことで、退屈の価値を見出すことができると思います。