世界を動かす技術を、日本語で。

「ティンカリング」は良いセンスを身につける方法です

概要

  • tinkering(いじくり) の意味と重要性について説明
  • 著者の 成長過程 とtinkering習慣の変化
  • tinkering の具体例と学び方への影響
  • バランスの重要性 と実践のすすめ
  • 「良いセンス」 を磨くためのtinkeringの役割

Tinkering(いじくり)とは何か

  • tinkering は、何かを 修理や改善 する目的で小さな変更を加える行為
  • 子供時代、 ギターや美術、武道 など多くを試したが、プログラミングではtinkeringをしなかった経験
  • ゲーム制作 への興味はあったが、深追いせず
  • tinkering 習慣は大人になってから身につき、今では 学びの中心的手法
  • 早く始めていれば良かったと感じるほど、 現在の自分を形作る要素

Tinkeringの具体例

  • FPSゲーム でマウス感度を何時間も調整する行為
  • Linuxディストリビューション をインストールし、ウィンドウマネージャを自分好みに設定
  • メカニカルキーボード の分解やカスタマイズ、キーキャップやスイッチの交換
  • これらは全て 「必要だから」ではなく、「楽しいから」 行う行為
  • 目的指向 だけでなく、 純粋な好奇心 で動くことの重要性

Tinkeringの実践とバランス

  • VSCodeターミナルGitHub Desktop だけを使う人が多い現状
  • これらが「悪い」わけではないが、 最低限の基準 として考えるべき
  • neovimの設定 を四六時中いじる必要はなく、 バランス が大切
  • 無駄に見える経験 が、振り返ると プログラミングへの理解を深める
  • 最近は GLSLフラグメントシェーダRustプロシージャルマクロC++テンプレートSwiftアプリ などを「必要なくても」試す
  • 学びに無駄な時間はない という考え方

センス(taste)を磨く理由

  • 良いセンス は、多くのものを試し、 不要なものを捨てる ことで身につく
  • 様々な経験 をしなければ、 自分の基準 は磨かれない
  • センスとは、 平凡と卓越を見分ける能力 のこと
  • 主観的 なものであり、他人と同じである必要はない
  • 現状を疑い、実験し、壊し、繰り返す ことで自分自身のセンスが形成される

Hackerたちの意見

あのフォントいじってみたいな。あのスタイルで文字を読むの、目がチカチカするんだけど、もしかしてそれが狙いなのかな?

ページ全体に横線がかかってるね。

古いCRTモニターの見た目を再現しようとしてるのかな。

あの効果にすごく興味があって、ページのCSSルールを全部オフにしてみたけど、その効果をどうやって作るのかは分からなかった。

正直に言うと、雰囲気が好きだった。多分、作者が言いたかったのはそういう「違うテイスト」ってことかも :p

時間を遡った感じで、すごく懐かしい。数分間その瞬間を楽しんで、90年代にピクセル化されたCRTでインターネットを探索してた頃を思い出したよ。世代間のギャップを感じるね。

私が作者です!ごめんなさい、スキャンライン効果を無効にするトグルを追加しますね。

味についての記事なのに、あまりセンスが感じられないのが皮肉だよね。

面白いのは、最後に「これは主観的だよ」って指摘してるところ。実際、ブログの見た目は結構好きだった。レトロな雰囲気があって、明らかに狙ってたんだろうけど、スマホで読んでるからかな。大きな画面だと、選択がもっとイライラするかもね。

ただここに来たのは、ブログのデザインがめっちゃクールだったって言いたかったから。昔のApple IIやIBMで頑張ってた頃を思い出したよ。

作者がわざわざ独特のスタイルに仕上げたのは、彼にテイストがあるってことを示してるね :) あなたのテイストとは違うだけなんだ。別のコメントでも指摘されてたけど、私はそのスタイルが好きだった(ただ、ピクセル化されたフォントは最初は嫌いだったけど)。

一度、夢中になっているフェーズを乗り越えると、味覚がどれだけ主観的かに気づくよね。でも、洗練されたセンスを持っている人には共通点があると思う。

「センス」って、良いものと悪いものを区別する言葉だと思ってたけど、数ヶ月前にHNで見たコメントがすごく的を射てた。「センス」っていうのは、二人が同じものをどれだけ評価するかの度合いに過ぎないって。誰かが「良いセンスだ」と評価されるのは、その評価する人が同じようなクオリティを重視してるってこと。考えれば考えるほど、これはどこにでも当てはまるよね:食べ物、ワイン、服、建築、ソフトウェアデザインとか。

ここでの「テイスト」は意見を指してると思った。良いテイストじゃなくて、ただの「テイスト」って感じ。個人的には、テイストを表現する方法はいろいろあって、選ぶことや、私のお気に入りの不満を言うことも含まれると思う :) でも、彼が言いたいのは、普遍的な良いテイストより意見のことだと思う。

テイストには二つの定義がある。1. 何かが基準に対してどれだけ良いか悪いか。2. メディアを理解し、物の違いを見分ける能力。

テイストって、自分の好みについて考える能力だと思う。音楽のテイストがないと思ってる人は、カジュアルに聴くから、なぜその音楽が好きかを「バンドが好き」とか「曲が好き」以外で説明できない。音楽にテイストがある人は、もっと多様な音楽を聴いて、情熱的に語れるし、好き嫌いを正当化できる。一方はただの消費者で、もう一方は熱狂的なファン。ワインについても同じで、一生赤ワインしか飲んでないのにテイストがあるとは言えないよ。

同意だね。でも、味覚って学ぶべきスキルだと思う。センスがいい人は、スキルを使ってより良いものを選べるんだよね。

悪いセンスと異なるセンスの違いはあると思う。私が一緒に働いた中で最も素晴らしい開発者の一人は、私とは全く異なるソフトウェアの好みを持っている。彼のセンスが良いとは言えないけど、彼の作品には独特のスタイルと意図がある。彼が関わったライブラリに出くわすと、すぐに分かるんだ。コードが何をしているのか、なぜそれが正しいのか理解できるし、たとえ私がそれに同意しなくてもね。それが重要だと思う。もっとジュニアの人たちと働くとき、なぜそのやり方でやったのかを尋ねると、たいてい「うーん、よくわからない」とか、何かの依存関係のせいでそうなったりすることが多い。開発者としてその意図を持つことは大事だと思う。それにはある程度の美的感覚も伴うし、センスは擁護できる比喩だと思う。

昔はフォントや色をいじってたけど、年を取るにつれて大体のことはデフォルトを受け入れるようになった。あれに時間を無駄にすることもできるけど、結局あまり変わらないんだよね。

アクセシビリティの観点から見ると、デフォルトのフォントや色はとても安全だよね。見やすくて処理しやすい傾向があるし。

この場合、フォントをいじることで可読性が下がるだけだね。

そうだね、人生の終わりが近づくにつれて、残された時間を大切に思うようになるよね。 tinkering(いじること)は、30歳未満か、もしくは25歳未満の時にやるのがいいかも。

年を取ってもいじるのは続けてるよ。ただ、フォントの代わりにデュアルモニターのセットアップと6フィートのスタンディングデスクを買ったけどね。

このウェブサイトのフォントをいじれたらいいのに。スクロールするとチラついて、頭が痛くなる!

フォントは俺のドットファイルみたいなもんで、10年以上前にfonts.confをいじって、それ以来そのまま使ってるんだ。だから、すごくこだわることができるけど、調整する必要はない。昔、時間があった時に全部やったからね。1日何時間も画面を見てるなら、いいヒンティングやアンチエイリアス、機能を使ったプロフェッショナルなフォントにして、Dejavu Sansみたいなのじゃなくて、快適にした方がいいと思うよ(笑)。

GitHubに個人のドットファイルリポジトリを持ってて、新しい仕事を始めるときとかは、ただgit cloneして、./setup.shを実行するだけで、フォントや色などがきれいに設定されるんだ。全然手間がかからなくて、自分の好きなものを使えるし、何年もドットファイルをいじってないよ。

同じ気持ちだよ。以前はカスタマイズされたLinux環境を使ってたけど、仕事でMacBookをもらって、Linuxデスクトップと違うことが全部嫌だった。でも、最終的にはそれを乗り越えて、全部大丈夫だって気づくんだよね。何かに不慣れなのは、それが悪いってこととは違うから。

フォントを切り替えるためのライフハック - Berkeley Monoのライセンスを買えば、他のフォントを使えなくなるから、無駄な出費をしなくて済む。いいフォントだしね。

あまりいじることをしない自分としては、この記事で嫌だなと思ったのは、著者がなぜそんなにtinkeringが好きなのか、または自分がなぜそうすべきなのかがあまり伝わってこなかったこと。記事が悪いとは言わないけど、著者の考え方についてもっと知りたかったし、tinkeringの魅力についてもっと話してほしかったな。

なぜ著者がそんなにtinkeringが好きなのか、または自分がなぜそうすべきなのかがあまり伝わってこなかった それは2段落目にちゃんと書いてあるよ。「それが私の学び方だから。」周りのものがどう動いているかをいじることで学べるんだ。もちろん、なぜ誰かが物事を学びたいのか、なぜ学ぶことを楽しむのかっていう疑問もあるけど、それを説明するのは難しいね。でも、そんなことは聞く必要がないと思う。

何十年も前、友達が「俺はコーヒーの専門家になったんだ。豆について学ぶこと、淹れ方、化学的なこと、全部学んだ。今では、最も高価な機械で最も高価な豆から淹れたコーヒーしか楽しめない。でも、実際には、何も知らなかった頃のスーパーの安いコーヒーと同じくらい楽しんでるんだ。」って言ってた。そのアドバイスは今でも心に残ってる。だから、できるだけセンスを持たないようにしてるんだ。20ドルのヘッドフォンと200ドルのテレビを使ってるけど、600ドルのヘッドフォンや3000ドルのテレビを持ってる友達と同じくらい音楽や映画を楽しんでるよ。

ハイキングや自転車に関しても同じ感じだね。本当に楽しんでるけど、興味があることに深入りしすぎて楽しみを台無しにしちゃう傾向がある。だから、ただハイキングを楽しむために行くようにしてるし、一般的な自転車以外は絶対に買わないようにしてる。心のどこかではハードウェアが欲しいと思ってるけど、買ったらもう自転車オタクになるのが確定しちゃうからね。そうなると、興味のないことまで気にしなきゃいけなくなるし。コンピュータに関しては、嫌いになる方法を百万通り学んだし、毎日新しい嫌い方を見つけてるけど、自転車に関してはそうじゃない :)

テレビについては同意だな。HDで十分なことが多いけど、音質はそれなりに良くないとね。20ドルのヘッドフォンは安すぎるよ、長持ちの観点から見ても。

ある時点で、製品を調べる時間とその製品を楽しむ度合いには逆相関があると思う。俺はゲーミングモニターでこの罠にはまった。高級なものでも、完璧な製品はないし、欠点がない製品もない。だから、正しいHDMIバージョン、フリースイッチ、240Hz、4K、USB-Cの適切な電力供給があるものを見つけられないことにイライラし始める。結局、高価なものを買っても、欠点が気になって仕方ない。逆に、ほとんどを無視して中程度のものを買うと、結構満足できる。ちゃんと機能するし、あまりお金も使ってないからね。製品のサブレディットをスクロールし始めたら、もう行き過ぎだから、 disengage しないと。

友達がコーヒーを極めていくと、フォルジャーズやスターバックスの良さも再発見すると思うよ。いろんなシチュエーションで、誰が一番幸せになるか、または助けられるかを提案できるようになるしね。とはいえ、いくつかのカテゴリーでは若干の無知を保つのも悪くないよね。結局、全部を学ぶことはできないし、高い失敗を避ける方法を知ってるだけでも十分だと思う。

コーヒーは、地元の焙煎所から豆を買ってるよ。今は1ポンドで約14ドルかな。味も好きだし、地元の人をサポートするのもいいよね。それを約200ドルのフレアエスプレッソマシンで淹れてる。手動プレスだから、楽しいプロジェクト/儀式になってるよ。それに、アメリカーノやエスプレッソは普通のコーヒーより美味しいし、個人的には自分のがカフェのより美味しいと思ってる…今はかなり安く済んでるしね。

ひどいコーヒーは全然楽しめなかった。ひどいチョコレートやチョコ風味のもの(ケーキとか)も同じ。30歳過ぎるまで、コーヒーやチョコレートが嫌いだと思ってたんだ。でもある日、本当に良いコーヒーを飲んでみたら、良いコーヒーはただの普通のコーヒーの「理論上」良いバージョンじゃないって気づいた。全く別物なんだよね。チョコレートも同じで、99%のチョコレート製品はゴミみたいなもの。実際のチョコレートは全然違う製品なんだ。普通のものの「良いバージョン」じゃない。食べてみて、「ああ、これがチョコレートがこんなに人気になった理由なんだな」と思った。何百年も前、工業プロセスや市場の力が生まれる前の人たちが食べてたのは、実際のチョコレートだったんだよね。そりゃ、みんな好きになるよね。要するに、普通のバージョンに満足してなかったんだ。「コーヒーが嫌い」とか「チョコレートが嫌い」と思ってたけど、実は両方とも大好きだった。ある分野で味を見つけて成長することは、リターンが減ることなくずっと楽しめる可能性があるんだ。甘いものはあまり好きじゃないから、チョコレートやクッキーみたいなものはあまり買わないけど、トレードのサブスクリプションを利用して、2〜3週間ごとにランダムな独立系焙煎所から新しい豆をもらってる。それがすごくいい。全部の豆が好きなわけじゃないけど、少なくとも興味深いし、全体的に高い品質を保ってるのが好き。良いコーヒーを見つけたことで、全体的に貧しくなったわけじゃない。人生は良くなったし、他に何があるっていうの?

私も20ドルのヘッドフォンと200ドルのテレビのカテゴリーに入るよ。でも理由は違う。動画や映画、音楽などのポイントは、内容そのものであって、音質じゃない。99%の楽しみを得るためには、ある程度の音質が必要なんだ。そのレベルの音質は、ヘッドフォンが20ドル、テレビが200ドルで手に入ることが多い。1080pやmp3で十分だよ。画面で何が起こっているかを見ることと、ノイズなしで聞くことが大事なんだ。

最近、少しテニスをやってみたけど、もうやめちゃった。友達が、私が自慢げに「テニスラケットが15ドルだった」と言ったら驚いてた。「でも、私たちはテクノロジー業界にいるんだ!」って叫んでたよ。でも、数回のゲームのために、15ドルのラケットと150ドルのラケットの違いを感じることはないって分かってる(過去にテニスをやってたから)。予想通り、もうテニスはやってないし、15ドルしか損してない。言葉にするのは難しいけど、150ドルを無駄にせず、15ドルだけで済んだことは、なんだか満足感があるんだ。

ちょっと逆の体験を話すけど、このアドバイスが絶対的なものじゃないってことを伝えたいな。俺は20ドルのヘッドフォンを何年も使ってるんだ(壊れたら同じモデルに替えてる)。あとはノートパソコンやテレビのスピーカーも使ってる。数年前に新しいスマホを買ったときに200ドルのヘッドフォンも手に入れたんだけど、これがめちゃくちゃ良かった。お気に入りの音楽を新しい視点で楽しめたんだ。でも、200ドルのやつは長時間使うと耳が痛くなるから、日常的には20ドルのやつを使ってる。20ドルのヘッドフォンで全然問題ないし、いいやつがあっても楽しみが減るわけじゃない。たまに200ドルのやつを使ってちょっと贅沢するけど、ただの見栄っ張りにはならないようにね。高いものを買うことで自分のアイデンティティを結びつけて、庶民よりも優れてるって感じちゃう人が多いけど、それが「劣った」体験を楽しめなくなる理由だと思う。

私は、目標を達成するためだけに物事をする人と、ただやりたいからやる人の2種類がいることを理解しました。今のバイブコーディングの時代では、誰でも何でもコーディングできるので、2人の開発者の技術的な違いは「センス」に帰着すると思います(もちろん、良い人と一緒に働くことなど、他にも重要な要素はたくさんありますが)。著者と同じように、センスは試行錯誤を通じて身につくもので、あるアプローチやデザインの質を見極める力が必要だと思います。いろんなバリエーションを試さない限り、何事にも良いセンスは持てませんよね。ワインや寿司、家具、色、スタイルなど。今の時代、次のステップに進みたいシニア開発者や中堅開発者にとって、このセンスはますます重要です。誰でもバイブコーディングできる時代だからこそ、システムデザインに「良いセンス」を持つ人が成功するでしょう。誰でもエージェントを使って速くコーディングできるけど、速くて上手に、しかも自分の複雑なゴチャゴチャに耐えられるシステムを作れる人は少ないです。どうやってそのセンスを身につけるか? sandbox というフォルダを作って、小さなプロジェクトをそこで作ったり、新しいアイデアや技術、ライブラリを試してみたりすることです。特に面白いパッケージを使ったら? GitHubのリポジトリをチェックして、どうやって作ったのか見てみてください。新しいことを学べますよ。良いセンスは身につけられますが、実際にそれを求める開発者は少ないのが驚きです。

独特なスタイルを持つことは、LLMの時代にはますます珍しくなるだろうね。職場でもそれを感じるよ。彼らにはスタイルがない。ほとんど学ばないし、何かを動かすことはできるけど、それが「良い方法」なのか「ただの方法」なのかを見極める能力がない。物事がどうやって作られているか、なぜそうなのかに興味がほとんどないみたい。深い理解を楽しむことに興味がないか、全くないように感じる。具体的な例として、誰かがflaskアプリに追加したい機能のPRをレビューしたんだけど、たくさんのterraformコード、aws api gateway、lambdaなどがあって、flaskアプリのフロントエンドにはこの新しいAPIを呼び出すページが追加されていた。なんでflaskアプリにルートを追加しなかったのか聞いたら、ぽかんとした顔をされた。

あまり関係ないけど、XKCDがここで関連してると思う [0]。センスは広い視野を必要とするだけじゃなくて、カテゴリーの広い見方がセンスを生むんだ。 [0] https://xkcd.com/915/

まさにその通り。優れた作家には共通点がある。それは、彼らが貪欲な読者であることだ。

誰かここでneovimの良さを教えてくれませんか?私はVSCodeユーザーで、neovimのカスタマイズ性や生産性について話している人を聞くと、「VSCodeもすごくカスタマイズできるし、生産性を上げる方法もたくさんあるのに、なんでneovimを使うんだろう?」って思っちゃいます。何か見落としてることがあるのかな?流れに乗りやすくなるとか?それとも速いから?リモートマシンにSSHで接続しているときに簡単に使えるエディタだから?教えてください!

ターミナルが嫌いだったり、そこで快適じゃないなら、VSCodeでvimのキーバインドを使ってみるといいよ。ほとんどのことはそれでできるし、あとは自分好みにカスタマイズすればOK。vimの動きが一番の魅力だよ!慣れるまでちょっと時間がかかるけど、すごく便利だよ。

Neovimでやってることのほとんどは、VS Codeでもできると思う(オートコマンドやマクロについては分からないけど、何年もCodeを使ってないから)。マウスはあまり使わなくて、キーボード中心のワークフローなんだ。長年Codeを使ってたけど、他のことはほとんどターミナルでやってた。試してみようと思って、結局好きになっちゃった。いじるのが好きなんだ。設定を調整するのが楽しい。オートコマンドを設定したり、テキストをVimにパイプして操作したり、繰り返し作業のために簡単なマクロを記録したりするのが好き。Firefox用の「Vimキーマップ」プラグインがあるのもいいね。基本的なVimのキーを学ぶことで、Vim以外でも役立ってる。Vimができる新しいことを発見するのも好き(でも大体すぐ忘れちゃうけど)。2時間かけて何かを自動化するためのコードを書くのも好きで、それで2秒節約できるんだ。誰にでも合うわけじゃないけど、今はNvChadやLaZyVimみたいな事前構築された設定があるから、無限のカスタマイズをしなくてもいいんだよね。でも、私にとってはそれが魅力なんだ:いじったり、調整したり、洗練させたり。一般的に、Vimを使うべきか聞かれたら、たぶん使わない方がいいけど、数週間試してみて、自分に合うか見てみてって言ってる。私は素晴らしいVSCodeのセットアップを持ってて、すべてがうまくいってたし、生産的だったけど、Vimにはモードやキーマップを筋肉記憶にするハードルを越えた後に、もっと合ってると感じた。追記:Rubyをめちゃくちゃに見せるようなこともできるのが好きだよ。例えば、("def" @keyword (#set! conceal "ƒ"))とか、("if" @keyword (#set! conceal "?"))とか、("unless" @keyword (#set! conceal "¿"))とか、("else" @keyword (#set! conceal "∶"))とか、("elsif" @keyword (#set! conceal "⁇"))とか、("case" @keyword (#set! conceal "⟨?"))とか、("when" @keyword (#set! conceal "→"))とか、("begin" @keyword (#set! conceal "⌊"))とか。役に立つ?いいえ。画面を共有するとみんな嫌がる?はい。

まず、毎回のアップデートでMSがデフォルトで導入してくるランダムなAI UI要素をどうやって取り除くか考えなくて済むのがいいよね。

以前はVSCodeを使ってた。Wayland上では、Electronのせいでちょっともっさりしてた時期もあったよ。Neovimはほぼどこでも同じように動くし、自分のターミナルを選べるのがいい。特にタイル配置だと、個人的にはこっちの方がしっくりくるんだよね。

結局、ただのテキストエディタに過ぎないよ。特別な努力なしに、VSCodeよりn倍早く作業ができるとは思わない方がいい。

私はVSCodeユーザーだけど、ネオヴィムのカスタマイズ性について話す人を聞くと、VSCodeよりもカスタマイズしやすいと思う。でも、カスタマイズするにはLuaやVimscriptを学ぶ必要があるよね。昔、VSCodeでカスタムキーバインディングを作ろうとしたら、新しいものは追加できなくて、既存のものを修正するだけだと気づいたんだ。nvimは、LazyVimみたいなものを使うと、すぐに柔軟性を提供してくれる。 それは速いから?私が(n)vimについて後から好きになったのは、最初の学習コストを乗り越えた後、デフォルトのnvimキーバインディングが多くのUNIXツール(less/more、man、journalctlなど)に移行できることが分かったから。nvimでコードを書いて、ターミナルを開いて、man Xを実行するのが、キーバインディングを切り替えることなくできるのはすごく快適だよ。 もしかして、リモートマシンにSSH接続しているときに簡単に使えるエディタだから?実際、nvim自体というより、vimが多くの人気サーバーディストリビューションにプリインストールされていることが多いから。追加のパッケージをインストールできない場合でも、vimviと打つだけで済むから、時間を大幅に節約できることがあるんだ。数ヶ月前、私はミニマルなVSCode設定(すべて無効にしてLSP拡張だけ)からLazyVim nvimに移行したんだけど、.config/nvimを調整して、Luaを再学習して、マニュアルを読まなきゃいけなかった。落ち着くまでに約1週間かかって、基本的なnvimのバインディングに慣れたよ。JDTLS(Java LSP)の統合を修正するのにもう1週間苦しんだけど、今はnvimの設定を楽しんでる。VSCodeの同期はログインが必要だけど、私は.config/nvimをgit cloneするだけで済むから楽だよ。

アドバイスみたいに聞こえたくないけど、長期的な推奨は個人的な重みを伴うことが多いからね。私が言うことが、私にとって効果があった(またはなかった)としても、他の誰かの人生に影響を与えるとは限らないから。いろいろ試してきた中で学んだことをシェアするね。大きなシフトを自分のワークフローに取り入れる理由を客観的に探そうとしない方がいいよ。主要なツール、言語、技術、パラダイムの変更でもね。つまり、具体的なツールが自分に合うかどうかを決めようとしないで、ツールの背後にある大きなアイデアを理解しようとすることが大事だと思う。抽象的な概念を理解すれば、そのアイデアの具体的な実装を選ぶことはあまり重要じゃなくなる。実際、vimナビゲーションのアイデアは本当に美しくて、実用的で素晴らしいもので、初期の学習曲線にかける時間は十分に価値があるよ。そんなに難しくないし、少しの献身と規律があれば大丈夫。プログラマーとしてこの分野を選んでおきながら、6分くらい試しただけでそのアイデアを完全に拒否する人の気持ちは正直理解できない。とにかくやってみて。最初はみんなに嫌われるかもしれないし、自分自身も嫌になるかもしれないけど、すぐに理解できるようになるから。基本的な原則をしっかり理解できれば、どんな媒体でもそれを活かせるし、必ずしもneovimである必要もないよ。Neovimはあなたにとって素晴らしいかもしれないし、明確な目標を達成するための具体的なツールとしてだけでなく、vimナビゲーションの「大きなアイデア」を理解するためのスタート地点としても役立つかもしれない。最後に、新しいことを始めるときは、エレベーターピッチを探そうとしない方がいいかも。最初に触れたら、WikipediaやGitHubページなどを見た後に、代わりにGoogleで「[そのこと]はなぜダメなのか…」と検索して、懐疑的でいる理由を見つけることを試みてみて。懐疑的でいることは、特定のアイデアが事実である理由を見つけるための視点を持つのに役立つかもしれないよ。

数十年vimを使ってきたけど、コードを手に持って直接操作している感覚がある。他のエディタは厚い手袋をはめているみたいで、うまく動かせない感じ。でも、ピアノを弾くのを学ぶみたいに、今では何年も練習した後に自然に感じるようになった。今はカーソルを使う方が早いから、あまり関係ないけどね。

私がこれまで関わった中で最もひどいエンジニアたちは、自分が正しいと思う「センス」にこだわりすぎていて、それ以外で働くことが全くできないか、したがらなかった。自分が「センス」を持っていると思うことで優越感を持つのは、チームを台無しにする素晴らしい方法だよ。他人のためにコーディングすることはアートじゃないし、それ自体にはあまり意味がない。ユーザーはあなたの言語の選択やデザインパターンの使い方に感心するわけじゃなくて、最終的な製品がどう見えるか、どう機能するかに興味がある。そんなチームで働かなきゃいけない世界で、なんで自分の柔軟性のなさを誇りに思うの?最も役に立つのは、どんな方法でもコーディングできて、どこにでもプラグインできる人たちだよ。「センス」は関係ない。チームにプラスになるためには、自分のことを考えるのをやめなきゃ。だって、あなたのことじゃないから。

あなたのユーザーは、あなたの言語の選択やデザインパターンの使い方に感心するわけじゃなくて、最終的な製品がどう見えるか、どう機能するかに興味がある。うん、でも、パッチが読めないゴミだったら、コードをよりメンテナブルにするためのセンスのある選択があれば、ユーザーにとって機能やバグ修正が早くなるし、ビジネスの数字も上がるよね。

その通り!素晴らしいセンスを持っているか、ただそう思っているかの違いは、ユーザーのニーズを深く理解することにあるよね。良いデザインは見た目が良いだけじゃなく、その価値をしっかり捉えることなんだ。確かに、簡単なことじゃないけどね!

他の人のためにコーディングすることはアートではない。絶対にアートだよ。これが良い開発者と悪い開発者、ジュニアとシニアを分けるものだと思う。ほとんどの開発者は、ある程度動作するアーティファクトを作ることができる。でも、他の人が理解しやすく拡張できる内部的一貫性を持ったもの、問題を正確に捉え、将来的にどう変わるかを考慮したものは、もっとアート的な形式なんだ。そのためには、どの状況で立ち向かう価値があるのかを知ることが大事だよ。コードを書くときやフィードバックを残すとき、あなたは現在と未来のチームのためにそれをやっているんだから。

「センス」という言葉が正しいかはわからないけど、この記事の精神には同意するよ。特に、いじることが練習の一形態だという部分がね。楽しいいじりは学ぶための強力なモチベーターなんだ。ただ、このプレイベースの学びには2つの大きな限界があると思う。1つ目は、意味のない微調整に陥りやすいこと(著者が言ってるdotfilesの話を参照)。それは満足感はあるけど、あまり影響力がない。2つ目は、何かが楽しくなくなるとモチベーションを維持するのが難しいこと。ここで、上司やクライアント、スコアボード(例えばAdvent of Code)といった外部のモチベーターが実際に価値を持つんだ。