web-dev-qa-db-ja.com

優れたプログラマーと本当に優れたプログラマーとの違いは何ですか?

あなたは彼らが誰であるか知っています。彼らはプログラミングのロックスターです:

  • 彼らは10倍速くコーディングします。

  • 彼らのコードはうまくいきます。

  • 彼らは主要言語を内外で知るだけでなく、それが内部でどのように機能するかも知っています。

  • あなたが質問する前に、彼らはほとんどすべての質問に対する答えを知っています。

  • それらのいくつかは、私たち全員が使用するプログラミング原理を発明しました。

  • そして、彼らはまた、特徴的に謙虚である傾向があります。

これらの人々についてそれは何ですか?彼らの思考プロセスについて、平均以上のプログラマーと根本的に異なるものはありますか?あるいは、彼らは一生懸命働く非常に才能のある人々なのでしょうか?

別の言い方をすれば、どうすれば彼らのようになることができますか?私は自分がその善になるために何を学ぶ必要があると思いますかを知っていますが、それを学ぶのに次の10年かかるようで、それから私の知識は時代遅れになります。

59
Robert Harvey
  • 謙虚:優れたプログラマーは、自分のコードが最高だと主張することは決してありません。実際、彼らは常により良い方法を探しています(彼らが得るあらゆる可能性。)

  • 患者:優れたプログラマーは限りない忍耐力を持ちます(これは、問題で何日も浪費するという意味ではありません。参照:トラブルシューティング)

  • トラブルシューティング:並外れたプログラマーは、平均的なプログラマーでは数日かかる問題を数分で解決できます。

  • 奇妙な:例外的なプログラマーは、何かが発生する理由を理解しようとすることに抵抗することができなくなります。

  • Engineer:優れたプログラマーは、フレームワークの寄せ集めを破壊するのではなく、システムを設計します(これは、フレームワークを使用しないという意味ではありません。)

88
ChaosPandion

あなたは最後の箇条書きで多くのことを思いつきました:

「そして彼らはまた、特徴のないほど謙虚になる傾向があります。」

それは謙虚さの組み合わせだと思います。外見だけでなく、心の内にも。彼らは間違ったことを受け入れ、間違いを犯し、欲求不満からすぐに向き直ります。多くのプログラマーは、何かを試し、失敗し、そしてすぐに非常に感情的に練り上げられます。この状態は、優れたコードを書くことへの反感です。あなたは自分が完璧ではないこと、そして失敗すること(しばしば!)を受け入れる必要があり、あなたができる最善のことは、失敗したときにすばやく回復する方法を学ぶことです。それはささやかなconfidenceのようなものです。

NLPには、「失敗はなく、フィードバックのみ」という格言があります。ロックスターのプログラマーになるには、それを受け入れる必要があると思います。コーディングできないことはありません。最初はそれが遅いかもしれませんが、失敗したり何かを台無しにしたりするのをやめようとし続けたら、あなたは配達します。そしてその過程で、あなたはあなたが最高の一人になるために必要なすべての精神的なトリックを学びます。

もちろん、アドバイスはその情報源と同じぐらい良いだけなので、すべて私の意見です。

28
Pax Noctis

彼らは自分のコードに深く関心を持っています。

25
JaredPar

個人的に、私が知っている/知っている最高のプログラマーは基本を理解し、特定の言語の専門家ではありませんでした。彼らは単にすべてについて十分な経験を積んでいた。正規の「すべての取引のジャック」。

基礎科学以上のものであり、実際の運用経験には大きな価値があります。例、Unixの哲学を理解していて、与えられたさまざまなツール(どこを見ればよいか知っていたIOW)で未知の問題を解決できる人は、Javaスレッド化された並列ソリューションをコーディングした専門家)の価値をはるかに超えています。

優秀なプログラマーは、彼らの前に来た人々も尊敬しています。彼らは、SQLを正式なAPIと見なしても、リレーショナルデータモデルや不快感を嫌いません。彼らはOOがすべてではないことを知っており、何よりもプログラミングが科学ではなく芸術であることを理解しています。

15
Jé Queue

私が最初に始めたとき、彼はプログラミングに関して彼がしたすべてのことで絶対に素晴らしいと思っていたこの人と一緒に働いていました。彼はおそらくまだそうですが、現在は東南アジアの会社の取締役に昇格しました。

とにかく、彼は物事をシンプルに保ち、シンプルなものがうまくいきました。必要以上のコード行を書きたくないので、彼が行ったすべての作業が完了した。私は彼のレベルに近づくために1年間キャッチアップをしていました。もう1つは時間です。彼は当時の私よりずっと長い間物事をしており、彼はすべての答えを(見たところ)知るまで、これらの正確な質問を何度も繰り返す機会がありました。

彼はまた質問することを恐れていませんでした。それが一番だと思います。

11
user2358

プログラマコンピテンシーマトリックス

プログラミングトピックのレベルを確認するのに役立つ多くのトピック。

10
Maniero

テキサスホールデムポーカーについての本でこの質問への答えを学びましたが、それはすべての苛立たしい努力に当てはまります。最高のコーダーは決して傾きません。 Tiltを使用すると、期待どおりに機能しない場合があり、アプリケーション全体で指数関数的なミスを引き起こすような方法で対応します。トーナメントポーカーでは、悪い賭けをしてノックアウトする原因になります。

プログラミングでは、ティルトにより、髪の毛を引き出して、アプリケーションの特定のインスタンスでのみ機能するとんでもないコードのパッチを書く必要があります。 Tiltにより、プログラマーはプロジェクト全体のニーズを無視し、差し迫った問題をすぐに解決するための即座の満足感を掴みます。多くの場合、問題は今日解決されますが、アプリケーションは明日苦しみます。

最高のコーダーは、傾きの概念を取り入れ、常に外部の視点から問題を見ることができるように管理します。それが失敗した場合、いくつかのカフェインを飲みます。

7
JMC

優れたプログラマー:

  • コードを気にする
  • コードを使用するユーザーに注意する
  • コードを保守する人を気にする
  • 生産性を気にする
  • 製品だけでなくプロセスにも配慮

「10x」係数についての2つのこと:

  1. エンドツーエンドで適用する必要があります。テスト、リワーク、メンテナンスに10倍の時間がかかる場合は、10倍速くコードを書くことはできません。
  2. 「10倍」の要因は、少数のプログラマーがどれほど優秀であるかとは対照的に、多数のプログラマーがどれほど貧弱であるかを反映していると思います。
6
darreljnz

それらのほとんどは予約済みのように見え、特別なものはありません..それらのいくつかは非常にスマートに見えます..彼らはすべての可能な観点から2度チェック/デバッグすることを好みます、彼らのソフトウェアは世界でバグのないものです:p IMOしかし、品質はより優れており、一般の人でもソフトウェアの仕組みを理解できます!

10歳で最初のASMプログラムを書いた友人がいますが、現在は24歳で、大学を卒業していませんでしたが、自分の会社を設立して何百万ドルも稼ぐことはできませんでした:)すべてにおいて器用です:)

例外的なプログラマーは、おそらくこのコードは別のより良い方法でコード化できると言いますが、他のより低いプログラマーの評判を完全に間違っているとは言いません:)

「これらの人々についてそれは何ですか?彼らの思考プロセスについて、平均以上のプログラマーと根本的に異なるものはありますか?それとも彼らは単に一生懸命働く非常に才能のある人々ですか?」

私は彼らがそのように生まれたと思います、それは彼らのDNAの中にあります:p私は彼らの思考プロセスについて知りませんが、私が今まで知っていた最高のプログラマーはてんかんを持っていました

3
shegy

例外的なものと典型的なものを区別するものはほとんどありません。

例外:

  1. 彼の作品に非常に熱心で、傑作を提供するよう努めています。

  2. パフォーマンスと品質は、コーディングが始まる前でも、彼らの心の全体像です。

  3. 彼らは各リリース後の継続的な改善を考えています。

  4. 彼らは代替案を厳重に監視し、早期導入者です。

  5. 職業生活での彼らのテーマは次のとおりです。

  6. 彼らはコーディングしていないときでも論理的な視点について考え続けます。

標準

  1. 時にはやや情熱的ですが、結局のところ仕事なので、提供に努めます。傑作でなければOK。少なくとも時間通りに配達されました。

  2. パフォーマンスについては後で考えますが、とにかく最近のPCは十分高速です。

  3. ジョブを保存するオプションが残っていない場合にのみ改善します。

  4. 他のテクノロジーを掘り下げる時間はありません。あなたの仕事が今要求するものに固執してください。必要に応じて他のことを学びます。

  5. 彼らのテーマは、「求められていることを行い、時間内に家に着く」ことです。

3
RPK

例外的なプログラマーは Spartan Principles を適用します。

注意を引く画像:

enter image description here

この記事: http://willcode4beer.com/design.jsp?set=codeReduction

そしてこの引用:

愚か者は、物事をより大きく、より複雑に、より暴力的にすることができます。反対の方向に進むには、ちょっとした天才と勇気が必要です。 - アルバート・アインシュタイン

2
Ates Goral

1-彼らは締め切りに直面したときに何が途絶えるかを知っています。

0
Gedean Dias

自己宣伝、そして私はそれを可能な限り最良の方法で意味します。特にチーム内でプログラミングのような仕事をしているということは、個人的な貢献が全体像のどこに当てはまるのか、誰がどの部分に責任を負ったのかがすぐに分からないことを意味します。私たちが「偉大なプログラマー」として聞いて学ぶ人々は、献身的に聞こえたり、自己中心的に考えたりすることなく、貢献を知らせる技術を習得したIMOです。多くの場合、これは私たちの残りが私たちの毎日のパンを稼ぐために依存しているツール、ライブラリ、およびソフトウェアを作成することによるものです。

0
Gaurav

非常に優れた関連記事: The Free Electron(from randsinrepose.com))

ここでは記事を要約しなかったことをお詫びしますが、要点は散文から簡単に分離できません。

0
Nicole

自己の動機と自己決意の質を持ち、未知の深淵に入る意欲を持ち、プロセスの一部として完全に混乱していることに満足していることは巨大です。それはあなたが考えるのと同じくらい初期の賢さについてではありません。なぜなら、脳はいつもそれがしていることや考えていることではるかに良くなるからです。私は大学で何もないところから来て、それから、あきらめないで、あきらめず、他のすべての人がそれを理解しようとするのに飽きたときに問題を抱えていた男であることだけで、とても裕福になりました。そのタイプの粘り強さの後、問題はますます簡単になり、大学の初心者であることから、現時点でそれらのほとんどを恥にさらすことになりました。純粋な才能は十分ではなく、時にはあなたの月桂樹で休むことにつながる可能性があります。

また、Robert Harveyには、私が最初から書いたCMSに関することを何でも言うときは、私の投稿を繰り返してくれます。あなたは彼らが書いたかもしれないか書いていないかもしれないリンクをリストする他のいくつかを見ます。あなたはこれを投稿した皮肉な自己動機付けの人々を押し下げています。あなたはこの小さな宇宙の「男」であり、彼らの良さで物事を読んでいるのではなく、ただあなたの気まぐれで笑ったり削除したりしています。また、スターウォーズが大好きすぎて、食料品店の自動開閉ドアで手を振ると、力があると信じられます。

0
Joonha

彼らは純粋に直感でプログラムします。 flowsとだけ考える必要はありません。

0
John Shaft

しかし、それを学ぶのに次の10年かかるようで、それから私の知識は時代遅れになります。

そうなる。あなたはすでにこれらの人が10倍高速であることを確立しました。そのため、彼らは1年で学習し、10年かかります。回答の深刻な部分については、彼らはすでに非常に賢い(おそらく非常に成功している)と思います何でも)、彼らはコーディングが大好きで、何らかの理由でコーディングを練習したり、個人的なプロジェクトに取り組んだりするのに十分な時間があります(または見つけることができます)。

ここでこの質問をしているのであれば、おそらくそれが必要なものはありません(ここで答えているので心配しないでください)。あなたがコーディングを愛しているなら、あなたはまだ狂ったようになることができますが、心配しないでください。

0
Kevin

謙虚さ、エンジニアリング、情熱、患者、トラブルシューターについて、よく意図された投稿がたくさんあります。 IMOこれらはすべて必須です。ただし、プログラマの上位30%について説明しています。

本当に優れたプログラマ、上位1%について質問していると思います。

私が一緒に働く非常にまれな才能についてうらやましいことの1つは、very large量を維持する能力です一度に彼らの頭の中の複雑なシステムについての詳細の、そしてそれを素早く思い出せるようにするため。私が本当にゾーンにいるときは、たぶん月に一度、これを行うことができると思います。この気持ちは素晴らしいです。私が考えている開発者は、そのゾーンにいることができるようですほとんどの場合

謙虚さ、好奇心、エンジニアリング、情熱、忍耐力、トラブルシューティングの能力に加えて、この1つの特性、IMOが真に卓越したものになっています。

0
Kyle Hodgson

優れたコーダーは、自分のコードの範囲を超えてプロジェクトに影響を与え、経験のために問題が発生する前に問題を発見します。彼らはチームの全員をより良くし、プロジェクトの設計と管理の失敗を防ぎます。

彼らは実際に例外的な何かを作成しました。

0
JeffO