一部のプログラマーは、他の人が知らないいくつかの秘密を知っていますか?[閉まっている]


8

私の議論の詳細については気にしませんので、短いインスタンスの形で提示します。

Javaの人は、有名なプログラマー(私の国の一種のMartin Fowler)の記事や出版物をフォローしています。彼は他の有名なプログラマーが共有しないいくつかの秘密を共有していると言います。

私はプログラミング領域にウィザードのようないくつかの秘密があるとは信じていません。しかし、この分野でまだ良くない一部のプログラマーは、私たちが知らないいくつかの秘密を知っているため、他の有名なプログラマーは成功していると考えています。

私はこれに全く同意せず、誰かと話し合ったところ、最後に彼はあなたにこの分野で2年間いると言いました。

私は私が間違っていないことを確認したかったのです。それが私がこれを知りたかった理由です。


8
飲みに来たところでお答えします。ああ、そしてあなたはいくつかのワックスを持ってくる。
ジョブ

58
私たちはその男を知っています。彼に近づかないでください。私たちの神聖な芸術の秘密は、絶対に隠されていなければなりません!ベテランプログラマーのギルドはその裏切り者をすぐに罰するでしょう!:-P
ペーテルTörök

15
優れたプログラミングの大きな秘訣は、「問題を適切に解決するために最小限の複雑さで最小量の明確なコードを書くこと」です。
11

19
Javaでの20年の経験?ORLY?!?
SKロジック

8
それは1年のJava経験で、19回繰り返されます...
Martin Blore

回答:


54

私はそれが反対だとほとんど言うでしょう...

なんらかの理由でトリッキーになるのが好きな人と仕事をしてきました。確かに、彼らは実際にかなり優れたプログラマーでした -真空にさらされたとき-しかし、彼らが作成したコードは、しばしば非常に鈍く、他の人が維持するのが困難でした。2年後、コードを保守している誰かがそのトリックに困惑したときに1日を無駄にしようとするときに、いくつかのキーストロークを節約する賢いことをしても意味がありません。

実際、プログラマーとしての10年間の商業経験で学んだ最も重要なことを1つ挙げる必要がある場合、保守性が重要です。それは、まれな状況で役立つかもしれないあいまいなハッキングやトリックを知っていることをはるかに超えて最高を手に入れますが、長期的にはコードベースを維持することをほぼ確実に難しくします。

正直なところ、すべてのコーディングは、特定の言語/プラットフォームの比較的基本的なコア知識を持つ新卒者がそれを選択して操作できるように行う必要があると言っています。非常にトリッキーであいまいなため、言語やプラットフォームで20年の経験があり、内部のあらゆるトリックを知っている人が必要な場合は、プロジェクトに技術的な負担がかかります。


6
+1、また、コンパイラは時間とともに変化しますが、不要になったハックはそのまま残ります。
ジョブ

鈍い?あいまいですか?
webbiedave

9
@ボビー:私は自分でこのタイプのコーディングに遭遇しました。私はそれが賢さの愚かな使い方
webbiedave

1
@ケビン-よくわからない 最近の卒業生が理解できるものは、最近の卒業生が実際に書くことができるものと同じものではありません。優れたコードは、卒業生がフレームワークとデバッガーの使用に関する基本的な知識を持っていることを考えると、理解しやすいはずです。ほとんどのまともなコードは非常に簡単に理解できますが、最近の卒業生にとって習得が難しいのは通常ビジネスロジックです。ほとんどの場合、この人物はドメインに関する知識がゼロなので、追いつくのは難しい場合があります。
Morgan Herlocker、2011

2
@Kevin:マスター空手家は少数の基本的な動きのみを使用しますが、それらを無限の多様性で適用する方法を学びました。マスターカーペンターは、ほんの一握りの選択されたツールを使用しますが、それらを完璧な組み合わせで適用することを学びました。経験が増えるほど、プログラミングも同じだと思います。難解なものを必要としないこともありますが、まれにしかありません。
Joeri Sebrechts、2011年

42

より多くの経験を持つプログラマーは、より多くのことを知っています

彼らは秘密ではありません

彼はあなたに何かを売ろうとしているようです!


21
「彼はあなたに何かを売ろうとしている!」の+1 彼は間違いなくです!
チャニー

28

「最後に彼は私にあなたがこの分野で2年であり、彼(javaの男)は20年のプロのプログラマーであると言ったので、彼はあなたよりもよく知っています。」

<暴言>

30年以上前に私は最初にこのようながらくたに遭遇しました。それはそのとき私を怒らせ、そして今さらに私を怒らせます。Authorityからの引数(Author by Authority)と呼ばれ、純粋で純粋なbullsh * tです。自分でこれを主張しようとした私が会ったすべての人は、自尊心に深刻な問題を抱えていました...そして、彼らが知っているふりをするよりも、主題についてあまり知らないことがよくありました。

私はまだ高校生で、1〜2年しかコーディングをしていなかった恐ろしい賢いプログラマーを何人か知っていました。ほんの2つの例:オリジナルのフォーラムシステムは1973年に15歳で書かれ、マルチユーザーインスタントメッセージングの最初の実装は1974年に13歳で他のエンジニアが牛乳を飲んだときに書かれました。金曜日の午後にビール。

また、10年または15年の間に新しいテクノロジーを採用しなかった恐竜もたくさんいます。彼らの多くは、現在起こっていることを追跡しないことを認めますが、これを名誉のバッジと見なす人もいます。そうではありません。

</ rant>

私のシステムからそれを得ので、@ Bobby Tablesと@Developer Artの回答で作成されたポイントを拡張したいと思います。 「あなたが何かを作ることがいかにあいまいであるかについては間違っています。限目。それは、プロジェクト/会社の最善の利益を念頭に置いていない未熟で自己吸収された人の行為です。彼らは、おそらく他の犠牲者の雇用主に移った後で、将来的には停止するメンテナンス地雷を敷設しています。

「賢い」の反対は、プログラミング言語をうまく使用する明確で簡潔なコードを書くことです。一貫した命名基準を使用します。適切な行末コメント; 主要なセクションを説明するための適切なブロックコメント。文書化されている(必要に応じて例を示す); そしてテストされました。それが本物のプロのプログラマーが提供するものです。

そして、彼らが終わったら、彼らは振り向いて次世代のプロのプログラマーを指導します。


8
StackExchangeと同等のProput By Reputationスコアを
edA-qa mort-ora-y

私が好きな態度のための+1。
David Thornley

個人の権威からの議論(自分自身のためにそれを主張すること)は、あなたが言ったように、通常は空虚です。ただし、この主題に関する専門知識を持つ個人の権威からの議論は有効である可能性があります。それらは論理的に証明可能ではないため、リンクで軽蔑されていますが、それは確かに立派です。
ケビンフェルメール2011年

3
@Kevin:(実際の)経験が多い人が正しい可能性が高いとは言いませんが、それは単に確率です。私たちがソフトサイエンスを扱っていた場合、私はそのポイントを認める準備ができているかもしれませんが、ハードサイエンスのより難しいものの1つを扱っています。それは私が意見や「私を信頼する」ことを望まないことを意味します、私は冷たくて、堅くて、証明可能な事実を望みます。何年も前に、SunのCコンパイラにかなり深刻なバグを発見しました。私がそれを報告しようとしたとき、Sunの「エキスパート」が「その種のバグは私たちのQAを通り抜けることは決してできなかった」と吹き飛ばそうとしました。私は彼に、「エラーメッセージに話しかけてください。
Peter Rowell、2011年

1
経験を重ねるほど、学ぶほど、自分がどれだけ知らないのかがわかり、謙虚になります。Ehlo Wordlを正しく書くことができないことが今や完全に確信しています
RobD 2014年

25

誰がどのようにして他の人の仮説的な知識と話すことができるかはわかりませんが、私の経験では、コンピュータプログラミングには「秘密」はありません。確かに、それは開放性と知識の共有によってほぼ定義されたドメインです。最も複雑なプロジェクトのいくつか(そのような「秘密」から間違いなく最も利益を得るプロジェクト)は、Linuxカーネルのようなオープンソースです。

プログラマーが不条理であるために特別なテクニックを密かに隠しているという考えを見つけましたが、特にそれが純粋に仮説である場合、否定を証明することは非常に困難です。


22

私が知っている唯一の秘密は:

  • 見た目ほど簡単なものはありません。あなたが見ないものはすべて私の失敗した試みです。
  • 学習を止めてはいけません。
  • 勤勉 仕事に勝るものはありません。

私はあなたに同意します。しかし、彼はベストプラクティス、パターンなどについていくつかの秘密を話していました
Freshblood

最初に残りの部分を試さずに、どのようにして最高のものを知るのですか?これはbarrem23と一緒です。+1。
lightsong、

1
確かに、書き留めてコミットした10行のコードごとに、おそらく90行のコードを記述して削除し、その10行のソリューションにたどり着きました。
Lie Ryan

@abhiii:どうやって知るの?ここで(またはSOで)質問することから始めるのがよいでしょう。
ドナルフェロー

私はその最後の格言に問題があります。小文字の「a」以外のすべての文字を認識しようとしているプログラマが、キーボードで見つけることができる他のすべての文字を含む文字クラスの入力に1日費やすとします。これは大変な作業です。翌日、あくびをしている上級プログラマーはそれを4文字に置き換えます。[^a]これにより、式が速くなるだけでなく、元々欠落していた多くの拡張/ Unicode文字も含まれます。少なくともプログラミングに関しては、ハードワークは意味がない
スチュアートP.ベントレー

9

若いプログラマーが知らなかったり、受け入れたりすることのない1つの秘密を知っています。これを理解するのに十分なレベルに達すると、彼は通常自分でそれを理解します。

<TheSecret>すべてのコードはうんざりです。特にあなたのもの。私もそうです。世界のすべての天才プログラマーのコード---ええ、それもひどいです。それを受け入れて、できるだけベストな仕事をしてください。</ TheSecret>


おい! 私のコードは吸わない!あ、待って。ごめんなさい。その否定的な間違いを手に入れました。ええ、あなたは正しいです。すべてのコードは最低です。唯一の違いは吸引の程度にあります。これは銀河のブラックホールから壊れた掃除機までさまざまです。
私の正しい意見だけ正しい

2
私が最初にテストについて教えられたとき、教授は、3つの辺の長さをパラメーターとして与えられた三角形の面積を計算する基本的な関数について考えられる限りの多くのテストを書き留めさせました。有効なテストの実際の数が〜111に近づくまで、最大11のテストで完全なテストカバレッジソリューションを考え出したと確信していました。私の些細なコードでさえ完璧ではないことを私は悟りました。
モーガンハーロッカー、2011

9

50年の経験があります。若いプログラマーがまだ学んでいないことをたくさん学びました。私はそれらを完全に共有したいと思っています。

学びはあなたがしたいことです。

メンテナンス性は本当に重要だとよく耳にしますが、完全に同意します。ただし、無料ではありません。メンテナの側で多少の学習曲線が必要になる場合があります。

コンピュータサイエンスの修士号を取得したばかりのプログラマは、私のコードを見て、それは保守不可能で秘密に満ちていると言います。実際、彼または彼女は単に新しいことを学んでいるわけではない。

パイロットは、必要なテストに合格し、パイロットの「チケット」を渡されたときに、格言をします。彼らはそれが学ぶためのライセンスであると言います。

卒業証書を取得しても教育は止まりません。まだ始まったばかりです。


2
妥当な量の基本的な理解(ほとんどの人はCSで修士号を取得する資格がある)を持つコードの初心者が、コードが保守不可能であると言った場合それはそうです。保守性とは、ゼロから始まる必要な理解の尺度です。「世界を十分かつ時間をかけて与えられた、理解できるすべてのもの」を意味するように定義すれば、すべてのコードは「保守可能」です。
スチュアートP.ベントレー

1
@Stuart:例を挙げれば。1985年、私は差分執行の方法に出くわしました。これは、ドメインが複雑なユーザーインターフェイスであるドメイン固有の言語を作成する方法です。ソースコードを大幅に節約でき、どのように機能するかを学ぶと、ほとんどのメンテナンス(変更された要件に応じたコードの変更)は非常に単純なソースコードの編集です。そういう意味です。保守性は、学習曲線を犠牲にして得られます。
Mike Dunlavey、2011年

7

特定のプログラミング言語またはフレームワークの小さな隠された秘密をほとんど知らなくても、実用的な価値はほとんどありません。

実際のソフトウェア開発のほとんどは、これらの隠された機能を実際に体験することはありません。さらに、ベストプラクティスの1つでは、ほとんどのプログラマーがこれらの「秘密」を知らないため、コードの保守性が低下し、エラーが発生しやすくなるため、使用するテクノロジーの隠れた領域に意図的に進入しないことをお勧めします。

特定のテクノロジーの秘密を学ぶことに時間を費やす/浪費する(1つ選ぶ)代わりに、一般的に知識の範囲を広げて隣接するツールを学ぶか、非プログラミングスキルを向上させるか、現在のビジネスについてさらに学ぶことが望ましい。

私たちの分野の変化の速さのため、特定のツールへの深い投資はそれだけの価値はありません-知識はすぐに廃止されます。

さて、自分をテクノロジーの専門家として位置付け、この特定の分野でコンサルティングサービスを提供するつもりである場合にのみ、ディープに投資することは理にかなっています。そうでなければ、それは無駄な努力です。


3
「秘密」は理由のために秘密であることを指摘するための+1。良い例は、「文書化されていない」Windows APIです。このAPIを使用すると、アプリケーションを保守できなくなります。
user16764

C ++にはコーナーケースがあり、未定義の動作はそれほど気になりません。とにかくそれらに近づかないからです。ただし、これらのことを知ることは、不適切に記述されたコードのデバッグに役立ちます。
David Thornley

5

こちらで商品リストを販売しています。誰かがMysterious Secrets™のコンセプトを採用しようとしています。このコンセプトは、Mysterious Secrets™の代金を支払うことを目的としたエリートプログラマー™を提供します。次のステップは、これらのMysterious Secrets™をビデオ、スピーチ、ポッドキャスト、または印刷が不適切な本の形で、<セールスマンがあなたが喜んで支払うと思うものを挿入>という低価格で低価格で提供することを申し出る誰かです。

どうすればこれを確認できますか?私は70年代からプログラミングをしてきましたが、Javaだけでなく、他にも多くのプログラミング言語を知っています。私は( -だバイトの何百もの組み込みシステム小型の小さいものからプログラミングを(専門的かつ学問)見てきましバイトまで™ビッグアイアンの巨大な作品に- RAMの)。

優れたプログラマーであることと唯一のことには秘密があります。あなたは常に自分自身を向上させることに取り組む必要があります。さもなければあなたを言う誰でも嘘つきおよび/またはばかです。


4

若いプログラマーには知られていない唯一の秘密は、プログラマーは思っているほど賢くないということです。

あなたがそれを知ったら、来月理解できないコードを書くのをやめ、バージョン管理に感謝し始め、すでに動作しているコードを修正せず、コードを文書化し、仕様を解釈せず、あなたはしません。将来的に役立つ機能をコード化し、レガシーコードを拒否しない、...

言い換えれば、秘密は経験です。


3

明らかに、20年の経験を持つ人は、たった2年の経験を持つ人よりも多くの経験があります。しかし、秘密はありません-何がポイントでしょうか?

(もちろん、秘密を守ろうとする人はそれ言うでしょう ...)


1

経験は重要ですが、他の人の経験から学ぶことができます。ロバートCマーティン(ボブおじさん)が犯した間違いと彼が学んだ教訓を共有する「The Clean Coder」を読み終えたところです。その多くは、学習を続けるなど、ここで回答にリストされています。


1

ほんのわずかしか知らないことはすべて秘密と考えることができます。

今日私たちが知っているすべてのものはかつて発見されました。

だからすべてはかつて秘密でした。

一部の知識は速く広がり、一部はゆっくりと広がります。

一部のプログラマーは自分自身で何かを発見することはありません(ただし、他人の秘密を非常にうまく適用する可能性があります)。

一部のプログラマー(たとえば、John Carmack、Ken Perlin、Donald Knuth)は、毎日新しい秘密を見つけています。

そう、そうです、私たち他の人が知らないいくつかの秘密を知っているプログラマがいます...まだ。


1

知識だけでは力がありません。それを認めます。ただし、誰かがあなたよりもスキルを伸ばしている可能性があります。つまり、自分の進歩に役立つヒントや戦略を持っている可能性があります。これらが実際にあなたを動かすかどうかは確実ではないので、最後の文にはいくつか「かもしれない」ことに注意してください。したがって、これはあなたにとって新しいものでも衝撃的なものでもない可能性があります。

同時に、さまざまな実践や戦略があり、かつては過激に思えたかもしれませんが、今日ではこれらを当たり前のことと考えています。ソース管理、継続的インテグレーション、ユニットテストは、ある時点ですべて新しいものでしたね。


1

あなたとこの質問に答えるほとんどの人が完全に「秘密」という言葉に集中しすぎている可能性があります。

私たちが「隠された」部分を取り除いた場合、はい、そうです、この有名なプログラマーがいくつかの有用なヒントとコツ、または経験から得た知識が何らかの形であなたに利益をもたらす可能性があります。私は、Rapid DevelopmentThe Pragmatic Programmerのような古典的なSEやCSの本に出てくるような知識について話している。これをハードワークと組み合わせると、絶対に役立ちます。

その意味で、有名な成功したプログラマーは、他の人がまだ持っていない知識を持っているかもしれません。

しかし、「この分野ではあまり良くないプログラマ」を有名にして、成功を収めるような秘密のレシピはありません。


0

小さな秘密はありません。複雑なコードのみ...最終的には単純化された効率的なコードに変換されます。


0

その秘密は、問題の種類、問題の領域、およびその解決方法にあります。たとえば、ファイルを開いてそのデータを読み取り、データをxmlに変換するphpプログラムを作成した後、そのxmlを使用してデータをさまざまなhtml要素(オプションボックスなど)に提示しました。1年後、新しいジュニアプログラマーがチームと彼はアルゴリズムが得意だったので、左シフトや配列の分割などでコードが難しく見える問題を数学的に解決しました。しかし、実行時間は私が書いたものの40%まで短縮されました。phpステートメントを書く彼のアプローチには驚いたので、秘密ではない特定のトリックがあると思います。もう1つは、頭の中で考えられる選択肢の数です。


0

何かが足りない場合は申し訳ありませんが、少なくとも明示的には述べていませんが、上記が見つかりませんでした。

秘密は、実際には仕事に適したツールを使用していることです。実際、それは古いプログラマーが大事にしているツールであり、それほど簡単には開示していません。彼らはあなたのコンクリートの間違いについてあなたに話しますが、それらを回避するのに役立つかもしれないツールを提案することはめったにありません。彼らのツールは、生産性の主要な秘密の1つです。

ほんの一例を挙げれば、Webサービスに関する600ページの本を暗記し、WSDL仕様の複雑さを理解し(私は一度自分で試してみました。複雑さを理解するために...)、それでもAPIの問題点を理解できません。彼は、既存のWebサービスを呼び出すときに使用します。

一方、仕様についてほとんど知識がなく(ただし、明確な一般的な考え方)、Wiresharkを使用する場合もあります。

すべてのC ++(ああ、私の..)を覚えていても、viで記述され、gccでコンパイルされた彼のコード(警告なし..)で何が問題になっているのかまだ理解できません。しかし、デバッガを備えたグラフィカルIDEが役立つかもしれません。

そしてGoogle。最新のすべての最大の秘密。


ギルドは、Googleの秘密を世界と共有したことであなたを追ってきます。ギルドの最初のルールはグーグルについて話さないことです。
ラムハウンド2011年

まあ、ギルドは私の後に来る場合、それは無駄にVIを言及するためではなくなります...
ジョン・ダン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.