150 ポイント 投稿者 GN⁺ 2025-04-10 | 19件のコメント | WhatsAppで共有
  • 著者はさまざまな開発者と出会う中で、最高の開発者たちに共通する特徴について考えるようになった
  • この記事は、初心者の開発者や成長したい人にインスピレーションを与えるために書かれた観察記録である

まずリファレンス文書を読むこと

  • Stack OverflowやLLMを先に探すよりも、まず公式ドキュメントを読む習慣を身につけることが重要である
  • Apache、Python、TOMLなどの公式ドキュメントは、実際かなりよく書かれている
  • ソースから直接学ぶ習慣は、長期的に大きな助けになる

ツールを深く理解すること

  • ツールを「使える」ことと、それを「理解している」ことは別のレベルである
  • ツールをよく知る人は、設定の一つひとつを説明できる
  • よく理解するには、ツールの:
    • 歴史(なぜ作られたのか)
    • 現在(誰が保守しているのか)
    • 限界(どんなときに合わないのか)
    • エコシステム(周辺ツール、ライブラリなど)
      をすべて把握していなければならない
  • Kafkaなどを主力で使うなら、Redditで見た程度以上には理解しているべきだ

エラーメッセージを丁寧に読むこと

  • エラーメッセージをじっくり見れば、そこにヒントが含まれている
  • 最高の開発者は、少ない情報からでも問題を推論する
  • 問題の80%は、エラーメッセージをしっかり見るだけでも解決できる

問題を細かく分割できること

  • 行き詰まるのは誰にでもあることであり、解くには問題を細かく分けられなければならない
  • 経験が多い人や問題解決能力に優れた人は、自然に分割できる
  • 開発者の中核的な仕事は、結局のところ大きな問題を小さな問題に分けることだ
  • 単純な問題を一つずつ着実に解けば、全体の問題も解決できる

恐れずにコードを扱うこと

  • 最高の開発者たちは、コードを読むことを恐れない
  • 「それは自分の領域ではない」といったことを言わず、とにかく試して学ぶ
  • 初めて扱うコードでも、すぐにチーム内の専門家になることが多い

いつも他人を助けること

  • 忙しい中でも助けてくれる開発者は、良いチームメンバーであり優れた専門家でもある
  • 好奇心と協力的な姿勢は、良い開発者に不可欠な資質である

書くこと

  • 優れた開発者は話すのも上手く、考えを文章で表現することもできる
  • ブログ、発表、オープンソース活動などを通じて考えを共有する
  • 文章力は、思考の構造と直接的につながっている
  • うまく書ける人のコードは、構造的で、明確で、ときに機知に富んでいる

学びを止めないこと

  • 年齢に関係なく学び続ける人こそ、本当に優れた開発者である
  • 新しいツールや言語を試すことにためらいがない
  • 最新技術を盲目的に追うのではなく、長所と短所を自分で分析できる
  • 若くても固定観念に陥れば成長は止まる

地位にこだわらないこと

  • 良い開発者は、肩書きに関係なく誰からでも学ぼうとする
  • 新人からでも学ぶことがあるという姿勢を持っている
  • 新しい視点を持つ人との対話からインスピレーションを得る

評判を築くこと

  • 実力も重要だが、その実力を 知られること も重要である
  • 評判は影響力を広げるための手段である
  • 次のような方法で評判を築くことができる:
    • 重要なサービスを自ら作る、またはデプロイする
    • よく知られたツールを開発する
    • 有名なオープンソースに貢献する
    • よく引用される本を書く
  • 評判は一朝一夕で築けるものではなく、継続的な努力と時間が必要である

忍耐力を持つこと

  • 人にもコンピュータにも忍耐力が必要である
  • 周囲の人は愚かなのではなく、単に情報が足りないだけである
  • 忍耐力がなければ不満がたまりやすくなり、協業が難しくなる
  • 難しい問題を解決するには、集中力と粘り強さが必要である

コンピュータのせいにしないこと

  • 最高の開発者は、決してシステムや外的要因のせいにしない
  • 見た目にはランダムに見える問題にも、論理的な理由がある
  • 原因を見つけるために最後まで掘り下げる姿勢が重要である

「わかりません」と言えること

  • 面接で、あえて「わかりません」と言う瞬間を待ったことがある
  • 重要なのは答えそのものではなく、姿勢である
  • 最高の候補者は、わからないと認めたうえで推論を始める
  • わからないと認める姿勢は、学習の可能性を示している
  • 嘘をついたり知ったかぶりをしたりする人は、チームに悪影響を与える

推測しないこと

  • PEP 20の哲学のように、曖昧なときは決して推測してはならない
  • 推測の危険:
    • 間違っていればバグになる
    • 当たっていても誤った前提を信じることになり、後で問題を引き起こす
  • 確信が持てないなら:
    • 質問し
    • 文書を読み
    • デバッグツールを使い
    • 根拠を見つけるべきである

シンプルに保つこと

  • 賢い人は賢そうなコードを書き、優れた人はシンプルなコードを書く
  • シンプルなコードのほうが保守にはるかに有利である
  • 複雑さが必要な場面とそうでない場面を見分けられてこそ、本当の実力である

締めくくりの考え

  • この記事はチェックリストではなく、優れたエンジニアリングは競争でもない
  • ただし、難しい作業を飛ばせると自分をごまかしてはならない
  • 優れた開発者になる道に近道はない

19件のコメント

 
dduha 2025-04-24

良い文章をありがとうございます。!!

 
openman 2025-04-17

これはチェックリストではないという言葉に慰められ、近道はないという言葉に勇気づけられます。

 
geekbini 2025-04-13

会社のプロジェクトを理解していれば、
どの分野のシニア開発者になったとしても
その分野がファームウェアでもアプリでもWebでも、
Web、アプリ、あるいはファームウェアのデバッグログを見ながら
問題がどのように発生したのかをデバッグできるレベルになるのだと思います。

 
softer 2025-04-11

面接のときに私が推測していた振る舞いを思い出しますね

 
wogns3623 2025-04-11

個人的には、「自分が何を作っているのかを常に考えること」も重要だと考えています。

 
wogns3623 2025-04-13

Critical Thinkingという良い用語がありましたね

 
lighteach 2025-04-10

本当に大変参考になりました。良い文章をありがとうございます。

 
kylian 2025-04-10

じゃあ、公式ドキュメントをLLMに読ませればいいってことだね!

 
dudlf016 2025-04-10

RTFM: 公式ドキュメントをちゃんと読みましょう。

 
kandk 2025-04-10

チェックリストではないと言いながらも、自分のチェックリストにしなければなりませんね。

 
haejuk99 2025-04-10

公式ドキュメントを必ず見るべきだという点に、とても共感します。

 
aer0700 2025-04-10

コーディングを最初に教えるとき、この人がエラーメッセージを丁寧に読めるかどうかで、プログラマーとしての素質が最初に表れるように思います。

 
postinsight 2025-04-19

.... エラーやバグは常に存在するものだと認める基本的な認識がない人間こそ、詐欺師なんですよ

 
roxie 2025-05-05

文章が難しすぎます..

 
postinsight 2025-04-19

Webでは。

 
coremaker 2025-04-10

すべてではありませんが、ほとんどは共感できる項目ですね。

 
GN⁺ 2025-04-10
Hacker Newsの意見
  • 推測しないことが、仕事において最も重要

    • 半導体製造で問題解決能力を培ったが、誤った仮定のコストは非常に大きい
    • 常に根本原因を100%把握しなければならない
    • 変則的な技術スタックを避ける理由は、根本原因分析を妨げるため
    • 問題を正確に解決することが、評判を築く最も早い方法
  • 新しいものを扱うときは、リファレンスを深く読む前に少し推測するのを楽しむ

    • 新しい言語やAPIを学ぶときは、チュートリアルで推測してからリファレンスを読む
    • Intellisenseのような機能をサポートする言語やIDEを好む
  • Stack OverflowやLLMに依存せず、直接ソースを参照するのがよい

    • 数学の本のように最初は難しいが、時間が経つにつれて理解できるようになる
    • Rust cratesのdocs.rs、Haskellのhoogle、C++ referenceなどは優れたリファレンス
  • 最高の開発者はあらゆる層の人々とコミュニケーションし、学ぶ

    • 新しい人は新鮮な視点を提供し、過去の障害が消えているかもしれない
    • ルールが存在する理由を定期的に確認すべき
  • Stack Overflowをうまく活用すれば大いに役立つ

    • LLMはリアルタイムイベント分析や自動化に有用だが、プログラマーを置き換えることはできない
    • LLMでトピックを理解した後は、公式ドキュメントを参照するのがよい
  • 最高のプログラマーはCSのバックグラウンドがなくても優れた成果を出せる

    • 非専攻者がプログラミングを学び、急速に成長した事例がある
  • プログラミング以外にも、ビジネスドメインとのコミュニケーションが重要

    • プログラミング以外のさまざまな要素を考慮しなければならない
  • エラーメッセージを読んで理解することが、問題解決に大いに役立つ

    • asdfを使ってPython、Go、NodeJSのバージョンを管理するとき、エラーメッセージを通じて問題を解決できた
 
postinsight 2025-04-19

asdf とは何ですか? 警告を見る必要があります。

 
postinsight 2025-04-19

うーん、絶対に最高になろうとしない姿勢のほうがいい気がしますけどね。書くだの……助けるだの……そんなことを言う人間に限って……