ドーパミン駆動開発

ソフトウェア開発・プログラミング
この記事は約14分で読めます。

この動画は、プログラミングにおけるモチベーション維持の新しいアプローチとして「ドーパミン駆動開発」を提案している。Git pushの満足感、パイプラインの視覚的フィードバック、テストの成功時のアニメーション等、開発過程で得られる小さな達成感を活用して継続的な学習と成長を促進する手法を解説している。リモートワークの課題やコードレビューでの些細な指摘に対する見解も含まれており、開発者の心理的側面に焦点を当てた実践的な内容となっている。

どうやら僕の友達のBig Box Sweetがドーパミン駆動開発をやったらしいです。これを見てみましょう。

猿の脳を使ってください、チャット。もう迷子になっているのは分かっています。動画が始まって1秒も経っていないのに。文字通り動画開始1秒で、もうあなたたちが苦戦しているのが分かります。

さて、脳というものがありますよね?そして実際に考えて使えば、多くのことを達成できます。これは皆さんにとって新しいトピックだと思いますが、実際にやれることの余地があるんです。

よし、それだけです。もう動画を終了してもいいですよ。

ドーパミンの基本的な理解

私たちは皆ドーパミンが何かを知っていますが、もしあなたがここ数年のポップサイエンスをすべて避けて通ったとしても…実際、私はドーパミンが何なのか全く分からないんです。それは私の脳にあるもので、画面上で明るくカラフルなオブジェクトを見ると、それをより多く作るものです。そして「いいね」をもらったり、アップ投票をもらったりするとそれが増える。それだけしか知りません。本当にそれだけです。他に何も知らない。ドーパミンがどう働くのか全く分からないんです。

簡単なレッスンをしましょう。ドーパミンは私たちの脳の幸せな部分です。喜びや楽しさ、幸福感を与えてくれる脳の部分なんです。

ドーパミンはケタミンの兄貴分なんですか?分かりました。それは狂ってますね。チャットとBig Box Sweetのどちらをより信頼すべきか分かりません。どちらも本当に信頼できない気がします。

あと、アニメのワイフが幸福を表現しているのがすごく好きです。ああ、幸福って。素晴らしいじゃないですか?

ドーパミンは良いものですが、どうやってドーパミンでコードを書くのでしょうか?それを与えてくれるシステムを作るんです。説明しましょう。

退屈なJava開発者時代

ずっと昔、私は退屈な無名会社のJava開発者でした。完全にリモートワークでもありました。完全リモートのジュニア開発者がどれほど大変かは説明できません

良いオフィス文化について、彼は本当に正しいと思います。リモートマキシがたくさんいるのは分かります。分かりますよ。チャットで1を入力してください。全てが常時リモートであるべきだと思う人は。

分かりました。リモートマキシがたくさんいますね。Primeは今日ジャンプしています。長い間配信していなかったので、配信できてとても幸せです。ドーパミンが全部出ているんです。分かりますよね?

でも真面目な話、彼が今言ったことには本当に深く考えられていない多くのことがあると思います。私の初期の形成期が、自分と同レベルの他の人たちや、上のレベルで指導してくれる何人かの人たちの周りで形作られなかったことなんて想像できません。話し合い、日々のランチ、仕事以外のすべての追加的なこと、それらが本当に私を今のエンジニアに作り上げてくれたんです。

リモートではそれを得るのはとても難しいと思います。個人的には、リモートではそれを得ることはできないと主張したいです。なぜなら、私は週4日人々とランチを食べていたからです。それをするのはとても難しいんです。

それは素晴らしいプログラマーにはなれるかもしれませんが、残念ながら私の同僚たちもダメでした。仕事でコードを書くように自分を仕向けるのがとても難しかったんです。Javaを書かなければならないという考えを恐れていました。GitHubで面倒な同僚たちのニトピックに対処しなければならないという事実が嫌でした。全てが嫌でした。

コードレビューの些細な指摘について

同僚たちのニトピック。これを見ているだけで気分が良くなりませんか?あと、これはPrettierで処理されるべきですよね?これは選択肢にすらならないはずです。

ちょっと現実的になりましょうか?Prettierがないと仮定しましょう。あなたが基本的なvimユーザーで、Prettierがない状況だとします。そして、シングルクォートとダブルクォートの違いがない言語で、シングルクォートかダブルクォートかにこだわっている。文字通り違いはないんです。それでも私は気にします。

気にするのをやめてください。ただやめて。考えることすらやめて。

コードのgrepが難しくなる?なぜクォートサインから始めてgrepするんですか?ソースコンポーネントをgrepすればいいじゃないですか。何をしているんですか?人生でlive gpを使ったことありますか?live Grepを使ってください。

すみません、皆さんはおそらく史上最高のエディターであるNeovim、telescopeTJのものを使っていないでしょうね。理解できないでしょう。あと、パイプを使ってクォートやシングルクォートを検索するのは簡単だということを言わなければなりません。

とにかく、私は気にしません。正直言って、気にしません。これは私が気にするほど重要ではないんです。100行の関数があろうが4行の関数があろうが、もう気にしません。

気にしない理由は、最終的に何かを作っているとき、理解するのが最も難しい部分はシングルクォートかダブルクォートかではないからです。それはすべて気を散らすものです。脳に何の違いももたらしません。

理解するのが最も難しいのは、データがどのように起源し、どのように操作され、どのように表示されるかです。ツリーを取って、それを徐々に別のツリーに変換する長いプロセスを理解すること、それが最も難しい部分です。そして、それらのどれもシングルクォートかダブルクォートかによって影響を受けることはありません。

だから、そんなに必死になるのはやめてください。GitHubでこんな風に生きている人たち、本当に。

リモートワークでの退屈な日々から発見へ

私は全てが嫌でした。でも同時に、完全リモートで新卒だったので、我慢し続けていました。ある日、退屈しきっていた私は、ターミナルを編集し始めて、かなりクールに見えるようにしました

普通にコーディングを続けていたところ、git pushのテキストがどのように見えるかを愛していることに気づきました。何かとても満足感があるように見えるんです。

みんな、私は理解されている気がします。oh my zshユーザーがgit pushのテキストを称賛しているのを見て。ただ気持ちいいと言っているだけです。pullして数字が上がっていくのを見るのも本当に気持ちいいです。幸せな気分になります。

文字通り1行のコードを書いて、ターミナルに行ってpushして、またそのテキストを見るだけのことをしていました。git pushのたびに小さなドーパミンの刺激を得ていました。そして最終的にそれが私に仕事でもっとコーディングさせ、仕事外でもっとコーディングさせ、ついにはその仕事を辞めることができるまでになりました。それ以来、これを仕事内外で応用する多くの方法を見つけました。

パイプラインとの愛憎関係

パイプライン。聞いてください。私はDevOpsパイプラインが嫌いでした。遅いんです。少なくとも私が働いたすべての会社で。YAMLを理解できません。いつも壊れます。そして私たちのDevOpsの人は…

YAMLを理解すべきだといつも感じています。そして理解したと思うたびに、何か一つ間違ったことをして、「ああ、いや。実際、私はYAMLを理解したことはなかった」となります。YAMLがJSONよりもはるかに書きやすいのは分かりますが、同時に私はここに座って、JSONは実際にそんなに悪かったのかと疑問に思っています。分からない。YAMLとJSONのどちらが悪いか分からない。

ノルウェーがfalsyなのは面白いですね。それはYAMLの特別な点です。ちなみに、知らない人のために説明すると、ノルウェーはNOと略されます。つまりそれはfalseということです。だから文字通りノルウェーという国を持つことができないんです。農場に住む60歳のArchユーザーのようでした。

でも嘘はつけません。GitHubの各ステージが通過するアニメーションを見ることに非常に満足していました。これにより、仕事外の自分のプロジェクトでパイプラインを設定したくなり、ネットワーク、Docker、設定管理についてもっと学ぶのに役立ちました。

ちなみに、覚えていますか?この動画を始める前に、興味を持つものを見つけてそれを追求すべきだと言ったことを。まさにその通りのことを覚えていますか?これが文字通り彼がやっていることです。彼は自分を興奮させるものを見つけたのです。

学習への情熱の発見

だから彼は「ああ、これが好きだ。これがどう動くかが好きだ。もっとやりたい。もっと理解したい。もっと大きなものを作りたい。本当に上手になりたい」と思ったんです。これがどれほどうまく機能するかは狂気じみています

すべてのパイプラインステージが通過したときは満足でした。アクションが失敗したときはさらに良かったです。なぜなら、それを挑戦として見て、なぜ失敗するかを常に知っていたからです。一つのことが理由でした。テスト

テストの重要性と満足感

みんなテストを嫌いますが、それは良いソフトウェアを提供する上で非常に重要な部分です。ソフトウェアを提供する一部なんです。どんな種類のテストをするかは実際には重要ではありません。ユニットテスト、統合テスト、エンドツーエンドテスト、すべてのテストフレームワークには人類が発明した最高のものが付いています

機能統合とエンドツーエンドテストの違いは分かりませんが、最高のアニメーションです。

私が使ったすべてのテストフレームワーク、あるいはIDEテストを使うだけでも、絶対に素晴らしいアニメーションがあります。緑のチェックマークを見ることには本当に満足感があります。失敗したテストを克服したときはなおさらです。ちょっと無意味ではありますが、100%のコードカバレッジを達成するのは、とても満足感があります。

これは私が自閉症を持っていることを実感する人生の瞬間の一つでしょうか?こうやって起こるものなのでしょうか?美味しいアニメーション。

タスク管理の満足感

タスクマネージャー。誰もがTo-Doリストを作りたがりますが、それを使うことがどれほど満足感があるかを忘れています。私は普通マークダウンリストを使います。でもLinearやGitHub projectsのようなプロジェクト管理ツールも使えます。

自閉症はありません。冗談です。冗談を言っているだけです。ありません。

タスクを追跡してそれらを完了する行為は非常に満足感があります。個人プロジェクトに取り組んでいる場合や学生の場合、この3つの方法すべてを組み合わせることで、現代のソフトウェア開発についてかなり良い理解が得られます。

猿の脳を活用する原理

アイデアは、アニメーションを見る、タスクをチェックオフするなど、猿の脳を幸せにする非常にシンプルなものを見つけて、それを難しいことをするためのレバレッジとして使うことです

私たちはこれらすべての方法を持っていますが、彼が本当に控えめに言ったことの一つに、この図のもう一つの本当に重要な部分があると思います。昨夜作ったんです。大したことじゃありません。かなり面白いと思いました。

もう一つの非常に重要な部分があります。それはコンフォートゾーンを持つ必要があるということです。彼はここにコンフォートゾーンを持っていました。そして「エッジ」と呼ばれるものがありました。そしてエッジの先には難しさ、つまり未知のゾーンがあります。難易度ゾーンです。Dと書こうとしたのですが、Pゾーンになっています。分かりますよね。難易度ゾーンです。

無知という魔法の力

ここで欠けている一つのことがあります。この魔法のアイテム、無知です。問題がどれほど困難になるかを過小評価する私の能力は、私の人生で最も偉大な力の増幅器の一つです。何なのか分かりません。

「週末に作れるよ」が10週末に変わりますが、それでも作り上げて、そしてそれは素晴らしい気分になります。ある時、友人と私は複数取引所の暗号通貨アービトラージボットを作り、数千ドルを稼ぎました。残念ながら、それを機能させるには数百万ドルが必要でした。素晴らしかったんです。ただ、実際に機能させるのに十分なお金を稼ぐことができませんでした。素晴らしかったです。そして市場全体が暴落して、すべてが起こって、私はできなくなりました。結局、市場に勝つことはできず、市場は最終的には常に勝つということが分かりました。だからやめました。でもそれでも素晴らしかった。とても楽しかったです。

開発者体験の重要性

ソフトウェアを作りやすくするためのすべての方法論があります。ドメイン駆動開発、テスト駆動開発、ミーム駆動開発など。しかし、ソフトウェアを作る人の体験を考慮して設計されたシステムはほとんどありません

ソフトウェアエンジニアリングが好きなのは確かですが、CRMに接続するデータ分析パイプライン用の統合サービスを構築し、そこにどこかでAIを組み込まなければならないという考えは、じゃがいも農家になりたくなります。でも誰かがやらなければならないんです。

環境改善によるモチベーション向上

仕事で退屈したら、何か新しいものを見つけてください。クールな新しいターミナルツールでも、To-Doリストでも、エディターのフォントの簡単な変更でも、あなたのツールと環境があなたのために機能するようにしてください

ドーパミンを得るもう一つの方法です。彼は正しいです。これはすべて素晴らしいアドバイスです。

ポジティブな視点の力

正直に言うと、私は少し違った言い方をしたいと思います。すべてのタスクをまた別の雑用として見るか、それとも…これはNetflixで燃え尽きた後に私が得た大きな啓示の一つでした。その後2年間、オリジナルチームで多くのことをして、この魔法のようなことができることに気づきました。それは、すべてのタスクを「ああ、これは面倒だ」と見るか、「ああ、これは実際に完全に違うこと、珍しいこと、クールなことをする機会だ」と見ることができるということでした。

私は常に仕事にうんざりする理由を見つけるのではなく、仕事に喜びを見つけようとしていました。なぜなら、どこで働いても、何かがうんざりする理由は常に100個あるからです。あなたの仕事が何であろうと関係ありません。Swift言語を書いていようが、今はMojo、Mojoを書いていようが、Mojoで起こる単純に楽しくないことがたくさんあると確信しています。そして、うんざりすることに終わりはないんです。

だから私は早めに、幸せになる方法を学び、取り組んでいることを楽しむ方法を学び、視点を変える方法を学べば、たとえ私がやっていることが退屈であまり楽しくなくても、実際にそれをやって良い時間を過ごすことができ、気分良くなれ、それについて本当に幸せになれることに気づきました。それは私がもっとやりたいと思っていることです。すべてのネガティブなことを見るのではなく、すべてのポジティブなことを見て、見たいものを強化することです

人生における基準線の重要性

それは一生懸命働かなければならないという意味ではありません。ワーカホリックになる必要があるという意味でもありません。単により肯定的な光の中で人生を生きることができるということです。そして時には、それは私にとってドーパミンですらありません。より高次の喜びが何であれ、長い時間をかけてより幸せになり、一般的にレベルを上げるものです。

人生には基準線があり、基準線が下がっていくか上がっていくかは本当に簡単だと感じています。何をするたびに「ああ、これはうんざりだ」と言って、それを終えると「ああ、これはうんざりだ。ああ、これはうんざりだ」となると、一般的に人生はもっともっとうんざりし始めて、どんどん悪く感じるようになると思います。

でも、その中に何か良いことや喜ばしいことを見つけようと少しでも試みれば、「ああ、それは楽しかった。この部分はうんざりだけど、でもこう考えると実際に楽しい」と言えるようになると思います。そして少なくとも平坦を保つか、一般的な幸福度が上がり始めることができると思います。

Dr. Kが神経科学を埋めて、すべてに同意するでしょう。多分希望的に妄想かもしれません。妄想かもしれませんが、人生の多くは困難なタスクの後に困難なタスクの連続ではないでしょうか?だから、それを「困難なタスクの後に困難なタスク」と見ることもできるし、「この状況でどう学ぶか?この状況をどう本当にうまくやるか?会社内で使ったことのない他のツールは何か?」などの多くの他の質問を自分に問うこともできます。

ネガティブなものに固執するのではなく。確かにネガティブに見る理由はたくさんあります。ただ私の視点を再構築しているだけです。状況をコントロールできないかもしれませんが、その状況に対する私の視点は確実にコントロールできます。

個人的な成長の挑戦

今、良い例があります。私はこの種のメディア会社を始めています。TJが参加しました。今4人の従業員がいて、大きなものを作ることを学ぼうとしています。それはその性質上、プログラミングを好きなだけできないということも意味します。プログラミングが大好きなので、これは私にとって非常に困難です。つまり、本当に好きなことから一歩下がって、やる必要があることにもっと集中しなければならないということです。それは本当に難しい、本当に難しいステップです。

でも怒るのではなく、「ここは私が理解していないことを学ぶ機会だ」として見ようとしています。それは本当にポジティブなことだと思います。私は心の底ではICなので、本当に難しいことです。それが私がなりたいものなんです。大局的なことはあまり気にしません。最小の側面、IC側面か、最大の側面のどちらかしか気にしません。ただのマネージャーにはなりたくありません。

Big Boxを愛していました。撤回します。撤回します。動画をありがとうございました。私はBigです。

Big Box、動画はそうやって終わるべきです。なぜ最後に自分の名前を言ったんですか?これは分かっているはずです。いつもそうだったんです。そんなことはできません。私たちがあなたに頼っているものがあるんです。

とにかく、名前はlearning genです。以前はlearning.に行っていました。

コメント

タイトルとURLをコピーしました