別の言い方をすれば...プログラミングに関して最も一般的に保持され、イライラする誤解は何ですか?
プログラマーが追い払う/修正するのは難しい。
これが神話である理由を説明してください。
あなたはプログラマーなので、[人]のウイルスに乗ったマシンを修正する方法を知っています。
私が就職活動をしているときに私を混乱させる一般的なHRの事柄:すべてのコーディングスキルは言語固有であり、コマンドセットを超越するソフトウェアエンジニアリングの専門知識がないという暗黙の仮定。 Java=での10年の経験と、Perlでの5年間の経験は、C#などを使用するプロジェクトではまったく役に立たないことを意味します。
「そうです。学習曲線があります。しかし、私はこれよりも難しい移行をしました。私はあなたと契約を交わし、最初の月に80%を支払い、そうでない場合はその終わりに... oh 、ちょっと待ってください。HRモンキーが私のアプリケーションを削除しただけなので、実際にはこの会話はありません。」
入力していない場合は、動作していません。
プログラマーが頭の中で物事を整理するためには、ゾンビの空を見つめることとコーヒーの散歩が不可欠だと思います。
より多くの人に投げかけるだけで、後期のプロジェクトをスピードアップできるということです。
そのライティングソフトウェアは簡単です。
時間とともに予算を超えて実行されるこれらすべてのプロジェクトを他にどのように説明しますか。人々(政治家、メディアなど)はまだ驚かれています。顧客は、「小さなWebサイト」(または何でも)が実際にかかると言うと不満を述べます6開発に数か月かかる数千ドル(ポンド、ユーロ、[選択した通貨を挿入])
あいまいで常に変化する要件により、ソフトウェアが完成するのは驚くべきことだと思うことがあります。
私はそれがそれよりも少し複雑であることを知っています;)
アプリの複雑さは、UIの複雑さに直接比例します。この理由により、週末にGoogleまたはTwitterを構築できるはずです。
すべてのプログラマーは数学が得意です。 :-)
コンピューターをハッキングする10代の子供は、ベテランのプログラマーと同等(またはそれ以上)のスキルを持っています。
私の14歳の甥はコンピュータが上手で、芝生を刈るために彼に1時間あたり10ドルを支払っています。次のFaceBookを書くためになぜ6桁を支払う必要があるのですか?
リアルタイムは高速を意味します。
説明 "パケットはリアルタイムで処理する必要があります。"は価値がなく、邪悪な双子...答え "Xはどのくらいの速さで実行する必要がありますか?"と "リアルタイム"は、おそらく価値がありません。 ..無知ではなく愚かな国境。
リアルタイムは、簡単に言えば、その関数Yは常にX時間かかり、偏差があれば重大なエラーを示すことを意味します。 Xの期間は「リアルタイム」を定義するものではなく、6マイクロ秒または6日間になる場合があります。 決定関数YがXをとる時間は、「リアルタイム」を定義します。リアルタイムシステムは、この定義により確定的です。
だからノックオフ..
バグの多いコードを入力して、後でバグを見つけるためにコードを読むのに多くの時間を費やすのではなく、最初から正しく記述してみませんか?
:-) :-) :-) :-)
大学に行ったことがないなら、あなたはその仕事に適していません
その時期尚早な最適化は、まったく最適化すべきではないことを意味します。他のデータベース設計の問題よりも時期尚早な最適化であるため、設計ではパフォーマンス(データベースシステムにとって重要)を誰も考慮したくなかったため、私はもっとひどく悪いデータベースを見てきました。ゴミ、既知のパフォーマンスキラーがあります。最初の選択肢としてそれらを使用しないでください。
別の神話、データベースをリファクタリングするのは難しすぎる。いいえ。ただし、設計フェーズでリファクタリングを効果的に行う方法を検討する必要があります。ところで、この厄介なデザインベースのパフォーマンスの問題を修正するために長く待つほど、修正するのが難しくなります。
別の悪い神話、データベース設計はOOP原則を反映する必要があります。いいえ、データベースはOOP原則ではありません。いくつかOOP物事は恐ろしいパフォーマンスの問題を引き起こし、他のものはデータベースの面でばかげた痛みです。
最後に、アプリケーションでデータの整合性を適用する必要があります。データベースはアプリケーションを超えて存続し、アプリケーションが置き換えられるとルールを失い、複数のアプリケーションがデータベースにアクセスするため、アプリケーションを経由しないものを修正するために直接クエリを実行する必要が生じることがよくあります。良いデータを持つデータベースでデータの整合性を強制することを拒否するデータベースを見たことがありません。
絶対的なベストプラクティスの神話的なソースがあること。
逸脱は正当化できません。
何かをベストプラクティスとして定義することを主張する文書に疑問を投げかけることはできません。
マーケティングでは、小さな機能を大量に追加する方が、1つではなく重い機能を追加するよりも作業が少ないと考えているようです。これはおそらく、「タスク切り替えにはオーバーヘッドがない」という誤解のより具体的なケースです。
そのコメントコードは不要です。または、「良いコードはコメントを必要としません」。コードの複雑なビットが何をしているかを説明する必要がある場合があります。さらに、コードのセクションにコメントを付けると、より効果的に読みやすくなります。
最悪の神話:長期間プログラミングをしている場合は、簡単にプロジェクトマネージャーになることができます。
そして、あなたが長い間プログラミングをしているなら、あなたはプロジェクトマネージャーになるべきです。
プロジェクトでJava、C#、およびC++以外のものを使用すると、それをサポートするプログラマーが見つかりません。
Javaは、さまざまなクラスを持つ単なるC++です。
おそらく、私がこれまでに見た中で最も危険なのは、すぐに受け入れられるため、コードをすばやく記述できることは優れているため、特定の言語で[ここに機能を挿入]をすばやくコーディングできるほど、言語は優れているということですです。
maintainコードは作成よりもはるかに多くの作業を行うため、これは時期尚早の最適化の深刻な例です。つまり、すばやく簡単に記述できるコードよりも、読みやすく、理解しやすく、デバッグしやすいコードを記述することの方がはるかに重要であり、読みやすいコードを容易にすることは、言語品質のはるかに有用な測定です。
プログラマーとして、最新のハードウェアトレンド、オーバークロッキング、ケースMODなどに関するすべてを知っていることになります。
ソフトウェア開発プロセスに製造レッスンを適用できます。
プログラマーが行うことは非常に難しい/不可能であると言うとき、人事部は彼らが怠惰でやる気がないと考えています
私のビジネスにはオープンソースプログラムが必要です。あなたはそれをダウンロードして私の要件に微調整することはできませんか?.
会話の途中で、バイナリまたは数学記号を使用して直接プログラミングしていると彼らが実際に考えていることを理解するためだけにプログラムするのはどういうことかについて、複数の人に尋ねてきました。
その神話を払拭したいのかわかりませんが、とてもスマートに見えます!
最大の誤解は、コードを読み、理解するよりも、簡単にコードを書き込めることの方が重要だということです。
プログラミングは、組立ラインの作業と同じです。あなたは一定の期間(たぶん同僚と)製品に取り組んでおり、最後にそれを出荷します。レンガの家を建てるように。
反対:プログラミングには多くの創造性と計画が含まれています。アートです。メイソンのように、プログラマーもレンガを形作ることと大聖堂全体を計画することの違いを知っています。
プログラムをC++に移植すると、自動的に実行が速くなります。
何らかのビジュアルデザイナを備えたプログラミング環境であれば、ビジネスユーザーはプログラムを "作成"でき、実際のプログラマは必要ありません。
OOPの再利用。これは、プログラミングで販売される最大の誤りです。
構文を学ぶことは難しい部分です。
私が明らかにしたい2つの神話。私の友人の多くは、JavaとJavaScriptが完全に異なることを理解していません。プログラマー以外の多くのプログラマーは、複数の言語があることを理解していません。私の友人の1人ちょうどプログラミングに入り始めて、私からいくつかの助けが必要でした。
それらの両方は私にとってたくさん出てきます。
「1」以外の優先度を割り当てると、タスクが実行されることはありません。
マネージャーにバグ追跡ツールを優先度1a、1b、1c、1d、1eでカスタマイズするよう依頼して、優先度1のバリエーションとしてすべてを割り当てられるようにしましたが、作業を整理することができました。
はい、「優先度1」の問題はすべて解決しました。しかし、優先度2〜5の問題に進む前に、マネージャーはこれらの問題の優先度を5つの優先度1レベルに再割り当てさせました。
(私はこの神話が特定のプログラミングではないことを理解していますが、これはこのスレッドの他のいくつかの回答にも当てはまります。)
入力したコードをコンピューターが理解できる限り、それで問題ありません。したがって、コメントを入力し、2文字を超える変数名を使用すると、時間の無駄になります。 :-(
キーボードのフォームはプログラミング能力に関連しています。真剣に、私の高校の先生の一人が私に言った、「あなたがすぐにタイプすることができないなら、あなたはすぐにコードを書くことができない」。 「筆記体で書かないとグレート・アメリカン・ノベルしか書けないと言っているようなものです」と私は答えた。
典型的なプログラマーは:
ハンガリー語の表記は、変数名の前に、保持するデータの種類(int xcTextfield = getTextfield()。coord.x;など)ではなく、型(int iArraylength = 5;など)を付けることだけを意味します。
"Systems Hungarian notation"!= "Apps Hungarian notation"
バグのないソフトウェア。後で私はすべてのプログラムがまだバグで実行され、全体のプレーは顧客の要件を達成することであることがわかりました。
だれでもOOP(C#、C++、Java)言語で記述したコードはすべて、自動的にオブジェクト指向で「再利用可能」になります。
継承以外のパターンを持たない(数えることもない)アーキテクチャで1000行のコードブロックまたはクラスを再利用するように求められたのは、一度だけではありませんでした。どうやら、コピー貼り付けも、OO言語とOOP自体の違いを知らない人にとっては、優れたコード再利用と見なされます。
頻繁に発生するお気に入りのTDWTF: Code-Refuse
そのWebアプリは、「7x24」まで拡大できます。
どんなダウンタイムが許されているかビジネスマンに尋ねてください、そして彼らは常に100%のアップタイムを主張します。週に1分のダウンタイムは依然として99.99%であり、主要なユーティリティよりも小規模な組織ではほとんど達成できないことに注意してください。
C/C++で記述されたすべてのプログラムは、Java/C#の同等のプログラムよりも高速に実行されます。
単一の「最良の」ツール/ソリューション/問題/質問への回答があること
最大の神話は、それが簡単であるということです。
マネージャーになったプログラマはこう言っています:
"3週間?!過去にコーディングしましたが、hardどうやってできますか?"
その任意の修士号1つのプログラミングコースで、ソフトウェア開発者として雇うのに十分です。
あなたはプログラマーなので、コピー機を修理する方法を知っています。
どの間違った考えが長い間広まっている
プログラマーの間では、パフォーマンスの問題を見つける方法について非常に広く信じられています。それはそれらを見つけるためには、それらを測定する必要がありますです。
最も単純な反例は、(望ましくない)無限ループです。完全に不要なことをするのに100%の時間がかかります。
どのように問題を見つけますか?デバッガーの下で取得し、一時停止、停止、または中断します。次に、ループがどこかにあることがわかっているので、スタックを確認します。 あなたはそれを行為に巻き込みました。あなたはそれを測定しましたか?それともそれを見つけますか?
それが無限ループではなく、必要だと思うよりも時間がかかるだけだとします。不要な作業が100%未満、たとえば90%、50%、または20%であるとします。それは同じ考えです。一時停止した場合、その割合は、行為に巻き込まれる可能性です。 (それをキャッチするためにパーセントが何であるかを知る必要はありません。)
念のため、数回一時停止することができます。それが何かを実行しているのを見るとすぐに、twoのサンプルで、より高速なものに置き換えることができ、それを修正して、Niceスピードアップを実現できます。それだけでなく、他の問題を見つけやすくしました。時間が短くなり、問題の割合が大きくなるからです。これは、コードが最適に非常に近くなるまで「スノーボール」することができます。
もちろん、問題を測定するためにwantしたい場合は、さらにサンプルを取得しますが、それを見つけるための前提条件ではありません。
人々は、うまくいけば、これがサンプリングプロファイラーが行うことですが、それをよりうまく行うと私に言います。多くの人が自分で見るよりもむしろ問題を議論したいと思います。
マネージャであるということは、コーダであるよりも優れています。マネージャーであることは退屈です。純粋な管理を始めた人は、そもそもプログラミングを好きになったことがありません。
コンピュータとソフトウェアはそれ自体で作業プロセスを改善します。
プログラマの間で:そのDelphiは死んでいるか、瀕死であるか、生命維持のためです。
マネージャーが開発者が書いているコードについてジャッキスクワットを知っていること。
C/C++と呼ばれる言語があります
または、言語が非常に近いため、スキルを交換できます。
そのソフトウェアの作成は、実際にはコードの作成に関するものです。
多くの人々は、JavaScriptはC++に似ていると考えがちで、実際にはプロトタイプ継承を使用していることを理解していません。
そのプログラミング言語は常に変化しています。
これはずっと前のことかもしれません...
しかし、最近の変更はほとんどが既存のコードを壊さないようにする追加機能です。
なぜプログラマーはバグを書くことを主張するのですか? (バグ報告を正しく行うことができないマーケティング+テスターの人からのもの)。
全体hollywood mentality(より良い名前がないため)映画/テレビシリーズのプログラマーが発言するときはいつでも、彼は必要なすべてのテクノロジーを明確にする必要があります(I PHPフロントエンドとMySQLバックエンド!!! 11)...が必要です...そして、それ以上意味のないいくつかのもちろんです。
もし私がこのように話をするなら、私は多分真面目にキックされるでしょう。
英語(または母国語)を使用して問題を説明する:
問題を示すコードのコンパイル可能な例を提供するよりも便利です。