ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

14
インタビュー中に自分と他人を比較する[非公開]
インタビューのプロセスのある時点で、自分を自分の仲間と比較するようによく頼まれます。たとえば、卒業後の最初の仕事の1つで、自分をクラスメートと比較するように頼まれました。最近インタビューした仕事で、同僚と自分を比較するように頼まれました。 私はいつもこれをかなり軽視しています。私はいつも「私は周りのすべての人よりもはるかに高い」と "慢に聞こえます。真実ですが、押し込むようになると。 私はクラスのトップで卒業しました。私は3.99、その年の他の誰よりも高いGPAを持っていました。私の仲間の学生は、VSのビルドボタンを押すだけでなく、コンソールを使用して「javac xxx.java」を記述し、プログラムをビルドしなければならないなどのことを嘆き、うめきました。それらのほとんどは全く無能であり、私は現実の世界で彼らに何が起こったのか見たくありません。他の人々は、これらの人々の何マイルも上でした。実際に気をつけて、重要なように自分の教育を追求し、プログラマーや数学者のように考えるのに必要な遺伝子を持っている私たちの3-5人がいました(私が言う人は私よりも賢い数学専攻-彼は私の1年先に卒業したか、彼は私のタイトルを取っただろう)。これらの少数の「ビッグヒッター」の間でさえ、私は最高ではないとしても、そのうちの1人でした(ただし、一部はより多くの経験によるものでした)。 他の学生の約90%にとって、これは私がそれほど良いとは思わないが、彼らは本当にそんなに悪いとは思わない。私はしばしば、彼らの無知だけでなく、それを失うために必要なことをしたがらないことにもd然としました。私の大学の同僚は怠け者で、嘆き、無責任で、愚かさの袋であり、何でも学ぶ努力を最小限に抑えるよりも、たくさんの酒から吐き出して走り回りました。それから彼らは教授に自分の無能さを非難した。 労働力を入力すると、この傾向が続いていることがわかりました。私がインターネットを利用しているとき、世界中の優秀な人々と話をしているとき、私はかなり平凡です。私は賢く、興奮している、など...私はまだ非常に良いですが、私は自分自身をより大きな海の小さな魚として見ることができます。しかし、ローカルでは、個人的な実生活での経験....私が見つけたものは、私が仕事をした中で最高の開発者と呼ばれるものの中でも、他の人にとっては難しいものです。デザイン、一般的な開発、使用している特定の言語について、私が知っている誰よりも多く知っています。これの一部は、私が学んだ場所の種類と私が働いた場所(私が価値があるものを私に支払うお金を持っていない)をよく知っています。それでも、もし私が自分を同僚とかなり比較するとしたら、そして数年後には私の同僚... don ' 他の人も私をこのように見ています。実際、私がプログラミングにアプローチする方法(私は本当に気にしています)、仕事の倫理、さらに遺伝子ゲームでの私の幸運なロールについて非常に特別なものがあることを認識するのに時間がかかりました。私はそれが時々私の頭に届くのを見て、それを避けようとしますが、正直なところ、私はほとんどよりも優れています。 本当に何よりも私を差別化しているように思われることの1つは、勤務時間外に自宅でより多くの知識を追求し続けているという事実です。私は最高になりたいと思っています。そしてそれが顕著に現れているからです。多くのインターネット関係者が私もここでbeat折させていますが、実際にはこれは実際にはかなりまれであることがわかりました。 確かにこのような人がもっとたくさんいることを知って、実際、私は私よりはるかに賢いSEの多くの人を知っていますが、この質問にどのようにアプローチしますか?正直に答えますか?「私は、彼らが小さな人々のために行うすべてのことを馬鹿にしているクソ神です!残りを引きずる唯一の方法は、すべてを5つの異なる方法で20回言うことです。」それとも、他人と一緒に仕事をすることができないほどant慢な誰かとして脱落しないように自分を軽視しますか? 編集:はい、文法上の間違いを犯し、さらに多くのことをします。私はそれを得るために非常に一生懸命に努力しましたが、私も溶接を吸います。家の植物を生かしておくのも大変です。一部の人々は単にそれで優れています。プログラミングが得意です。
35 interview 

10
アンチパターンにはどのような名前が付けられていますか?[閉まっている]
いくつかの名前があります。それらの名前に手を伸ばせば、すでに何かを台無しにしていることがわかります。 例えば: XxxManager クラスはクラスが何をするのかを記述する必要があるため、これは良くありません。クラスが行うことに対して思いつく最も具体的な単語が「管理」である場合、クラスは大きすぎます。 他にどのようなアンチパターンが存在しますか? 明確にするために、私は「どのような名前が悪いのか」とは問いません。その質問は完全に主観的なものであり、それに答える方法はありません。「システムの全体的な設計上の問題を示す名前は何ですか」と私は尋ねています。つまり、コンポーネントXyzを呼び出したい場合は、おそらくコンポーネントが不十分であることを示しています。また、すべてのルールには例外があることに注意してください-私は本当にデザインを停止して再考する必要がある場合の警告フラグを探しています。

17
初めて高校生にC ++を教える:どこに線を引きますか?
FIRST Robotics Competitionの高校生のチームを指導します。ほとんどのチームは、C ++を使用してロボットソフトウェアを開発しています。チームの多くの学生にとって、これはプログラミングの最初の紹介となります。私はプログラミングを高校生に教えるためにC ++を選択しなかったでしょう(例えば、PythonやJavascriptのほうが簡単だと思います)が、選択は決まっています。 私は彼らに適切なC ++を教えたい(つまり、C / C ++の混合方言、つまりC +を避けたい)が、不必要な複雑さでそれらを怖がらせたくはない。そのことについては: 特に、初日からSTLの使用を開始する必要があります。vectorまたは単に標準配列に固執しますか?配列を導入する方が簡単ですが、ポインターエラーをキャッチするのは難しいかもしれません。 I / Oについてはcout、などに固執すべきprintfですか、それとも習得しやすいと思いますか? このような若い学習者に使用するのに適したC ++のオンラインリソースはありますか? ありがとう! 編集:非常に多くの優れた答えをありがとう。多くの人から推奨されているAccelerated C ++に加えて、C ++ For Everyoneは素晴らしいテキストであることがわかりました。
35 c++ 

12
経験豊富なプログラマは、データベースクエリを知っている必要がありますか?[閉まっている]
クエリの作成とデータベース設計の専門家でもある非常に多くのプログラマーがいます。 これは、専門のプログラマーまたはソフトウェアエンジニアになるための必須要件でしょうか? 類似の多くは、クエリとコードが開発されている方法でありますが、私の個人的な意見は、あるクエリが異なる持っているように見える構造よりもコードを、異なるアプローチによる同時に両方をマスターするのは難しいことができます。
35 database  query 

8
複数の言語を同時に学習する[終了]
新しい言語を学習するとき、ある言語に100%専念し、それを「習得」して別の言語に移動するのを待つか、同時に異なる言語の学習に取り組む方が良いでしょうか。 問題があれば、私は現在C ++を学んでおり、JavaとPythonも知りたいです。

7
プログラミングの仕事はどこでオンラインで見つかりますか?[閉まっている]
私は自宅で理想的で静かな、中断のない環境をセットアップしました。私はここで非常に生産的です。私は自分の部屋からではなく、ソファからでも家を離れたくありません。 私は米国外の第三世界の国にいるので、低賃金は問題になりません。問題は作業環境です。 オンラインで仕事を見つけるには、どこに行けばいいのですか?自宅でフルタイムでやったことがありますか?どこで、どのように?


6
変数データ型を明示的に定義するか、キーワード「var」を使用しますか?[閉まっている]
C#では、すべての変数宣言に汎用のvarキーワードを使用することをお勧めしますか?はいの場合、次のステートメントの10進数のMなど、変数宣言内のリテラル値にこれらの特殊文字を記載する必要がありますか? var myDecimal = 14.5M; それが違いを生むなら、私はC#でWeb開発をしようとしています。


11
ソフトウェア開発における年齢主義は、バイアス以外の何かに基づいていますか?[閉まっている]
この質問は何人かの人々を怒らせると確信していますが、それは私の意図ではありません。私たちは皆同じ船に乗っています-私もいつかそれに従うことになります。 理論家ではなかったミルトン・フリードマンの見解によると、職場での差別はこれまでのところしか通用しません。間違った認識に関する給与の決定は、よりスマートな競合他社によって処理されます。自身のビジネスを開始することは競争の一形態です。 年齢は明らかに、スポーツや非常に厳しい肉体労働を必要とする仕事において大きな要因です。ソフトウェア業界ではどうですか?エイジズムは存在する(または存在しない?)が、なぜなのか?いくつかの簡単な質問: 企業は本質的に邪悪であり、人々を虐待するのは好きだからですか? 彼らはまだソフトウェアを建設業界にたとえているので、雇用主は愚かで組織化されていませんか? 高齢者の生産性は低下していますか? 彼らはクレイジーな時間を働こうとしないのですか? 彼らは高すぎる賃金を要求していますか? それはホルモンと原始本能に帰着しますか?サルの社会では、テストステロンがすべてです。コードモンキー社会についてはどうですか? 結局、年齢主義は神話ですか? 「怠lazな」人(遅れない人)だけが低い給料をもらえますか? それは自分の年齢ではなく、家族や子供を持つこと、または持たないことであり、それによってどれだけの時間が物事に遅れずについていくことができるかに影響しますか? 雇用主は、若者の見た目が好きなため、若者にもっとお金を払いたいですか? その他? 私の質問はあまり意味がありませんか?もしそうなら、なぜですか? 私自身はまだ結婚していませんが、余計な仕事をするのは好きではありません。私は物事を読む時間を見つけましたが、他にも興味があります。同時に、自分の能力を同年齢の他の人の能力と比較することは困難です。私は天才とダミーの両方に出会いました。また、私の友人の何人かを除いて、他のプログラマーがどれだけ作っているのかも本当に知りません。大量のデータがあったとしても、年齢主義の存在とその程度を厳密に証明するにはどうすればよいですか? 最後に、個人の貢献者が年をとっても良好な給与水準を維持するための良い方法は何ですか? ご意見ありがとうございます。

13
C ++の最悪の慣行、よくある間違い[終了]
Linus Torvaldsによるこの有名な暴言を読んだ後、私は実際にC ++のプログラマーにとっての落とし穴は何なのか疑問に思いました。私はこの質問とその回答で扱われているタイプミスや悪いプログラムフローを明示的に言及していませんが、コンパイラによって検出されず、最初の実行時に明らかなバグ、完全な設計エラーを引き起こさないより高レベルのエラー、 Cではありえないが、コードの完全な意味を理解していない新参者がC ++で行う可能性が高いこと。 また、通常は予想されないパフォーマンスの大幅な低下を指摘する回答も歓迎します。私が書いたLR(1)パーサージェネレーターについて、ある教授が私に言ったことの例: 不要な継承と仮想性のインスタンスを使用しすぎています。継承は設計をより複雑にし(RTTI(実行時型推論)サブシステムのために非効率的です)、したがって、たとえば解析テーブルのアクションなど、理にかなっている場合にのみ使用する必要があります。テンプレートを集中的に使用するため、実質的に継承は必要ありません。」

3
ライセンスキーを生成するための最適なメカニズム[終了]
ライセンスキーを生成するために人々が提案する方法/ライブラリ/ツールはどれですか(ソフトウェアを登録するときに入れる素敵なAAAAA-AAAAA-AAAAA-AAAAA-AAAAAのもの)? それらを実装する際に注意すべきことはありますか? (現時点では、言語固有ではなく一般的なものとしてこれに興味があるので、ソリューションが言語固有である場合は、使用している言語を明記してください)。
35 licensing 



16
初心者はIDEオートコンプリート(Intellisense)を使用する必要がありますか?[閉まっている]
プログラミングを初めて学び、初めてプログラミングを学ぶ人を助けているときに、これに遭遇することがよくあります。私は本当に新しい初心者について話している、まだオブジェクト指向について学び、オブジェクトを構築し、メソッド呼び出しとそのようなもの。通常、彼らにはキーボードがあり、私はただガイダンスを提供しています。 一方では、IDEのオートコンプリート機能は、IDEが正しく実行されていることをフィードバックし、すぐに気に入って信頼できるようになることを支援します。 一方で、IDEのオートコンプリートへの初期の依存は、概念を本当に理解しなかったり、いつか単純なエディターだけで自分自身を見つけた場合に機能できるようになることを恐れています。 この点でより多くの経験がある人は誰でも彼らの意見を共有できますか?初心者、オートコンプリート、または手動入力のどちらが良いですか? 更新 みんなの入力に感謝します! 多くの答えは、メソッドの完成、メソッドのルックアップやドキュメントの提供など、オートコンプリートの主な用途に焦点を当てているように見えます。しかし、最近のIDEはもっと似ています。 リストタイプのオブジェクトを作成するとき、IDEは右側の新しいArrayListに自動補完します。なぜ新しいリストになれないのか、初心者にはすぐには分からないかもしれませんが、それがうまくいくので、彼らは先に進みます。 コンテキスト内のローカル変数に基づいてメソッドパラメーターを入力します。 オブジェクトのキャストを実行する 「import」または「using」ステートメントを自動的に追加する などなど。これらは私が意味する種類のものです。私がプログラミング101をやっている人について話していることを思い出してください。IDEがこれらのことを行うのを見たことがあります。 プログラムの流れに集中し、言語の詳細を理解して言語のニュアンスを理解する前に物事のコツをつかむのに役立つと主張することができますが、私にはわかりません。
35 ide  intellisense 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.