タグ付けされた質問 「development-process」

ソフトウェア開発のプロセスに関する質問。

18
単体テストは本当に便利ですか?[閉まっている]
私はちょうどCSの学位を取得して卒業しましたが、現在はジュニア.NET開発者(C#、ASP.NET、およびWebフォーム)として仕事をしています。私がまだ大学にいたとき、ユニットテストの主題はカバーされましたが、その利点は実際には見られませんでした。コードのブロックが使用に適しているかどうかを判断する、つまり、何をすべきかを理解しています。しかし、私は実際に単体テストを書く必要がなかったし、その必要性を感じたこともありませんでした。 既に述べたように、私は通常ASP.NET Webフォームを使用して開発しており、最近、いくつかの単体テストを作成することを考えています。しかし、これについていくつか質問があります。 ユニットテストは、しばしば「モック」を書くことで行われることを読みました。私はこの概念を理解していますが、完全に動的なWebサイトのモックをどのように作成し、ほとんどすべてがデータベースからのデータに依存するかを理解することはできません。たとえば、私はItemDataBoundイベントなどを持っているリピーターをたくさん使用しています(これも「不明」なデータに依存します)。 質問番号1:ASP.NET Webフォームのユニットテストを書くことは頻繁に行われますが、もしそうなら:「動的環境」問題をどのように解決すればよいですか? 私が開発しているとき、私は多くの試行錯誤を繰り返します。だからといって、自分が何をしているのかわからないというわけではありませんが、通常はコードを書いて、Ctrl F5何が起こるかを確認します。ほとんどの場合、このアプローチは仕事をしますが、時々、私は少し無知であると感じます(私の小さな経験のため)。私も時々このように多くの時間を無駄にします。 質問番号2:ユニットテストの書き始めをアドバイスしてくれませんか?実際の実装には役立つかもしれないと思いますが、それでも私は遅くなるかもしれないと感じています。

9
ビルドスクリプトの利点は何ですか?
私のプログラミングのキャリアのほとんどで、実行可能なプログラムを作成するために使用しているIDEで「ビルド/コンパイル/実行」コマンドを使用しました。これは1つのボタンで、非常に簡単です。ただし、さまざまな言語やフレームワークについて詳しく知ると、プロジェクトを実行するための「ビルドスクリプト」(ANT、Maven、Gradleなど)の話がどんどん増えています。これらの私の理解は、それらが設定の詳細を指定するコンパイラ/リンカー/魔法のプログラムメーカーへの指示であるということです-細目。 学校に戻ってメイクファイルを書いたことを覚えていますが、そのとき特別な利点はありませんでした(便利な「ビルド」ボタンのあるIDEが存在しないUnixターミナルで書くときにのみ使用しました)。それ以外にも、ビルドスクリプトがプログラムを作成するだけでなく、ホストマシンに関係なくユニットテストを実行し、リソースを保護する方法を説明する他の質問があります。 ビルドスクリプトは開発者として理解することが重要であるという感覚を揺るがすことはできませんが、意味のある説明が欲しいです。なぜビルドスクリプトを使用/作成する必要があるのですか? Build ScriptとBuild Serverの責任は、より広い範囲での役割について説明しています。IDEの「ビルド/実行」コマンドまたは同様の単​​純なメソッドに対して、ビルドスクリプトが提供する特定の利点を探しています。

10
initialize(またはinit)の反対は何ですか?[閉まっている]
この用語はメソッド名として使用されます。このメソッドは、ユーザーインターフェイスの一部が非表示(または削除)になったときに呼び出され、値をデフォルトにリセットし、使用されなくなったオブジェクトを破棄するために使用されます。 可能な名前は次のとおりです。release、remove、dispose、clearなど。 どちらが最も適切だと思いますか?

10
同僚にユニットテストを書くよう動機付ける方法は?[閉まっている]
私たちは約5年間生産されている大型製品に取り組んでいます。コードベースは動作しています。あまりよくありませんが、機能しています。新機能は実稼働環境に投入され、小さなQAでテストされます。バグは修正されています。しかし、私以外の誰もユニットテストを書いていません。この特別なバグ(テストケース)が二度と発生しないことを保証するために、単体テストを記述してバグを「追跡」する力を使用する人はいません。 私は経営陣と話しました。開発者と話しました。会社全体の全員と話をしました。みんな言う:「そう、もっとユニットテストを書かなければならない!」それは約一年前でした。それ以来、コミット前のコードレビュー(Gerrit)と継続的インテグレーション(Jenkins)の導入を強制しています。 ユニットテストについていくつかの会議を開催し、ユニットテストを書くことの利点も示しました。しかし、誰も興味がないようです。 Q1:同僚に単体テストを書くように動機付けるにはどうすればよいですか? Q2:個人コードの品質基準を遵守する意欲を維持するにはどうすればよいですか?(時にはイライラすることがあります!) PS:いくつかのイライラする事実(1年で到達): 単体テスト:1693 合計「サンプル単体テスト」:約50 完了:1521 編集:私はあまりにも期待していますか?その最初の職場であり、ベストを尽くそうとしています。 編集2:すべての答えに基づいて、私は自分のために小さなチェックリストを作成しました。私はプライベートで2人の開発者と話をしました。 そのうちの1人は、テラスティンが言ったように、彼がユニットテストに本当に不快であると私に言った。彼は「もっとプロフェッショナルになりたい」と言ったが、キックスタートが必要だ。彼はまた、すべての開発者とのユニットテスト会議(約9〜11日)は良かったと言いましたが、あまりにも混雑していました。えー 批評家もいますが、それから学びます。(tdd kataミーティングに関する以下の回答を参照してください!) もう1人は、単体テストの作成には興味がないと言いました。彼は自分の仕事が給料に十分であると考えています。彼はそれ以上の努力をしたくありません。私は全く言葉を失いました。典型的な9-5「労働者」。 来週は他の開発者と話をします。 素晴らしい回答(これまでのところ)とサポートに感謝します。ほんとうにありがとう!私は多くを学びました、ありがとうございました!

14
プログラムをゼロから完全に再構築した場合、ずっと改善したいという気持ちを常に避けることができますか?[閉まっている]
私はかなりの量のコーディングを学びましたが、それは常に科学環境(コンピューターサイエンスではない)で行われ、誰も私を正しい方向に導くことなく完全に独学で学びました。したがって、私のコーディングの旅は...面倒でした。ある種のプログラムを構築するたびに、最終的には、はるかにエレガントに、はるかに効率的に、そしてはるかに柔軟性があり、今後の管理が容易な方法でそれを実現できたことに気付きました。状況によっては、実際に戻って一から物を作り直したことがありますが、通常これは実際には実行できません。これまでの私のプログラムのほとんどは比較的小さいものでしたが、何かを作成するたびに大きなプログラムを完全に書き換えることは非常に面倒です。 私はただこれが普通の経験なのだろうか?そうでない場合、これをどのように防止しますか?事前に計画を立ててみましたが、コードを打ち出すまですべてを実際に予測することはできません。

26
数学はプログラミングとどう関係しますか?[閉まっている]
ソフトウェア開発の卒業証書を始めたばかりです。今、私たちは基本的なJavaなどから始めています(そのため、あなたは言うかもしれません)。 数学はコーディングに関係していると聞き続けていますが、それはどうですか?数学とプログラミングがどのように連携するか、または互いに依存していることを示す一般的な例は何ですか? 私は自分の質問があいまいであることをおizeびします。コードモンキーの学生として踏み込んでいる世界の大まかな考えをつかみ始めているところです...

9
過剰な思考の発達
私は1年半の間アプリ開発者として働いてきました(長くは知りません)し、最初の大きなプロジェクトを与えられました。 言うまでもなく、それは非常にスムーズに進まなかったので、プロジェクトに携わる上級プログラマーにアプローチ方法についてアドバイスを求めました。 彼は、私が目の前のタスクについて思い切って考えすぎていた、そしてデザインパターンを考えるのに時間をかけすぎてしまう前にこの規模のプロジェクトに取り組んだことがなかったからだと言った。彼の賢明な言葉で、彼は私に、「F * ck the future、build for now」と言った。 これは、プログラマーがこのようなプロジェクトに取り組む際に一般的にフォローする傾向ですか?たとえば、概念実証モデルの実行を求められた場合、できるだけ早く実行可能な例を破壊するのが一般的な傾向ですか? 編集:これがきっかけとなった議論を踏まえて、この状況は非常に極端であることに言及したいと思います:私たちがコントロールできない要因のために非常に厳しい期限があります(つまり、私たちが目指している市場は興味を失います「彼らに何かを見せないでください」と彼のアドバイスは、この特定のタスクに非常に効果的であることが証明されました。

17
私のネガティブなインターンシップの経験は現実の世界を代表していますか?[閉まっている]
インターンとしての私の現在の経験が実際の業界の代表であるかどうか、私は興味があります。 背景として、私は2つのコンピューティング専攻と主要な大学の数学専攻の大部分を経験しています。私はすべてのクラスをエースし、それらすべてを崇拝してきたので、私はプログラミングがひどくないと思いたいです。私は大手ソフトウェア会社の1つとインターンシップを取得しましたが、途中でコードの品質が非常に低いことにショックを受けました。コメントは存在せず、すべてスパゲッティコードであり、間違っている可能性のあるものはすべてさらに悪いものです。私はたくさんの個別指導/テイニングを行ったので、悪いコードを読むことに非常に慣れていますが、私が見ている主要な業界製品はそれのすべてに勝っています。私は1日10〜12時間働いていますが、どこにでも行くような気がしません。文書化されていないAPIを見つけようとしたり、(完全に文書化されていない)製品のその他の部分の動作を決定しようとする無限の時間。私はこれまで毎日仕事を嫌う仕事を辞めてきましたが、これが私の人生の残りの部分であるかどうかを必死に知りたいです。 インターンシップに短いストローを描いたのか(馬鹿げた大きな給料は、それが低品質のポジションではないことを意味します)、またはこれは現実の世界のようなものですか?

27
開発者に自分の作業をテストさせる/させない理由
製品が生産される前の最後のステップとして開発者が自分の作品をテストできるようにするのは悪い考えである理由についていくつかの議論を集めたいと思います。 、ほとんどの人が他のことで忙しすぎて、プログラムのその部分に別の人を慣れさせる時間がないという議論は要約されました-それは非常に専門的なソフトウェアです)。 この場合のテスト計画はありますが(常にではありませんが)、テストされた変更を行わなかった人が実際に最終テストを行うことを非常に支持しています。ですから、次回議論する際に持ち出せる議論の良いしっかりしたリストを提供していただけないかとお願いしています。または、特にテストする正式なテストケースがある場合にこれが完全に問題ないと考える場合に、反論を提供するために。

15
開発者はバグ追跡システムにバグを入力する必要がありますか?
開発中(機能またはバグ修正のいずれか)、私が作業しているものに直接関連しないバグを発見することがあります。その状況で私は何をすべきか。修正するだけですか?後で修正することを忘れないでください。どこかに書き留めますか?それともバグ追跡システムに入力しますか? 私は通常それをバグ追跡システムに入力し、プロセス自体を再生させます(つまり、トリアージング、割り当てなど)。しかし、他の開発者がバグを入力することはほとんどありません。(何故ですか?)

7
プログラムを開発中からリリースにどのように移行しますか?
ある時点で、プログラムが開発中です。機能は常に追加、削除、または変更されています。すべてのバージョンはプロトタイプにすぎません。ですから、その時点で非常にきれいなコードを書くことに時間を無駄にしないのは、何かがいつまで続くかわからないからです。もちろん、コードの品質を特定の標準に保つよう努めていますが、時間は常に問題です。 次に、プログラムが終了し、意思決定者が「それでいい」と言うところまで来ます。私はこの時点で動作するプロトタイプを持っていますが、内部のコードは開発フェーズの前後で少し面倒です。テスト/最終デバッグを開始することが期待されていますが、メンテナンスなどを容易にする適切なアーキテクチャを提供するために、なんらかの方法でクリーンアップおよび/または書き直すべきであると言っています。 ひとたびテストされ承認されたら、その時点で書き直すことは意味がありません。定期的に「完成した」プロトタイプを使用してそこに立ち、テスト中にバグが発生します。これは、開発プロセス全体の結果であるスマートでないコーディングの結果であることがわかります。私はテストの最中であり、バグ修正は書き直しになるでしょう...それは混乱です! より良い/教科書的な方法があります、私は確信しています。しかし、私はすべてが教科書ではない実際の職場環境で働かなければなりません。 それでは、どのように作業中のプロトタイプを安定したコードベースを備えたリリースバージョンに移行するのですか?たぶん、開発が完了したと考えるべきではなく、実際にクリーンアップフェーズと見なすべきです...わかりません。ここで助けが必要です。 編集 いくつかのことを明確にしたいと思います。 私はコードをクリーンで読みやすいコードの前後ではなく、100%実行しています。しかし、私はまた、物事を成し遂げなければならず、コードの美しさをすべてきれいで輝くように夢見ることはできません。妥協点を見つけなければなりません。 多くの場合、新しい機能は実際に試してみて、このようなものを実装する意味があるかどうかを確認したいものです。(特にモバイルアプリでは、実際のデバイスで実際のルックアンドフィールを取得するため)最初の「見てみよう」の繰り返しで(imho)があまり多くの作業を正当化しないのは小さなものです。ただし、このtech.debtを支払うときに疑問が生じることがありますか?それがこの質問のすべてです。 機能の半分が1日後に削除されることがわかっている場合(今までの会社での十分な経験)、私の問題にアプローチする最善の方法は、それでもすべてをきれいに書くために余分な時間を費やすことであると信じることは本当に難しいと思いますそのほとんどはまもなく削除されます。物事が固まったら一度大きなクリーンアップをすれば時間を節約できると感じているので、私の質問です。

13
私の上司は、「ここでは発明されていません」という悪いケースを抱えています[非公開]
私の部門は、顧客データをデータベーススキーマに変換して、ソフトウェアを使用できるようにすることを専門としています。 IDataReader現時点では、99%の時間がかかるC#アプリケーションがあり、SqlDataReaderクリーニングとマッピングを実行してDataRowオブジェクトSqlBulkCopyに挿入し、a を使用してデータベースに挿入しています。 場合によっては(特にソースデータベースにvarbinaryオブジェクトとして画像が含まれている場合)、このプロセスはサーバーからアプリへのSQL転送で完全に停止し、その後すぐに向きを変えてサーバーに戻ることができます。 変換の一部をSSISパッケージとして書き直せば、大幅にスピードアップできると思います。しかし、私が直面し続ける最大の石垣は、上司がNot Invented Hereのように押し返し、「MicrosoftがSSISのサポートを終了したらどうなるでしょうか。この廃止されたコードはすべて手に入れられます。」 「もし彼らがその機能を削除したら...」を見つけたのはこれが初めてではありません。上司からの答え。古い方法で変換を記述したり、SSISを自己学習したり、利点を実証/テストする新しい方法を記述したりする時間がありません(SSISを使用したことがないため、使用方法を学習する必要があります)。 この状況ではどうすればよいですか?新しいテクノロジーの推進を停止しますか?彼が部門を去るまで待ってください(私は彼の後の部門で2番目にシニアの人ですが、彼が辞める/退職するまでに何年もかかる可能性があります)?彼がサードパーティのツールを恐れないようにする新しい方法を見つけましたか?

12
非プログラマーに開発プロセスを理解させる
主にプログラミング会社ではない会社のためにプロジェクトを開始するとき、期待の1つは、すべてのバグのない完成した製品があり、必要なすべてをすぐに行うことです。ただし、そうなることはめったにありません。 期待を管理し、非プログラマーにソフトウェア開発が他のタイプの製品開発とどのように異なるかを説明するいくつかの方法は何ですか?

25
率直に言って、カウボーイコーディングが好きですか?[閉まっている]
アジャイル、ウォーターフォール、RUPなど、政治的に正しい方法論を擁護するほとんどのプログラマー。それらの一部は方法論に従いますが、すべてではありません。率直に言って、方法論を選択できれば、確かに主流の「正しい」方法論に行くのでしょうか、それともカウボーイプログラミングのような「より簡単な」方法論を好むでしょうか。どうして? 私はそれが依存することを知っています。いつ使用するか説明してください。カウボーイコーディングにはどのような利点がありますか。 ウィキペディアでカウボーイコーディングについて参照してください

17
業界で働くとき、big-Oは本当に関連性がありますか?
私が行ったすべてのインタビューで、big-O表記を含む複雑さの数学的分析についてクイズを受けました。 big-O分析は、業界の開発にどの程度関連していますか?どのくらいの頻度でそれを実際に使用しますか?また、問題に対する研ぎ澄まされた考え方を持つことはどのくらい必要ですか?

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