ソフトウェア工学

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

6
TDDを使用した複雑なコードの良い例[終了]
大規模な現実の複雑なプロジェクトでTDDを使用する良い例は何でしょうか?これまでに見た例はすべて、本や論文を目的としたおもちゃのプロジェクトです... TDDを多用するオープンソースプロジェクトに名前を付けることはできますか?C ++が望ましいですが、JavaとC#または他の類似言語を読むことができます。
37 java  c#  open-source  c++  tdd 

13
変数名の前に変数タイプの略語を付けますか?(ハンガリー記法)[終了]
私の現在の仕事では、コーディングのガイドラインはありません。誰もが彼の望み通りにコーディングしています。会社が小さいので、これは問題ありません。 ただし、最近、新しい記者の1人が、常にハンガリー記法を使用することを提案しました。これまで、私たちの中にはある種のハンガリー記法を使用していた人もいれば、そうでない人もいました。エンジニアリング会社なので、アルゴリズムが適切である限り、コーディングスタイルは実際には重要ではありません。 個人的には、これらの小さなタイプの略語は一種の冗長であると感じています。よく考え抜かれた名前は通常、同じメッセージを伝えます。(さらに、私たちのコードのほとんどは、とにかくコンセプトが存在する、boolまたはfloat存在しない、奇妙なDSPで実行する必要があります)。 それでは、ハンガリー記法についてどう思いますか?使いますか?どうして?

7
単体テスト初心者チームは単体テストが必要
私は歴史的にユニットテストを行っていない新しいチームで働いています。私の目標は、チームが最終的に TDD(テスト駆動開発)を自然なプロセスとして採用することです。しかし、TDDはユニットテスト以外のチームにとっては非常に急進的であるため、コーディング後にユニットテストを書くことから始めようと思いました。 誰も同じような状況にありましたか?チームがユニットテストを行っていないときにTDDに慣れるのに効果的な方法は何ですか?いくつかの手順でこれを行うのは理にかなっていますか?それとも、すぐに飛び込み、成長するすべての痛みに一度に直面する必要がありますか? 編集 明確にするために、チームには(私以外に)単体テストの暴露/経験を持つ人はいません。また、Visual Studioに組み込まれている単体テスト機能の使用を計画しています。
37 unit-testing  tdd 

12
プログラマーと呼ばれるアルゴリズムとデータ構造を理解する必要がありますか?[閉まっている]
私がコーディングを始めてから6年が経ちました。ActionScript、JavaScript、Java、PHP、Ajax、XML HTML、ASPなどのあらゆる種類のコードにコーディングします。配列、マップ、リンクリスト、セットなどを使用しました。しかし、インタビューを受けるたびに、人々はハッシュ、ツリー、スタック、キューについて質問する可能性が非常に高いです。いくつかのソートアルゴリズムのジャグリングに関する質問があります。私は本当にそれらを知るべきなのか、それとも自分をプログラマーと呼ぶのをやめるべきなのかわかりません。これらすべての質問をしている人が私を選んだとしても、私にこれらの仕事をさせてくれることは決してありません。私は本当にこれらすべてを知る必要がありますか?

30
20年前にプログラミングはどのように行われましたか?[閉まっている]
現在、次のような作業を容易にする多くのプログラミング支援があります。 IDE デバッガー(行ごと、ブレークポイントなど) コンパイル用のAntスクリプトなど プログラミングの問題に悩まされている場合に役立つStackOverflowなどのサイト 20年前、これらのことはどれもありませんでした。人々はプログラミングにどのツールを使用し、これらの新しいツールなしでどのようにしたのでしょうか?私は当時のプログラミングがどのように行われたかについてもっと知りたいと思っています。
37 history 

5
潜在的な雇用者にジョエルテストでどのように採点するかを尋ねることは悪いエチケットですか?[閉まっている]
開発者のインタビューは他のほとんどの場所とは異なります。なぜなら、あなたが働く人々、福利厚生、仕事の説明などを心配するだけでなく、仕事を取得した後に心配する余分なこともあるからです。VS2003 / .NET 2.0とVS210 / .NET 4.0を使用し、SVNとVSSを使用して大音量と静かな環境で作業している場合、厳密な要件を持つ2つのアプリケーションの作成は大きく異なる可能性があります。 潜在的な雇用者にストレートなジョエルテストを与えても大丈夫ですか?私が作業する環境のタイプを得るためにできるだけ多くの質問をしようとしていますが、これは私の観点からは非常に重要ですが、追跡するための最善の方法は何ですか?同じインタビュー)。 注:「ジョエルテスト」とは、あなたにとって重要な取引ブレーカー(特定のジョエルである必要はない)の特定のリストを意味しますが、従来のカジュアルな「会話型」方法でそれらを尋ねる時間がない場合があります、そのため、メールを送信するか、別の会議をスケジュールするか、他の人に質問するなどの決定をします。
37 joel-test 

11
あるプログラミング言語から別のプログラミング言語への自動翻訳者がいないのはなぜですか?[閉まっている]
ほとんどのプログラミング言語はチューリング完全です。つまり、ある言語で解決できるタスクは、別の言語で、またはチューリングマシン上でも解決できます。それでは、プログラムを特定の言語から他の言語に変換できる自動翻訳者がいないのはなぜですか?2つの言語に対するいくつかの試みを見てきましたが、それらは常に言語の限られたサブセットでのみ機能し、実際のプロジェクトの変換にはほとんど使用できません。 少なくとも理論的には、すべての言語間で100%正しい翻訳者を書くことは可能ですか?実際の課題は何ですか?働く既存の翻訳者はいますか?


12
残業中だがレーダーの下で働くことを求める上司[非公開]
先日、上司(彼をColfaxと呼びます)がプロジェクトに取り組むように頼みましたが、それを誰か(私のチームの他のプログラマーを含む)と話し合うべきではなく、通常の仕事以外で行わなければならないことを時間。引き換えに、Colfaxは、プロジェクトに費やした時間に等しい「本のない」休暇日を私に提供しました。上司(彼をスカイラーと呼ぼう)が彼が提供しているものを知っているかどうかをコルファクスに尋ねたとき、コルファクスは、スカイラーは、スカイラーが見つけた場合、彼(コルファクス)がトラブルに巻き込まれることを知らず、暗示していたと言いました。私の上司はまた、私がこれと一緒に行けば、「将来の考慮」のために私の努力が記憶されるだろうと言った。 仕事は私たちの雇用主のためですので、そこにあるものはすべて最新のものです。しかし、私は全体について不安を感じています。私の一部は、あなたが知っているように、プロジェクトに取り組みたいと思っています-クールでかなりシンプルなものをコーディングします。一方、全体は怪しげで手に負えないように見えます。 私は余分な仕事を拒否することで「悪い従業員」になるのでしょうか?または、私は仕事をしないことを道徳的に正当化していますか? 更新 この質問を投稿してからしばらく経ちましたが、ディスカッションに参加した人たちは、この会話の数か月後にColfaxを辞めたことに興味があるのではないかと思いました。ですから、私が従ったなら、おそらく何の役にも立たなかったでしょう。ともかく、コメントありがとうございます。


8
非テクノロジー企業で唯一のプログラマーとして働いている[非公開]
私は約15人の小さなマーケティング会社で、バックエンド開発者、フロントエンド開発者、システム管理者、ヘルプデスク、そして「コンピューターを知っている男」として働いています。 テクノロジー産業に必ずしも傾いているわけではない企業で、単独で飛行した経験を他の人が共有できるかどうか疑問に思っていました。 私はもともと、フロントエンドの開発者/設計者からフルタイムのコーダーに移行するために仕事を引き受けました。それはある点までは良い経験でした。率直に言って、誰も私の仕事を本当に理解していないからです。 最近、それは非常に孤独な位置のように感じます。私はめったに人々からアイデアを思いとどまらせることができず、誰もが私にすべてのコンピューターを動作させ、Google検索で最初に着陸させる魔法の力があるように見えます。また、私たちが望むと言うもの(数ヶ月にわたる大規模な開発スケジュールを持つプロジェクト)と実際に行うこと(何度も何度もサイトをコピー編集する)との間に強いつながりを感じました。 それでは、テクノロジーが少し不思議だと思っている会社で、自分自身が「技術者」であると他に誰が思っていますか?また、あなたの状況についてどう思いますか?

11
並行性:設計にどのようにアプローチし、実装をデバッグしますか?
私は数年前から並行システムを開発してきましたが、正式なトレーニングが不足している(つまり学位はない)にもかかわらず、このテーマをかなりよく理解しています。少なくとも最近話題になっているいくつかの新しい言語があります。これらは、ErlangやGoなど、並行処理を容易にするように設計されています。並行性に対する彼らのアプローチは、システムをスケーラブルにし、複数のコア/プロセッサ/マシンを活用する方法に関する私自身の経験を反映しているようです。 しかし、あなたが何をしようとしているのかを視覚化し、少なくとも元のビジョンに近いことを確認するのに役立つツールはほとんどないことがわかります。並行コードのデバッグは、並行処理用に設計されていない言語(C / C ++、C#、Javaなど)では悪夢のようです。特に、開発環境の1つのシステムで簡単に発生する状態を再現することはほとんど不可能です。 それでは、並行性と並列処理に対処するシステムを設計するためのアプローチは何ですか?例: 並行処理できるものとシーケンシャルにする必要があるものをどのように把握しますか? エラー状態を再現し、アプリケーションの実行中に何が起こっているかを表示するにはどうすればよいですか? アプリケーションの異なる並行部分間の相互作用をどのように視覚化しますか? これらのいくつかについては私自身の回答がありますが、もう少し学びたいと思います。 編集 これまでのところ、多くの良い入力があります。リンクされている記事の多くは非常に優れており、私はすでにそれらのいくつかを読みました。 並行プログラミングでの私の個人的な経験から、シーケンシャルプログラミングとは異なる考え方が必要だと思います。精神的な格差は、おそらくオブジェクト指向プログラミングと手続き型プログラミングの違いと同じくらい広いでしょう。この一連の質問では、回答に体系的にアプローチするために必要な思考プロセス(理論)にもっと焦点を当ててほしい。より具体的な回答を提供する場合、例を提供するのに役立ちます-あなたが個人的に経験したこと。 バウンティの目標 何をすべきか教えてはいけません。私はすでにそれをコントロールしています。あなたが何をするか教えてください。これらの問題の解決方法を教えてください。

19
10分間の技術面接[終了]
何十人もの新入生をすばやく評価する必要があります。私は彼らとそれぞれ30分(2、3日で)会います。私はほとんどの時間を非技術的な側面について議論したいと思います。そのため、技術的な質問には10分を使用する予定です。それらすべてについて同じ質問。 彼らはすべてすでに雇用されています(彼らは学生です)。私が知る必要があるのは、トレーニングを準備するための平均レベルです。 理想的にはmust be progressive、それぞれのレベルを設定するための難易度。レベルIは平均化され、各質問についても平均化されます。 候補者に質問するのに10分と10の質問しかない場合、あなたのトップ10は何でしょうか?
37 interview 

9
将来の変更に備えて設計するか、手元の問題を解決する[終了]
コードの作成中または設計中に、最初のインスタンス自体で問題を一般化しようとしますか、それとも非常に具体的な問題を解決しようとしますか。 問題を一般化しようとすると物事が複雑になる傾向があるため(これは必要ではないかもしれません)、一方で、要件に変更があると特定のソリューションを拡張することは非常に困難になるため、私はこれを求めています。 解決策は、言うよりも簡単な中間パスを見つけることだと思います。この種の問題にどのように取り組みますか?どのくらいの時点で一般化を開始したら、これだけの一般化で十分であることがわかりますか?
37 design 

11
インタビューで「あなた自身について少し教えてください」という質問にどう答えますか?[閉まっている]
いくつかのインタビューでこれを聞いてきました。私の職業と学歴はすでに履歴書にありますが、インタビュアーは明らかにそれを見てきました。彼/彼女にこれ以上何を伝えますか?趣味から始めましょうか?私はガーデニングが好きですか、それとも自由時間にredditでNSFWの写真を見ますか? この特定の質問に何とどのように答えますか?準備ができた答えはありますか?この質問が少しばかげていると思うなら、私は間違っていますか? 更新この質問には多くの素晴らしい回答がありました。それらのほとんどは非常に洞察力があるため、私は「正しい」答えとして選択するピクルスにいます。私はこの主題に関する素晴らしい文章を見つけました。私の好みには少し狂っていますが、面白いです: 自己紹介の仕方…私は実際に意味する
37 interview 

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