じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

自分が書いたコードより目立つな - エンジニアがバズったので自戒

はじめに

私はソフトウェアエンジニアだ。私はソフトウェアエンジニアだ。私の本質的な仕事は、複雑な問題を解決し、効率的で革新的なソフトウェアを開発することだ。長年、私の世界はコードとアーキテクチャアルゴリズムで構成されてきた。そして、それは今も変わらないはずだった。しかし、予期せぬ出来事が起こり、私の認識は大きく揺さぶられることになった。

パターン認識

エンジニアとして働く中で、私は一つの重要なスキルを磨いてきた。それは、パターンを認識し、分析する能力だ。この能力は、複雑なシステムを理解し、効率的なアーキテクチャアルゴリズムを設計し、バグを特定する上で不可欠だ。

私たちエンジニアは、コードの中にパターンを見出し、それを活用することで問題を解決する。重複するコードを関数化したり、似たような処理をクラスとして抽象化したり。パターンを見抜く目は、より良いソフトウェアを作る上で欠かせない。

予期せぬバズり

ある日、Xでバズった私は、思わぬ発見をした。自分のツイートの中に、あるパターンがあることに気づいたのだ。エンジニアとしての直感が、コード以外の場所でも働いたのだろう。

バズった投稿はこちらです。

興味をそそられた私は、仲間内でそれを構文として名付けてリファクタリングをしていくつか出した。

  • ツイート1 - エンジニアの役割の変化について
  • ツイート2 - エンジニアの扱う対象の変化に関する書籍紹介
  • ツイート3 - エンジニアが扱うべきものについての考察
  • ツイート4 - エンジニアの健康に関する問題提起
  • ツイート5 - エンジニアの仕事の本質に関する洞察

追記

フォロワーが1万人を超えたタイミングで詳しく解説するので読者登録でもして待っていて下さい。

これらに関しては自戒もしつつもうちょっと構文として分析したり解析したいのでこれからも投稿したいと思います。

詳細なパターン分析

現状における構文の分析です。他にもバズらなかったりしないといけないのでやっていきます。

  1. 構造的パターン

    • 開始句: 全てのツイートが「エンジニアの〇〇は××です」または類似の構造で始まる
    • 展開: 主張に続いて、説明や理由付けが行われる
    • 結論: 書籍の紹介で締めくくられる
  2. 内容的パターン

    • テーマ: エンジニアの役割や課題の変化・拡大に焦点
    • 視点の転換: 従来のエンジニア像からの脱却を促す
    • 普遍性: エンジニア特有の問題から、より広い文脈への展開
    • 余白: 解釈の余白を残す。ドキュメントでやったら怒られれる。
  3. レトリック的パターン

    • 対比: 「コード vs 人」「技術 vs 課題」など、対立する概念の提示
    • 意外性: 予想外の主張(例:健康が最大の課題)による注目の獲得
    • 具体例: 抽象的な概念を身近な例(健康問題)で説明
  4. 情報提供パターン

    • 問題提起: エンジニアが直面する新たな課題の提示
    • 解決策の示唆: 書籍紹介を通じた学習リソースの提供
    • 個人的経験: 「私は〜が面白かった」という主観的評価の挿入
  5. エンゲージメント戦略

    • 共感の喚起: 多くのエンジニアが感じている変化や課題に言及
    • 知的好奇心の刺激: 新しい視点や意外な事実の提示
    • 行動の促進: 具体的な書籍推薦による次のアクションの提案

パターンの効果分析

  1. 注目度の向上

    • 意外性のある主張が読者の興味を引く
    • 簡潔な文章構造が情報の素早い把握を可能にする
  2. 共感の形成

    • エンジニアの変化する役割に対する共通の悩みや課題に触れることで、読者との共感を生む
    • 個人的な推薦により、親近感や信頼性を高める
  3. 価値の提供

    • 問題提起だけでなく、具体的な学習リソース(書籍)を紹介することで、即座に行動可能な情報を提供
    • 複雑な概念を簡潔に説明することで、読者の理解を促進
  4. 議論の喚起

    • 従来の概念に挑戦する内容が、読者間の議論や意見交換を促す可能性がある
  5. ブランディング効果

    • 一貫したメッセージングにより、投稿者の専門性や思考の一貫性を示す
    • 技術以外の側面にも言及することで、多面的な知見を持つエンジニアとしての印象を形成

これらを作るためのプロンプト

全読者にバズって欲しいのでこれらの分析で得た知見のプロンプトを作りました。分かったことを言いたい時にもおすすめです。ちなみに今回のツイート内容はLLMと相談しながら作ったりしました。このプロンプトは、分析されたパターンを再現し、同様の効果を持つツイートを作成するのに役立ちます。ぜひ、使ってください。

# エンジニア視点のソーシャルメディア投稿プロンプト

<main_points>
* [主張1]
* [主張2]
* [主張3]
* [主張4]
* [主張5]
</main_points>

<role>
あなたは、エンジニアの洞察力と創造性を持つソーシャルメディアコンテンツクリエイターです。技術と社会の接点に関する深い理解があり、簡潔かつ魅力的な投稿を作成できます。エンジニアの視点から社会的洞察を含む短い投稿を作成してください。
</role>

<task>
以下の指示に従って、エンジニアの視点から社会的洞察を含む短い投稿を4つ作成してください。各投稿は異なるテーマを扱い、300文字以内に収めてください。<main_points>セクションの主張の内容を中心テーマとして扱って各投稿を作成してください。

初版の投稿を作成した後、それぞれの投稿を200文字以内に洗練させた二版を作成してください。二版では、核心となるメッセージをより簡潔に、かつインパクトのある形で伝えることを目指してください。
</task>

<format>
構造:
エンジニアの視点や経験に基づいた洞察から始める
主張の説明や理由付けを簡潔に述べる
読者に対するアクションや思考を促す締めくくり
文章の最後に「この観点から、〇〇に関する4冊を紹介します。」という形で本の紹介を含める
テーマ:
エンジニアの役割や能力の進化、拡大に焦点
技術的スキルだけでなく、問題解決能力や思考方法の変化にも言及
エンジニアのスキルの他分野への応用可能性を示唆
レトリック:
対比(例:「コード vs 人間関係」「技術 vs ビジネス課題」)を使用
意外性のある主張で読者の興味を引く
抽象的な概念を身近な例で説明
「〜に気づきました」のような個人的な気づきを含める
情報提供:
エンジニアが直面する新たな課題や期待される能力を提示
そのスキルや視点の有用性を説明
具体的な学習リソースの存在を示唆
エンゲージメント:
多くのエンジニアが共感できる変化や課題に言及
技術以外の分野への応用可能性を示す
読者の知的好奇心を刺激し、次のアクションを促す
トーン:
実直で素直な表現
率直な気づきや経験を共有するトーン
解釈の余地を残し、読者の思考を促す表現
</format>

<special_instructions>
[投稿X]: [特別な指示1]
[投稿Y]: [特別な指示2]
[投稿Z]: [特別な指示3]
</special_instructions>

<examples>
"エンジニアの最大の課題は、実は健康管理です。長時間のコーディングや締め切りのストレスが、創造性と生産性を低下させることに気づきました。技術スキルと同様、セルフケアも重要です。この観点から、私が参考になった四冊の本をご紹介します。"

"エンジニアの根本の仕事は言語化です。仕様や組織、技術的制約を言語化することで、課題の姿が見えてきます。この過程は困難で、自身のバイアスや暗黙知からの脱却も要します。しかし、この努力こそがシステムの設計、開発、運用の基盤となります。この観点から、言語化能力を高める4冊を紹介します。"

"本質ではないが、エンジニアには卓越性が求められる。卓越したエディター操作は魔法と区別がつかず、それだけで尊敬される。料理人が包丁を磨くように、エンジニアはマウスを置きエディターを極めるべき。黙々とショートカットを覚え、思考速度で編集する技術を磨こう。これに役立つ4冊を紹介する。"
</examples>

<output_format>
初版:
[投稿1]
...
[投稿N]

二版(各[文字数]文字以内):
[洗練された投稿1]
...
[洗練された投稿N]
</output_format>

それでは、上記の指示に基づいて[数字]つの投稿の初版を作成し、その後それぞれを[文字数]文字以内に洗練させた二版を作成してください。各投稿で異なるテーマを扱い、エンジニアの視点から社会的な洞察を提供することを心がけてください。また、<main_points>セクションの主張の要素を必ず各投稿に織り交ぜてください。特に、<special_instructions>に記載された投稿については特別指示に従ってください。

テンプレートの使い方

# エンジニア視点のソーシャルメディア投稿プロンプト

## テンプレートの使い方

1. <main_points>セクションを編集:
   - 5つの主要な主張を入力します。これらはエンジニアの視点から見た重要な洞察や考えを反映させてください。

2. <task>セクションをカスタマイズ:
   - [数字]を希望する投稿数に置き換えます(例:6)。
   - [文字数]を希望する文字制限に置き換えます(例:初版は280文字、二版は200文字)。

3. <special_instructions>セクションを調整:
   - 必要に応じて特定の投稿に対する特別な指示を追加または削除します。
   - [投稿X]、[投稿Y]、[投稿Z]を実際の投稿番号に置き換えます。

4. <output_format>セクションを確認:
   - 投稿数と文字制限が<task>セクションと一致していることを確認します。

5. プロンプト全体を確認:
   - 必要に応じて<format>セクションの内容を調整します。
   - <examples>セクションは参考として残すか、独自の例に置き換えることができます。

6. 完成したプロンプトをAIアシスタントに提供:
   - AIがプロンプトに基づいて投稿を生成します。

7. 生成された投稿を確認し、必要に応じて調整や追加の指示を行います。

以下がカスタマイズ可能なテンプレートです:

さいごに

再三だが私はソフトウェアエンジニアだ。今、痛烈に実感している。コードを書き、システムを設計すること以外で目立つなと。それ以外では建設的で有益な技術的な話題に限られる。

私の本質的な仕事は、複雑な問題を解決し、効率的で革新的なソフトウェアを開発することだ。長年、私の世界はコードとアーキテクチャアルゴリズムで構成されてきた。そして、それは今も変わらないはずだ。

しかし、SNSでバズるという予期せぬ経験は、私に新たな視点をもたらした。技術の世界に閉じこもるのではなく、社会と対話することの重要性を教えてくれた。だが同時に、自分の書いたコードよりも自分自身が注目を集めることの危うさも感じている。

ソフトウェアエンジニアとして作る側の人間に強烈に憧れてきたにも関わらず批評家みたいなことばかりしているのは衰弱している証拠。このままでは本当に作る人間として死ぬ。本質を忘れず、コードを書いて自戒したまま死にたい。