問題タブ [methodology]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 数学:因数分解
素数を計算する方法と因数分解の方法の詳細は省略します。
なぜわざわざ因数分解するのですか?
そのアプリケーションは何ですか?
vb.net - 引っ越し方法
上り坂の約 5 年前、私のキャリアはかなり順調に進んでいましたが、別居、家族の死、少しの病気により、いくつかの悪いキャリア決定を下すことになり、最終的に主に vb 6 を行う行き止まりの仕事になりました。 30半ばから後半まで終わりましたが、最近休憩を取り、前向きな考え方のvb.net会社と協力し、両手でチャンスをつかみました.5か月になりました
このような場所で多くの時間を過ごしたり、本を読んだりして、物事は順調に進んでいますが、C / マシン コード / VB 5 & 6 のバックグラウンドから来ているので、書いていると、.NET の小さな内部性が失われていることがわかります。たとえば、デリゲートを使用するとは思わないコード、「脳」の VB.NET ジャンプの作成、または私が見るべきトレーニングについてアドバイスを受けている人はいますか (私は金持ちではないことに注意してください)。
御時間ありがとうございます
agile - SDLC のアジャイル対スパイラル モデル
私は、アジャイルはスパイラル モデルのもう 1 つの実装に過ぎないと考えています。私はスパイラルの大きな支持者です (スパイラル モデルは、トップダウンとボトムアップの概念の利点を組み合わせるために、段階的に設計とプロトタイピングの両方の要素を組み合わせたソフトウェア開発プロセスです)。多くのプロジェクトがスパイラルの世界で動作していることを知らずにスパイラルを実装しています。アジャイルが人気を博し始めた日から、スパイラルの概念が少し見過ごされ始めました。複雑なプロジェクトでは、スパイラルが最良の代替手段であると確信していますが、アジャイルとスパイラルの手法の類似点と相違点をよりよく理解したいと思います。違い/類似点を説明できる人はいますか?
.net - Linq の時流に乗っていませんが、linq を使用しない理由は何ですか?
私は少数派のようですが、正直なところ、私は linq に慣れておらず、個人的な開発に何のメリットもありません (メリットがないというわけではなく、私の状況に基づく個人的な意見です)。
私は Web アプリケーション (.net、.net mvc) を構築しており、データ レイヤーの一部をストアド プロシージャに配置するのが大好きです。sprocs について私が気に入っている点の 1 つは、db 全体を生成してスクリプトを作成し、クエリをスキャンして、追加する可能性のある読み取り可能なクエリを高レベルでスキャンできることです。
linq が嫌いな人は、その理由を教えてください。単に知識/学習曲線が不足しているだけなのか、それとも使用しないビジネス ケースがあるのか?
agile - アジャイル ソフトウェア開発方法論の基本的な手順
の基本的な手順はAgile software development
何ですか?
また、アジャイル手法を使用して新しいプロジェクトを開始するにはどうすればよいでしょうか?
methodology - 文芸的プログラミングのスケーリング?
ご挨拶。私は今、Literate Programming を少し見てきましたが、その背後にあるアイデアが気に入っています。基本的には、コードについて小さな紙を書き、設計上の決定事項、おそらくモジュールを囲むコード、モジュールの内部作業などを書き留めます。モジュール、設計上の決定から生じる仮定と結論、潜在的な拡張、これらすべてを tex を使用して適切な方法で書き留めることができます。確かに、最初のポイント: それはドキュメントです。最新の状態に保つ必要がありますが、変更には正当な理由が必要であり、それを書き留めることができるため、それほど悪いことではありません。
しかし、リテレート プログラミングはどのようにしてより大きな規模に拡張できるのでしょうか? 全体として、Literate Programming はまだ単なるテキストです。もちろん、非常に人間が読めるテキストですが、それでもテキストであるため、大規模なシステムを追跡するのは困難です。たとえば、コンパイラの大部分を作り直して、>> を使用し、いくつかの魔法を使用してコンパイル手順を連鎖させました。 " 非常に扱いにくくなり、これを x >> y >> z >> a に変更すると少し改善されましたが、これも限界点にあります。
では、Literate Programming はどのように大規模システムに拡張されるのでしょうか? 誰かがそれをやろうとしていますか?
私の考えでは、LP を使用して、イベント ストリームを使用して相互に通信するコンポーネントを指定し、graphviz のサブセットを使用してこれらすべてをチェーン化することを考えています。ネットからドキュメント (データフロー図) を抽出し、そこからコードを生成することもできるため、これは LP のかなり自然な拡張です。どう思いますか?
――テタ。
tdd - 開発者は TDD に不満を持っています。TDD が本当に問題なのか、それとも初心者の実践者のスキル不足なのか?
(これは TDD のメリットを調査するための質問ではありません。そのような議論の場は他にもあります。事前に感謝します。)
私は、テスト駆動開発や NUnit に対する不満を報告している、この手法の初心者である開発者が多すぎるのを経験してきました。
次のような否定的な意見を耳にします。
「NUnitは苦手です。 1年前に試してみましたが、使い方を忘れてしまいました。代わりに、テスト ハーネスとしてアドホックに書いたばかりのこの Windows フォーム アプリを使用してみましょう。テスト コードはとにかく使い捨てのコードです。違いは?とにかく、私のやり方は過去に十分に機能しました。」
「私は TDD について懸念があります。私たちの最後のプロジェクト (ちなみに、TDDを使用した最初で唯一のプロジェクト経験でした) では、もはや設計が何であるかさえ知りません。」
「これ以上のコード コメントは悪いことですか? 気が狂っていますか? 差し支えなければ、本当にやるべきことがいくつかあります。」(昔から、コメントが多いほど良いコメントであり、コメントが多すぎることはありません。)
初心者が、TDD を使用した初めてのプロジェクトで TDD がおそらく満足のいくように「機能しなかった」と不平を言った場合、それは本当に彼らを失敗させた TDDなのか、それとも開発者自身のスキルがまだ良い結果を得るのに十分ではないのか?
そして、彼らがそれを言って私を嫌うことなく、どうすればそれを伝えることができますか?
問題の核心は、私たちの重要な仕事上の関係を危険にさらすことなく、開発者が新しい開発技術で自分たちの初期の不十分な能力をより正直に評価することを奨励するために、開発者に外交的に何を伝えることができるかということです.
通常、多くの開発者は、最初のプロジェクトの段階で、TDD の多くの重要な要素を十分に活用するための実用的な知識をまだ備えていません。
たとえば、私が話した開発コミュニティの不満を言う人は、次のような典型的なものです。
コードのにおいのリストを見たり覚えたりしようとしたことさえありません。
リファクタリングのカタログを調べようとさえしたことがなく、実際のプロジェクトや学習用のおもちゃのプロジェクトでそれらを実践したこともありません。一部の人々にとっては、リファクタリングを非常にうまく行うために、もっと多くの OOP を学ぶ必要があるかもしれません。リファクタリングには、Visual Studio 2005 の [リファクタリング] メニューに項目として表示される「メソッドの名前変更」と「変数の名前変更」だけではありません。
(リファクタリングを介して) 創発的な設計を使用して実装された実際のプロジェクトを調査したり参加したりしたことはありません。事前に設計を使用してプロジェクト全体を実行することと、コードが書かれた後にのみ単体テストを作成するプロジェクト全体を実行することとの違いを知り、それらのいずれかの間のトレードオフと適用性。
彼らは皆、かつてNUnit を使用していたようで、それを使って何をしたとしても、それは TDD だった、と彼らは考えているようです。NUnit または単体テストの存在は、単純に TDD を意味するものではありませんが、それを知るにはまだ十分に理解していません。
これらは賢い人々です。開発者は賢い人です。なぜなら、それが職業全体への入り口だからです。そうしないと、長時間占領できません。もちろん、彼らがこれらの資料を勉強するためにしばらく努力すれば、それを理解することができました。
方法論やその結果を評価するには、経験と知識の合計が明らかに弱すぎるのに、どうやって方法論が弱いと自分に言い聞かせることができるでしょうか?
それは自己防衛的な行動だと私は信じています。またはそれは怠惰です。Fowler's Refactoring book のカタログからリファクタリングを 3 つ挙げることさえできない場合、またはコードのにおいをいくつか挙げることができない場合、あなたはリファクタリングのランク初心者であり、おそらく TDD 方法論全体と、いわゆる 1または 2 プロジェクトの経験は明らかに十分ではありません。
TDD での成功が決定的に依存しているスキルについてもっと学ぶために必要なことを人々にさせるために、人々に何を言うことができるか、または人々の注意をどの資料に向けることができますか?
- 単体テスト、
- リファクタリング、
- デザインパターン、
- オブジェクト指向の設計と分析?
これらの各トピックに関する本が丸ごとあり、中には非常に優れたものもあります。飲み込みやすい学習テクニックもあるかもしれません。私は模範を示して人々に教えることができますが、私自身が彼らに与える時間は限られています。
さらに、彼らは一緒に行きます。彼らはお互いなしではうまく機能しません。単体テストとリファクタリングは、ピーナッツ バターとゼリーのように連携します。単体テストを grep できない場合は、リファクタリングでまったく良い結果が得られないでしょう!! (まだわからない場合は、理由を尋ねてください。新しい人に喜んで説明します。)
また、私が何を言おうと、それが裏目に出ないようにすることも重要です。
同僚をTDD の概念から遠ざけてはなりません。さらに、同僚を私から遠ざけてはなりません。 私はこれから何年もの間、毎週彼らと一緒に働かなければなりません。
プログラミングの他の面で非常に熟練していることをすでに確立している他の長年の上級開発者を動揺させないことは特に困難です。彼らは過去の業績を当然誇りに思っていますが、彼らのエゴやプログラミングのすべてを熟知しているという自己概念は、感情を傷つけることなく対処することはほとんど不可能です. 一部の上級開発者は、他の人から学ぶべきいくつかの新しいテクニックを知らないことに直面する準備ができていません。上級開発者は、プログラミングに関しては専門家であることに慣れていて快適です。また、TDD や関連する手法やテクノロジに関しては完全に非現実的であっても、専門家として見なされることを要求することがあります。
構造化された自動ユニット テストの記述に関して常駐の「抵抗者」の 1 人を好転させるのにかなりの成功を収めた 1 つの方法は、彼らと 1 対 1 でペア プログラミングを使用することです。ペアプログラミングは、より経験豊富で知識のある実践者の直接的な指導とともに、訓練生にいくつかの実際の例と経験を与えると思います.
しかし、ペアプログラミングだけでは不十分です。彼らが学ぶ必要のあるリファクタリング、コードの匂い、OOP の概念、および OOD&A の概念は他にもたくさんあります。
project-management - スクラム マスターは、制御不能なプロダクト オーナーをどのように「管理」しますか?
私はスクラムを初めて使用し、スプリントの背後にあるチームの概念を理解していますが、ソフトウェア開発に精通していないプロダクト オーナーからの干渉を最小限に抑えるチームの保護者が必要だと思います。あなたの成功は何ですか? また、どのようなホラーストーリーを体験しましたか?
アップデート:
ビジネス プロセスを実装するためのコーディングと、クライアントに適したアーキテクチャの作成との間のバランスを探しています。プロダクト オーナーがビジネス ユニットの出身である場合、データ モデルなどに費やすべき時間についてのガイダンスが必要です。
意味:
「制御不能な」プロダクト所有者とは、通常、時間枠を積極的に設定する一方で、その見積もりを作成する実際の技術的能力を持たないビジネス ユニットの誰かを意味します。通常、この担当者は次のように言います。「来週の運営委員会との次の会議の前に、これらの画面が必要です。そのため、まずそれらの成果物に優先順位を付けます。運営と話し合った後で、データベースに取り組みます。」
みんな素晴らしい答え。良い情報をありがとう。
unit-testing - 実装前にテストを作成しない/作成しないのはいつですか?
「最初にテスト」がどのように機能するかはわかりません。いつ、なぜこのアプローチをとるかについての議論を聞きたいです。
1行の実装を書く前に、テストを書いてモックを作成することをお勧めすることがよくあります。とはいえ、すべての状況に当てはまるわけではないと思わざるを得ません。たとえば、プロトタイプを作成していて、すべてがどのように機能するかまだわからないとします。そのため、必要だと思われる各ステップの例を見つけて、コードに挿入し始めます。最後に、私は自分の理論の証明を手に入れましたが、それほど長くはかかりませんでした. これは本質的に「私のテスト」です。これは単体テストではありませんが、テストです (ほとんどの場合、コンソール アプリです)。
これが私の仕事のやり方です。やりたいことを考えて、やってみようと思います。それが機能する場合は、最終的に戻って単体テストを作成し、回帰をトラップできるようにします。これはあなたが「やるべきこと」とは違うのですか?
agile - 小規模チーム向けのプロジェクト方法論
私の会社では通常、各プロジェクトに 1 ~ 4 人の開発者 / アート ディレクター / コピーライターがいますが、どの方法論を使用することをお勧めしますか? アジャイル?XP?スクラム?他の何か?(基本的に同じ概念のすべてのバリエーションであることはわかっています、はい)