ソフトウェア工学

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


3
オープンソースプロジェクトを促進するには?
まず、これがこの質問を投稿するネットワークの間違ったセクションである場合、私は謝罪します。もしそうなら、より適切な場所に移動してください... 質問:オープンソースプロジェクトの開始と実行の方法に関するあなたのアイデアを聞きたいです。オープンソースのコンテンツ管理システムプロジェクトがありますが、ここでいくつかの疑問が生じます。最初にフロントエンドとバックエンドが機能する実行可能なプレアルファ版を作成してから、プロジェクトを公開しますか?それとも、すぐにそれを発表しますか?開発者として、GitやSVNなどのバージョン管理システムを使用する必要があることを知っています。そして、ユニットテストのメリットも覚えておく必要があります。率直に言って、私はまったく興味がありません…プロジェクト管理-私はせいぜい初心者です。アジャイル開発などのコーディング技術と経験は、私が探求したいものです... 要するに、オープンソースの世界に慣れていない開発者向けのアイデアは大歓迎です。

16
言語構文について書いています。メソッド名の中にパラメータが配置される言語はありますか?
JavaScriptで: function getTopCustomersOfTheYear(howManyCustomers, whichYear) { // Some code here. } getTopCustomersOfTheYear(50, 2010); C#の場合: public List<Customer> GetTopCustomersOfTheYear(int howManyCustomers, int whichYear) { // Some code here } List<Customer> customers = GetTopCustomersOfTheYear(50, 2010); PHPの場合: public function getTopCustomersOfTheYear($howManyCustomers, $whichYear) { // Some code here } $customers = getTopCustomersOfTheYear(50, 2010); この構文をサポートする言語はありますか? function GetTop(x)CustomersOfTheYear(y) { // …

13
情報のたまり屋にどう対処しますか?[閉まっている]
私たちは皆それらに出くわしたに違いありません-長い間存在していて、素晴らしいドメイン知識を持っている開発者が、彼らのチームとその知識を共有することに失敗しています。 チームは必死に知識を共有する必要がありますが、それを買いだめ者からこじ開けることはできません。 チームはどのようにしてこの問題を解決しましたか?

6
Googleでのプログラミング言語の使用[終了]
GoogleはPython、Java、C ++を使用していると聞きました。しかし、私が知らないのは、これらのプログラミング言語のそれぞれがどのように使用されているかです。Googleで使用されているPython、Java、C ++は何ですか。1つの言語で十分なのに、なぜ最大3つのプログラミング言語を使用したのでしょうか。誰か知っていますか?

9
質問者の質問に対する答えがすでにわかっていることをインタビュアーに伝える必要がありますか?[閉まっている]
プログラミングインタビューで、質問がある場合、特定の問題に対するアルゴリズムを提供するなど、すでに答えを知っています。それをインタビュアーに開示すべきですか?この問題は、質問に斬新な側面がある場合にのみ意味があります。 1つの例は、「文字列内の各単語を逆にしますが、順序は逆にしませんか?」です。また、私の例やもっと難しい問題など、あなたが知っておくべき「より簡単な」ものの間には分割があるようです。 この問題に対処するためのポリシーと根拠は何ですか?質問/編曲家に既に精通している場合、質問に答えるだけでなく、これを開示すべきですか?質問に関する事前の知識を開示しないことに関連する倫理的ジレンマはありますか?
29 interview  ethics 

7
自動化された単体テスト、統合テスト、または受け入れテスト[終了]
TDDと単体テストは、現時点では大きな絶賛のようです。しかし、他の形式の自動化されたテストと比べて本当に便利なのでしょうか? 直感的には、自動化された統合テストは単体テストよりもはるかに便利だと思います。私の経験では、ほとんどのバグはモジュール間の相互作用にあるようで、各ユニットの実際の(通常は制限された)ロジックではありません。また、モジュール間のインターフェイスの変更(および変更された事前条件と事後条件)のために、しばしば回帰が起こりました。 私は何かを誤解していますか、またはなぜ統合テストに比べて単体テストがそれほど重視されているのですか?それは単に統合テストがあなたが持っているものであり、ユニットテストが開発者として適用するために学ぶ必要がある次のものであると仮定されているからです。 それとも、単体テストは、自動化の複雑さに比べて単純に最高の利益をもたらすでしょうか? 自動化された単体テスト、自動化された統合テスト、および自動化された受け入れテストでどのような経験がありますか?なぜ? 次のプロジェクトで自動化するために、テストの形式を1つだけ選択する必要がある場合、それはどのようになりますか? 前もって感謝します。

4
今後のGoogleインタビュー、準備に関するアドバイスを募集中[終了]
さて、私はどこでも本を叩いています。ソフトウェアエンジニアのポジションについて、電話での最初のインタビューを予定しています。私はすべてのブログ記事を読み、インタビューのアカウント(かなり古い)をすべて読みました。Google自体も本の読書リストを提案しました。それでも、しばらく準備をした後、私はカバーするような大きな地面があるという気持ちを揺るがすことができず、私は深さで行くか幅広で行くかどうか決してわかりません。私は自分がcompsciの全領域を再学習しているのに気づきましたが、別の話に移る際に重要な詳細のほとんどを忘れてしまいました。 ですから、この質問に対する良い答えがあるかどうかはわかりませんが、インタビューの前の残りの数週間に取り組む方法についての実用的なアドバイスを探しています。私の脳の一部は詰め込みにうんざりしており、もちろん残りの部分は私の現在の職場でのいくつかの困難な問題に利用しなければなりません。

6
技術的負債を処理することでどのような見返りがありますか?
技術的負債に関するこの記事には、次のような優れた点があります。 「技術的な問題」に取り組むことは、ストーリーによって推進されるときに最も効果的です。コードベースはおそらくどこでも作業を必要としますが、ユーザーに面した理由でコードが作業される場所でのみペイオフが受け取られます。ストーリーがなかなか難しい領域を通過しない場合、その作業はほとんど無駄になります。 したがって、私はいつものように(しかしおそらくそれよりも少ない)物語を取り上げ、あなたが見つけたよりもキャンプ場を去るという「ボーイスカウトのルール」に従うアプローチを好む。言い換えれば、ストーリーが私たちを導くところはどこでも、より多くのテストを書きましょう、より積極的にリファクタリングしましょう。 このアプローチには、少なくとも次の利点があります。 「賢明な」ストーリーの流れを維持します。 チームのすべての才能からの支援を提供します。 チーム全体がコードをクリーンに保つ方法を学習できるようにします。 改善が必要な場所に正確に焦点を合わせます。 「必要な」改善を無駄にしない; コードの品質が長期的な生産性に非常に大きな影響を与えるのを見てきましたので、技術的な負債を処理する必要があると考えています。上記の投稿は理にかなっていると思いますが、最後の2つのポイントについてはよくわかりません。たとえユーザーのストーリーに関係していなくても、技術的な負債を取り除くことで得られるメリットの実際の経験を見つけることに興味があります。 コードベースを整理し、技術的な負債をなくすことで、どのようなプラスのメリットがありましたか?仕事を成し遂げるためにどのような方法を使用しましたか?

10
DailyWTFストーリーの候補である企業に採用されることを避ける方法 [閉まっている]
私はThe Daily WTFアーカイブ、特にソフトウェア開発や開発者の仕事などのまったく間違ったアプローチを持つIT関連企業についての記事を読んでいます。 一部のストーリーは完全に恐ろしいものです。セキュリティ上の理由からローカルネットワークを持たない会社、マネージャーのみがアクセスできるソース管理サーバーなどを持っている会社などです。知らないマネージャーに関するすべてのストーリーを追加してください彼らの仕事について何でもし、誰にも耳を傾けずに愚かな決定を下します。 問題は、インタビューであなたがそのような会社に雇われるかどうかを知る方法がわからないということです。もちろん、時には、インタビュアーが奇妙なことを言って、会社で何かがうまくいかないという考えを教えてくれます(私の場合、最後のマネージャーは、時間の100%を古いデスクトップに接続されたリモートデスクトップで作業するべきだと言いました) slooooowマシン、「複数の人が同じソースコードを変更することを避ける」ため、多分私は彼にSVNとは何かを説明する必要があります。 しかし、ほとんどの場合、面接中に会社の正確なイメージを取得するのに十分な情報を取得することはできません。 それでは、この種の企業に雇われないようにする方法は? ドキュメントガイドやコードスタイルガイドラインのようないくつかのドキュメントを見たいと思った。問題は、私がフランスに住んでいるということです。ここでは、ほとんどの企業がそれらのドキュメントをまったく持っておらず、それらのドキュメントが存在するまれなケースでは、それらが古くなったり、不十分に書かれていたり、使用されなかったり、意味のないことをする。 また、プログラマーが実際にどのように働いているかを確認することも考えました。しかし、彼らが二重のスクリーンまたは「最新の芸術家気取りの家具」を持っているということは、彼らが奇妙な決定を下す人々を持たないという意味ではなく、そこで働くことを不可能にします。 あなたはそのような状況にあったことがありますか?何を試しましたか?うまくいきましたか?

10
ITの求職者/採用担当者は、新しい仕事を探す際にどの程度役立ちますか?[閉まっている]
有用性の度合いが異なるいくつかの分野に存在するため、新しい仕事を見つける際にIT専門家(プログラマー、ソフトウェアエンジニア、CIOなど)のみに焦点を当てるヘッドハンター/リクルーターの評判に興味があります。 彼らは実際に有用ですか、それともかなりヒットまたはミスですか?限られた数でのみ働くという古い格言が当てはまりますか、それともあなたはそれらのいくつかに履歴書/履歴書を安全に渡すことができますか?
29 profession 

12
役立つエラーメッセージに関する開発者の問題は何ですか?[閉まっている]
今日でも、プロのチームによって構築された、長年使用されてきた製品が、今日までまだ、ユーザーに役立つエラーメッセージを提供できないことに驚かされます。場合によっては、ほんの少しの追加情報を追加するだけで、ユーザーの時間を節約できます。 エラーを生成するプログラムが、何らかの理由で生成しました。何が失敗したのか、ユーザーにできる限り多くの情報を提供するために、すべてを自由に使用できます。それでも、ユーザーを支援する情報を提供することは優先度が低いようです。これは大きな失敗だと思います。 1つの例はSQL Serverからのものです。使用中のデータベースを復元しようとすると、まったく問題が発生します。SQL Serverは、どのプロセスとアプリケーションがそれにアクセスしているかを知っています。データベースを使用しているプロセスに関する情報を含めることができないのはなぜですか?すべての人がApplicatio_Name接続文字列で属性を渡すわけではないことは知っていますが、問題のマシンに関するヒントさえあれば役立つかもしれません。 別の候補であるSQL Server(およびmySQL)は、美しいstring or binary data would be truncatedエラーメッセージと同等のものです。多くの場合、生成されたSQLステートメントの単純な閲覧と、テーブルが原因の列を示します。これは常に当てはまるわけではありません。データベースエンジンがエラーを検出した場合、なぜその時間を節約できず、どの列が壊れているかを教えてくれないのでしょうか。この例では、それをチェックするとパフォーマンスが低下する可能性があり、これがライターを妨げると主張できます。結構です、私はそれを買います。データベースエンジンは、エラーがあることを認識すると、格納される値と列の長さを事後比較します。次に、それをユーザーに表示します。 ASP.NETの恐ろしいテーブルアダプタも有罪です。クエリを実行し、どこかで制約に違反していることを示すエラーメッセージを表示できます。ありがとう。開発者は行番号やサンプルデータを提供するのが面倒なので、データモデルとデータベースを比較する時間です。(記録のために、私は選択によってこのデータアクセス方法を決して使用しませんでした、それはただ私が継承したプロジェクトです!)。 C#またはC ++コードから例外をスローするたびに、手元にあるすべてのものをユーザーに提供します。それを投げる決定が下されたので、私が提供できる情報が多ければ多いほど良いです。関数が例外をスローしたのはなぜですか?何が渡され、何が期待されましたか?例外メッセージの本文に意味のあるものを入れるには少し時間がかかります。地獄、それは何もしませんが、私のコードは意味のあるものを投げることを知っているので、私が開発する間、私を助けます。 複雑な例外メッセージをユーザーに表示すべきではないと主張することができます。私はそれに反対しますが、それはあなたのビルドに応じて異なるレベルの冗長性を持つことで簡単になだめることができる議論です。それでも、ASP.NETおよびSQL Serverのユーザーは一般的なユーザーではなく、問題をより迅速に追跡できるため、冗長でおいしい情報に満ちたものを好むでしょう。 開発者がエラーが発生したときに最低限の情報を提供することは、この日と年齢で大丈夫だと思うのはなぜですか? それは2011年の男だ、来るで。

11
エラーのないプログラムを書く方法に関して、アラン・ペルリスは何を意味しましたか?[閉まっている]
アランJ.ペルリスによる次のような引用があります。 エラーのないプログラムを作成するには2つの方法があります。3番目のものだけが機能します。 私は最近友人からこの引用を聞いたが、その背後にあるより深い意味を理解することができなかった。 ここでPerlisは何について話しているのですか?
29 bug  quotations 


12
クラスの大きさはどれくらいですか?
私は長年の開発者です(49歳)が、オブジェクト指向開発は初めてです。私はBertrand Meyer's Eiffel以来オブジェクト指向について読んでいますが、オブジェクト指向プログラミングはほとんどしていません。 ポイントは、オブジェクト指向設計に関するすべての本は、ボート、車、または私たちが頻繁に使用する一般的なオブジェクトの例から始まり、属性とメソッドを追加し、オブジェクトの状態をモデル化する方法と何ができるかを説明し始めることですそれ。 そのため、通常、「モデルが優れているほど、アプリケーション内のオブジェクトをより適切に表し、すべてがより優れている」というようなものになります。 これまでのところ非常に良いですが、一方で、「クラスは単一のページに収まる必要があります」などのレシピを提供する複数の著者を見つけました(「どのモニターサイズで?」コードを印刷します!)。 たとえば、PurchaseOrder動作を制御する有限状態マシンとのコレクションを持つクラスを考えてみましょう。PurchaseOrderItemここでの作業の引数の1つは、PurchaseOrderいくつかのメソッド(データクラス以上)を持つ単純なクラスを使用することです。PurchaseOrderFSM「エキスパートクラス」のためのハンドル有限状態マシンというPurchaseOrder。 これは、コーディング・ホラーに関するJeff AtwoodのCode Smells投稿の「Feature Envy」または「Inappropriate Intimacy」分類に該当すると言えます。私はそれを常識と呼んでいます。実際の注文書を発行、承認、またはキャンセルできる場合、PurchaseOrderクラスにはissuePO、approvePOおよびcancelPOメソッドが必要です。 それは、私がオブジェクト指向の基礎として理解している「凝集を最大化する」と「結合を最小化する」という古くからの原則とは関係ないのでしょうか? それに、それはクラスの保守性に役立ちませんか?

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