ソフトウェア工学

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

12
テスト駆動開発(TDD)は実際に実際のプロジェクトに利益をもたらしましたか?
コーディングは初めてではありません。私は今15年以上にわたって(まじめに)コーディングしてきました。私はいつも自分のコードに対していくつかのテストを行ってきました。ただし、ここ数か月にわたって、Ruby on Railsを使用してテスト駆動設計/開発(TDD)を学んでいます。これまでのところ、私は利益を見ていません。 いくつかのテストを書くことにはいくつかの利点がありますが、ごくわずかです。そして、最初にテストを書くというアイデアは好きですが、実際のコードをデバッグするよりも、テストのデバッグに時間を費やして、自分の本当の意味を伝えるようにします。これはおそらく、テストコードがテストするコードよりもかなり複雑になることが多いためです。これが利用可能なツール(この場合はRSpec)に不慣れであることを願っています。 ただし、この時点で、失望のレベルと期待を裏切るパフォーマンスの欠如が許容できないレベルを超えています。これまでのところ、TDDから私が見ている唯一の価値は、他のプロジェクト/ファイルのテンプレートとして機能するRSpecファイルの成長するライブラリです。これは実際のプロジェクトコードファイルよりもはるかに有用ではなく、おそらくあまり有用ではありません。 入手可能な文献を読むと、TDDは前もって大きな時間を費やしているように見えますが、最終的には報われます。私はただ疑問に思っています、実世界の例はありますか?この大きな不満は現実の世界で報われるのでしょうか? ここのどこかでこの質問を見逃さなかったことを本当に願っています。検索しましたが、この時点ですべての質問/回答は数年前のものです。TDDについて悪いことを言う開発者を見つけたのはめったにありませんでした。しかし、特定の実世界の例を指し示している人はいないようです。2011年にコードをデバッグしている人は、完全な単体テストスイートを用意してくれてありがとう(コメントは2008年に作成されたと思います)という答えを1つ読みました。 だから、私は、これらすべての年月の後に、ペイオフが本物であることを示す例が最終的にありますか?TDDを使用して設計/開発され、単体テストの完全なセットを持ち、実際に見返りを感じたコードを実際に継承または戻した人はいますか?それとも、テストが何をテストしているのか(そしてなぜそれが重要だったのか)を把握しようとして非常に多くの時間を費やしていたので、コードを掘り下げて掘り下げましたか?

7
新規採用者の生活を快適にする方法を教えてください。[閉まっている]
残念ながら、レガシーの理由でドキュメントがほとんどないソフトウェアチームのシニアメンバーとして、新入社員を快適にするためにできることは何ですか? 私は、特定の欠陥/機能要求についての人とのデバッグセッションを計画しており、コードベースに精通させています。ただし、コードベースは実に大きく、この方法で人に公開できるのは一定量のコードだけです。 新規採用者が最近の卒業生または経験豊富な専門家である場合のいずれかの場合の提案を探しています。

10
ソロ開発者に最適なバージョン管理習慣ですか?
私は自分の仕事で唯一の開発者であり、VCSの利点を理解しています。良い習慣に固執するのは難しいと思います。現時点では、主にWebアプリを開発するためにgitを使用しています(私の仕事のためにオープンソース化されることはありません)。 私の現在のワークフローは、開発サイトに多くの変更を加え、テストし、修正し、テストし、満足して変更をコミットしてから、コミットをライブサイトにプッシュします(したがって、大きな新しい変更に取り組んでいる場合、週に1回コミットしますが、私のIDEにはコミットされていないものの良い取り消し履歴があります)。 基本的に、マシンを切り替えるときにだけgitを使用します(たとえば、devコンピューターを自宅のdevコンピューターに移動するか、ライブコンピューターに移動します)が、日中は実際には利点がありません。これにより、変更の長いランドリーリストが作成されます(また、コミットごとに適切なメッセージを見つけるのに苦労しています。急いでいるときはいつでも、「管理者とテンプレートのその他の変更」などのくだらないメッセージを残す傾向があります)。 どのくらいの頻度でコミットする必要がありますか?1行の変更ごとにコミットを取得する必要がありますか?テストの前にコミットする必要があります(たとえば、少なくとも構文/コンパイルエラーのためにコミットしてから、完全に元に戻す必要があります。アイデアが機能しなかった、またはメッセージが嘘であるため)。 まだ新鮮なうちに夕食の仕事をやめる前に、毎朝/午後に必ずコミットする必要がありますか?悪いVCS習慣を持つことで私が見逃しているものは何ですか?

8
ソフトウェアエンジニアになることのプレッシャーは何ですか?[閉まっている]
私はソフトウェアエンジニアリングのキャリアを考えていますが、仕事を探す前に、特にプレッシャーの中で何が期待できるかを知りたいと思いました。これが私の最初のプログラミングの仕事になるので(エントリーレベルを探しています)、プログラマーとしてはまだ成熟していません。 私の質問は、これらの仕事のプレッシャーはどのようなものですか?圧力はどれくらい高くなりますか? 上司があなたに課題を与えて、2週間で期限が来るが、3時間かかる場合、解雇されますか? テクノロジーの詳細を学び、コーディングスキルを開発して成長する時間を与えられていますか、それを既に知っていてプロジェクトを燃やすことが期待されていますか? コードに問題がある場合は、自分でコードを処理して独立して作業することを期待されていますか、またはスタックしている場合は他の人に助けを求めることができますか? 締め切りに間に合わせるために多くの深夜に参加する予定ですか? これは会社にも依存することはわかっていますが、ソフトウェア開発者/プログラマーになるなどのプレッシャーの可能性について専門的な見識が必要でした。他の仕事にもプレッシャーがあることも知っています。ソフトウェアエンジニアリングに特有のプレッシャーを知りたいだけです。 私がこの質問をする理由は、私は一度プログラミングの悪い経験があり、これらの仕事のほとんどが同じかどうか知りたかったからです。 ソフトウェアエンジニアリング/開発/プログラミングが扱いたくない厳しいプレッシャーである場合、Web開発、システム管理などのような他のタイプの開発はありますか? 読んでくれてありがとう、みんなの考えを聞くのを楽しみにしています。

13
支払いを保護するために、顧客がホストする環境で「キルスイッチ」?
難しいクライアントがいます。すべての法案は議論され、議論され、各メールは弁護士の目で解析され(彼は弁護士であるため)、支払いを回避する方法を探しています。私の側の寛大さの量は往復しません。 クライアントは現在、請求書の60%を未払い(これらはサインオフした請求書)であ​​り、かなりの金額です。どうやってこの段階にたどり着いたかは、確かに私自身の素朴なものです。 クライアントは独自のコードをホストしているため、ホスティングを停止して支払いを要求することはできません。 請求書が支払われない限り、顧客コードをシャットダウンするためにリモート「キルスイッチ」をインストールすることは合法ですか?

10
Webサイト(これでも)が「メンテナンスのためにダウン」することがあるのはなぜですか?
私は個人的にこれをやったことがありません。開発サーバーで開発を行う場合、なぜ実稼働サイトをシャットダウンする必要があるのでしょうか? 私はいつもこれについて疑問に思っていました。 この間に彼らは何をしていて、何をする必要がありますか?

11
インタビューで任意のシステムを設計するにはどうすればよいですか?[閉まっている]
Tech Interviewでよくある質問は、特定のシステム、通常は会社の既存の製品を設計することです。たとえば、「Googleドキュメントの設計」。 そのような質問に対して期待される答えは何ですか?つまり、そのようなシステムは確かに複雑なデザインであり、インタビューの範囲を超えています。インタビュアーはこのような短い時間に何を期待していますか?
36 interview 

4
Javascriptを使用したデザインパターンの重要性、NodeJsなど
Javascriptは今後数年間でWebのユビキタスプログラミング言語であるように思われ、新しいフレームワークが5分ごとにポップアップし、イベント駆動型プログラミングがサーバー側とクライアント側の両方をリードしています。 Javascript開発者として、従来のデザインパターンを他の言語/環境よりも重要と考えていますか? Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付け、それらがJavascript開発にどのように役立ったかの例を示してください。

14
コンサルタントとスタッフプログラマー間の関係を改善する方法
私は今、小さなソフトウェアコンサルティング会社のコンサルタントとしてかなり長い間働いています。通常のビジネスモデルはスタッフの増強ではありませんが、何らかのソリューションの構築に支援を必要とするクライアントを見つけ、そのソリューションを構築し、既存のITスタッフと協力し、そのサポートに関与するすべてをトレーニングできるチームを派遣しますソリューション、次の仕事に進みます。もちろん、継続的なサポートが必要な場合は、引き続きサポートします。私たちはこの分野で高い評価を得ており、提供するソリューションの実装に非常に成功しています。 しかし、私はほとんどのプロジェクトに共通のテーマがあることに気付きました。現場に着くと、通常、チームと現在クライアントにいる多くのITスタッフとの間に「ストレスのある」関係があります。私たちの到着について多少の不安があるかもしれず、私たちが周りにいるときに防御ができることを完全に理解しています。多くの人々は理解しており、一緒に仕事をするのは簡単ですが、通常、私たちとはうまく働かず、多くの点でプロジェクトのリスクになりかねない人がいます。 私たちは心を開き、良い態度で入ろうとし、ar慢になったり断定したりしないようにします。通常、クリーンアップが混乱しているときに展開されますが、バインドされた状態になった決定が行われた理由があることを理解しています...そのため、次のステップを決定して先に進みます。 私の質問はこれです-コンサルタントを抱えているITスタッフやプログラマーから聞きたいのですが、コンサルタントが行うことでネガティブな感情や態度を引き起こすことは何ですか?最初からだけでなく、プロジェクトが進むにつれて、関係をより良くするために私たちは何ができますか?

12
関数型プログラミング入門のスキームvs Haskell?
私はCおよびC#でのプログラミングに満足しており、将来C ++を検討します。関数型プログラミングを別のプログラミングパラダイムとして検討することに興味があるかもしれません。私はこれを楽しみのためにやっています。私の仕事はコンピュータープログラミングに関係しておらず、大学のコンピューターサイエンスコースでかなり早い時期に教えられた関数型プログラミングの使用にやや影響を受けています。ラムダ計算は確かに私の数学的な能力を超えていますが、関数型プログラミングを処理できると思います。 HaskellとSchemeのどちらが関数型プログラミングの入門として役立つでしょうか?私はemacsをテキストエディタとして使用しますが、Emacs Lispの学習を必要とする将来、より簡単に設定できるようにしたいと考えています。しかし、私の理解では、Emacs LispはSchemeとはかなり異なり、機能的というよりも手続き的です。 Schemeを追求すれば、すでに購入した「The Little Schemer」の本を使用している可能性があります(限定的なリーフィングから少し奇妙に思えます)。または、私がHaskellを追求する場合、「Learn Good a Haskell for Great Good」を使用します。また、チャンネル9でErik Meijer博士によるHaskellの紹介ビデオも見ました。 提案、フィードバック、または入力を歓迎します。 ありがとう。 PS BTW C#開発に使用しているVisual Studio 2010があるため、F#にもアクセスできますが、言語を選択するための主要な基準とは思われません。

6
優秀なプログラマーがなぜNinjaと呼ばれるのですか?[閉まっている]
忍者プログラマーはどのように定義されていますか?それが単なる経験豊富な開発者である場合、それを説明するより良い方法は本当にありませんか?忍者は、開発者を自慢の妄想で引き付けるように設計された幼稚なマーケティング策略のように聞こえます。それとも何か不足していますか?特に、比較を有効にするプログラマーに必要な忍者の品質を知りたい(クールネスファクター以外)? 忍者の特性とアジャイル開発のいくつかの良い比較を行うこの記事を見つけました。しかし、私は忍者という言葉を雇用目的で使った人たちと、その背後にある動機について聞いてみたいと思います。 更新:議論の両側にいくつかの良い点が挙げられました。これらをブログ投稿で要約しようとしました。JBの回答を受け入れたものとして選択しました。これは、比較を行うためのすべての正当な理由を要約しているためです。

6
ストーリーポイントとは何ですか?
ここでストーリーポイントをアジャイル開発に使用し始めていますが、説明するのが難しく、またそれらが何であるかについての明確な答えも見つけることができません。私ができる最善のことは、他のサイト(http://blog.mountaingoatsoftware.com/tag/story-pointsなど)をポイントし、それらが何であるかについて漠然とした一般化を与えることです。私は、他の人が使用するのに役立ついくつかの使用例を含む良い説明を探しています。ストーリーポイントを説明するのに役立つリソースはありますか?

12
燃え尽きた5年間を新しい雇用者に説明する方法は?[閉まっている]
5年前、私は長期に集中する能力を失い、したがって、プロの効率でコーディングする能力を失いました。 私はそれがなぜ起こったのかを知っており、それがどのように起こったのかを理解し、冷静でリラックスした焦点を再現できることに加えて、当時の全体的な状況に心が傾いた元の(子供時代に根ざした)理由を克服しました; 私の理解は、心理学者が私に言った言葉に根ざしていない、私は実際にそれらを直接手探りした。私は生産性を大幅に向上させることができると確信しています。おそらく、事前バーンアウトよりもさらにそうです。 また、コードへの興味を失うことも、自分の能力を取り戻そうとすることから外れることもありませんでした。私は知識を最新に保ちました(コーディングに関連することを常に比較的簡単に学ぶことができ、それらを適用するだけではありません)、したがって、その年の平均LOCカウントが非常に小さい場合でも、以前よりも優れた開発者であると言えます低い。 一方、今では、仕事よりもドールでの時間を多く含む伝記があります。 雇用主として、私の申請にチャンスを与えるためにあなたを納得させるものは何ですか?トピック全体を除外する必要があるとは思わない。 編集:私は子供の頃から原因を探し始めていなかったと付け加えるべきだと思います。それが原因を私に示した解決策でした。残念ながら、会社を修正するために最善を尽くしていません(退職してから1年後に完全に解散しました)は、幼少期に、ある時点で、親の関係の修正をあきらめて、彼らが完全に絶望的なケースである代わりに、共感で私自身の失敗にそれを、そして私は子供時代に言及することなくそれを説明する方法を本当に見ません。とはいえ、涙を流すことなく完全にそれを言うことができます。 そうは言っても、はい、私はあなたに雇用主ではなく友人として書いていることを知っています、それが私がワンタイムアカウントを使用してあなたに不信を示す理由です.oO(...) はい、どこにでも応募する前に、OSSコードをリリースする予定です。 編集2:私はドイツ人であり、ドイツの会社に応募するつもりなので、「創造的な真実」は間違いなく選択肢ではありません。 選ばれた答えについて:ピエールよりもレネシスを選んだのは、後者がやる気を起こさせ、それを乗り越えて社会的スキルのセクションを強化するためのポイントを与えるのに素晴らしい仕事をしていたので、レネシスは実際に私の質問に答えたからです関連する主要な要因を合計することにより。

10
マジックナンバーの削除:「いいえ」と言うタイミングはいつですか?
マジックナンバー(ハードコードされた値)がプログラムに大混乱をもたらす可能性があることは誰もが知っています。特にコメントのないコードセクションを変更するときは、どこに線を引きますか? たとえば、2日間の秒数を計算する関数がある場合、置き換えますか seconds = num_days * 24 * 60 * 60 と seconds = num_days * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE どの時点で、ハードコーディングされた値の意味が完全に明らかであると判断し、そのままにしておくのですか?


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