ソフトウェア工学

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

16
将来必要になる可能性がある場合に備えて、冗長コードを追加する必要がありますか?
正しくも間違って、私は現在、コードを可能な限り堅牢にするように常に努めるべきだと考えています。これは、今は役に立たないことがわかっている冗長コード/チェックを追加することを意味しますが、 x数年後かもしれません。 たとえば、私は現在、次のコードを含むモバイルアプリケーションに取り組んでいます。 public static CalendarRow AssignAppointmentToRow(Appointment app, List<CalendarRow> rows) { //1. Is rows equal to null? - This will be the case if this is the first appointment. if (rows == null) { rows = new List<CalendarRow> (); } //2. Is rows empty? - This will be the case …

18
頻繁に仕事を辞めるエンジニアとの対応[終了]
私の友人はソフトウェア会社のプロジェクトマネージャーです。彼にとって最もイライラすることは、彼のエンジニアが頻繁に仕事を辞めることです。同社は、新しいエンジニアの採用、プロジェクトの移管、および安定した品質の製品の維持に努めています。人々が去るとき、それは私の友人を狂わせます。 これらのエンジニアは非常に若くて野心的で、より高い給料とより良いポジションを求めています。大ボスは金銭的な観点からしか考えておらず、彼の理論は「3人の初心者は常に1人のベテランよりも優れている」ということです(経験豊富なエンジニアとしては間違っていると思います)。私の友人はその理論が嫌いです。 彼へのアドバイスは?

30
「古すぎる」のは何歳ですか?[閉まっている]
求職者として真剣に受け止められるには、履歴書から長年の関連する経験を取りやめるか、学位を取得した年を削除するか、またはその両方を行う必要があると言われました。または、それ以上の年齢のプログラマーを雇いたいとは誰も思わないので、適用さえしません。1 または、私が会社を見つけたのは、私が欲しいから、または私が気にかけている製品を持っているからではなく、そうすれば私の会社が買収されたとき/仕事を得ることができるからです。 または、管理職に重点を置く必要があります(過去に成功したことがあります)。…まあ、彼らはこれを本当に説明できませんでした。まだコードを書いています。しかし、私はコードを書くのが好きです。 これを見たことがありますか?これはローカル(北カリフォルニア)のみの問題ですか? プログラマーを雇ったことがある場合:2 あなたが受け取った履歴書のうち、一番上の申請者は何歳でしたか? インタビューした最年長の年齢は何歳でしたか? あなたが雇った最年長の人は何歳ですか? プログラマーとして採用するには「古すぎる」のは何歳ですか? 1 すべての応募者に同等の適用経験があると仮定しています。これは、30年のCOBOLがJavaの第一人者に応募している人のことではありません。 2 はい、(少なくとも米国では)申請者の年齢を尋ねるべきではないことを知っています。しかし、私の経験では、履歴書から一般的なアイデアを得ることができます。
114 experience 

4
飛行機ではどのオペレーティングシステムが使用され、どのプログラミング言語で開発されていますか?[閉まっている]
民間航空機(ボーイングやエアバスなど)で使用されているオペレーティングシステムが何かを知っている人がいるのだろうかと思っていました。 また、(推奨)リアルタイムプログラミング言語とは何ですか?私はエイダがボーイングで使用されていると聞いたので、私の質問は-なぜエイダですか?ボーイングがこの言語を選択しなければならなかった基準は何ですか?(ちょうどリフトオフでガベージコレクターが起動する場合、Javaは最適な選択肢ではないと思います)。

10
同僚がテストせずにコミットしてプッシュする
同僚が自分のPCでテストする必要がないと考えると、彼は変更を加え、コミットしてからプッシュします。次に、彼は実稼働サーバーでテストを行い、ミスを犯したことに気付きます。週に1回発生します。現在、彼は3つのコミットを行い、5分以内に運用サーバーへの展開をプッシュしていることがわかります。 私は彼に、これは良い仕事がどのように行われるかではない、と何度か言った。私は彼に再び失礼になりたくありません、そして、彼は会社で私と同じ地位にあります、そして、彼はここで私より多くをしました。 この振る舞いを何らかの形で罰するか、できる限り不快にしたいのです。 始める前に、会社はFTPなどの旧式な方法を使用して展開していましたが、バージョン管理はありませんでした。 Git、Bitbucket、Dploy.io、およびHipChatを使用するように強制しました。展開は自動ではなく、誰かがdply.ioにログインして展開ボタンを押す必要があります。 さて、実稼働サーバーでテストしないように強制するにはどうすればよいですか?HipChatボットのようなものは、同じ行で繰り返し編集が行われていることを感知し、プログラマーに通知を送信できます。

16
「DO YOU HAZ TEH CODEZ」の状況を回避する方法は?
私は職場で奇妙な状況にあります。私の同僚が私や他の同僚にコードの作業を依頼することがよくあります。 私は彼を助けたいと思っていますが、些細なスニペットのこの絶え間ない要求は私の考えを中断し、時々集中するのを難しくします。 さらに、私は、この要求は怠lazよりも能力の欠如によって生成されるという印象を持っています(...)。実際、彼はよく答えを知っているふりをします。私が問題を解決するとき、彼は通常「確かに」、「はい、それは私が考えたもの」のようなことを言い、私の答えは価値がないという印象を与えます。 この恥ずかしい状況をどのように解決できますか? 他の同僚の前で彼の知識の欠如をもっとはっきりと示すべきです(「できるなら自分でやってください」など)。 彼はすべての質問を1つにまとめる必要があると思います。そうすれば、私は彼に私の時間の一部を与え、彼はすべて自分のことで自分の仕事に取り組むことができます。 チーム内に階層はありません。どちらもほぼ5年というほぼ同じ年配者です。些細な質問はしばしば無視されるので、同じ理由で私は経営陣に報告できないと思います。 私は他の2人のメンバーと話し合い、彼らは私に同意します。実際、彼はよく同僚を介してサイクリングすることを尋ねます。

16
彼がヌルを期待していない場合、ヌルをチェックする必要がありますか?
先週、アプリケーションのサービスレイヤーでnullを処理することについて、激しい議論がありました。問題は.NETコンテキストにありますが、Javaや他の多くのテクノロジーでも同じです。 問題は、nullを常にチェックし、何があってもコードを動作させるか、nullが予期せず受信されたときに例外を発生させるか、ということでした。 一方で、nullを期待していない(つまり、それを処理するユーザーインターフェイスがない)ところをチェックすることは、catchを空にしてtryブロックを記述することと同じです。エラーを隠しているだけです。エラーは、コード内で何かが変更され、nullが予期される値になったこと、または他のエラーがあり、間違ったIDがメソッドに渡されたことが考えられます。 一方、nullをチェックすることは一般的に良い習慣です。さらに、チェックがある場合、アプリケーションが機能し続ける可能性がありますが、機能のごく一部が効果を発揮しません。次に、「ページXを開くことができない」などのより深刻なバグの代わりに、「コメントを削除できない」などの小さなバグを報告する場合があります。 あなたはどのような慣習に従い、どちらのアプローチに対して賛成または反対ですか? 更新: 特定のケースに関する詳細を追加します。データベースからいくつかのオブジェクトを取得し、それらに対して何らかの処理を行いました(たとえば、コレクションを構築します)。コードを記述した開発者は、オブジェクトがnullになる可能性があることを予期していなかったため、チェックを含めず、ページが読み込まれたときにエラーが発生し、ページ全体が読み込まれませんでした。 明らかに、この場合はチェックが必要でした。次に、処理されるすべてのオブジェクトを、欠落していることが予想されない場合でもチェックする必要があるかどうか、および最終的な処理をサイレントに中止するかどうかについて議論しました。 仮想的な利点は、ページが引き続き機能することです。Stack Exchangeのさまざまなグループ(ユーザー、コメント、質問)の検索結果を考えてください。メソッドはnullをチェックし、ユーザーの処理を中止できます(バグがnullのため)が、「comments」および「questions」セクションを返します。「ユーザー」セクションが欠落することを除いて、ページは引き続き機能します(これはバグです)。早期に失敗してページ全体を壊すか、作業を続けて「ユーザー」セクションが欠落していることに誰かが気付くのを待つべきでしょうか?


20
署名済みの契約で時間の見積もりをロックしたいプロジェクトマネージャー
以前の雇用では、プロジェクトマネージャー(PM)は、私のプロジェクトのコードの納期に満足していませんでした。プロジェクトリーダーから、PMはタスクと納期に与えた時間の見積もりをロックインする契約に署名することを検討していると言われました。 プロジェクトの状況は、新しいテクノロジー、コードベース、コーディング標準、および非常に変更しやすい要件を扱っていたということでした。私は新しいことを学び、変化し続ける要件にできる限りそれらを適用していました。反復全体の要件は2〜3倍に増加し、完了までの見積もりは約5〜8倍に増加しました。変更されなかったのは、見積もりと納期のみでした。 はい、私はほとんどの締め切りを逃してしまいました。そして、私は開発チーム全体の誰もそれを知らないので、本当に助けてくれないいくつかの非常に新しい技術に取り組んでいました。少なくとも簡単ではありません。 そのとき、私は、PMが彼の数字を加算することを望んでいたように思えたので、私は常に作業コードを時間通りに配信することを「保証」する契約に署名することを望みました。期限内に納品できなかった場合、PMは署名済みの契約でそれを使用できると思います。 次に起こったことは、他のプロジェクトマネージャーやプロジェクトリーダーが私を弁護し、それを起こさせなかったことだと思います。 私の質問は、これはマネージャーについて赤旗を上げるべきですか?マネージャが契約書に署名してソフトウェア開発者の時間の見積もりを確定するのは一般的な慣行ですか?またはこの場合、試してみてください。 私はフルタイムの従業員であり、独立したコンサルタントではないことに注意してください。 更新:毎週新しい見積もりを行ったことを付け加えたいと思いますが、元の見積もりと納期はPMが修正したものだったようです。

4
example.orgに相当する電話番号は何ですか?
RFC 2606標準では、ドキュメントの例として使用する目的で、ドメイン名example.org、example.netおよびexample.comが予約されています。 例として使用できる電話番号(国コードを含む)に相当するものは何ですか?たとえば、ユーザーに電話番号を入力するための形式の例を提供するためですか? 最良の場合、それは関連する規格によって電話番号の例として指定されたダミー番号であり、実際の加入者に起因するものではありません。

3
PythonがGILで書かれたのはなぜですか?
グローバルインタープリターロック(GIL)は、スレッド処理などがPythonでややこしい理由の主な理由としてよく引用されているようです。 プログラマーではないので、なぜそうなるのか手がかりがありません-GILを入れる背後にあるロジックは何ですか?

14
現代の主流のプログラミング言語でラムダ関数の人気が高まったきっかけは何ですか?
過去数年で、匿名関数(ラムダ関数)は非常に人気のある言語構成要素になり、ほぼすべての主要な/主流のプログラミング言語がそれらを導入するか、標準の次の改訂で導入する予定です。 しかし、匿名関数は、数学とコンピューターサイエンス(1936年頃に数学者のアロンゾ教会によって発明され、1958年からLispプログラミング言語で使用された、たとえばここを参照)で非常に古く、非常によく知られた概念です。 では、なぜ今日の主流のプログラミング言語(その多くは15年から20年前に生まれたもの)が、最初からラムダ関数をサポートし、後で導入しただけだったのでしょうか? そして、ここ数年で匿名機能が大々的に採用されたきっかけは何ですか?この現象を引き起こした特定のイベント、新しい要件、またはプログラミング手法はありますか? 重要な注意点 この質問の焦点は、現代のメインストリーム(したがって、いくつかの例外を除いて、機能しない)言語での匿名関数の導入です。また、匿名関数(ブロック)は関数型言語ではないSmalltalkに存在し、通常の名前付き関数はCやPascalなどの手続き型言語にも長い間存在していることに注意してください。 「機能的なパラダイムの採用とその利点」について話すことによって、あなたの答えを一般化しすぎないでください。これは問題のトピックではないからです。

17
より良い生産性を得るために愚かですか?
私は「良いデザイン」、「デザインパターン」などに関するさまざまな本を読むのに多くの時間を費やしました。私は、SOLIDアプローチの大ファンであり、簡単なコードを書く必要があるたびに、未来。したがって、新機能またはバグ修正を実装するために、次のような3行のコードを追加するだけでよい場合: if(xxx) { doSomething(); } この方法でやるという意味ではありません。このコードが近い将来大きくなる可能性が高いと思う場合は、抽象化を追加したり、この機能を他の場所に移動したりすることを考えます。私が追求している目標は、平均的な複雑さを変更前と同じに保つことです。 私は、コードの観点から、それは非常に良いアイデアだと信じています-私のコードは決して十分に長くはなく、クラス、メソッド、クラスとオブジェクト間の関係などのさまざまなエンティティの意味を理解するのは非常に簡単です。 問題は、時間がかかりすぎることです。その機能を「そのまま」実装した方が良いと思うことがよくあります。「3行のコード」と「新しいインターフェイス+そのインターフェイスを実装するための2つのクラス」だけです。 製品の観点から(結果について話しているとき)、私がすることはまったく無意味です。次のバージョンで作業する場合、優れたコードを持つことは本当に素晴らしいことを知っています。しかし、一方で、コードを「良い」ものにするために費やした時間は、いくつかの便利な機能の実装に費やされた可能性があります。 私はしばしば結果に非常に不満を感じます-Aしかできない良いコードは、A、B、C、Dをできる悪いコードより悪いです このアプローチは、ソフトウェアプロジェクトにプラスの純利益をもたらす可能性がありますか、それとも時間の無駄ですか?
112 productivity 

30
作業中にすべてのプログラマが必要とするもの
私は、楽しくてリラックスできる環境を作ることを任されてきました。私が望んでいることの1つは、人間工学に基づいたマウスとキーボードです。他の人は、エクササイズボールとバンドを提案しています。 すべてのプログラマが作業中に必要なものは何ですか?何が必要ではないかもしれませんが、とにかく持っていいだろうか? 注:この質問は以前に尋ねられましたが、ここに投稿することをお勧めします。以前の回答については、このリンクを参照してください:https : //stackoverflow.com/questions/3911911/stuff-every-programmer-needs-while-working-closed

30
なぜゼロベースの配列が標準なのですか?
ここで尋ねられた質問は、仲間のプログラマーとの話し合いを思い出させてくれました。彼は、ゼロベースの配列は配列とポインターおよびコンピューターハードウェアの動作方法に由来する実装の詳細であるため、ゼロベースの配列を1ベースの配列に置き換える必要があると主張しましたが、これらの種類はより高いレベルに反映されるべきではありません言語。 今、私は議論するのがあまり得意ではないので、ゼロベースの配列に固執する正当な理由を提供することはできませんでした。配列の一般的な出発点はなぜゼロなのですか?
112 array 

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