新しいプロジェクトの計画とプログラミングの適切な組み合わせ


10

新しいプロジェクトを開始しようとしています(ゲームですが、それは重要ではありません)。基本的な考えは私の頭の中にありますが、詳細のすべてではありません。

計画せずにプログラミングを始めたくはありませんが、ただやりたいという衝動に真剣に取り組んでいます。私が考えることができる新しい機能がそれを必要とするというだけの理由で、アプリ全体をリファクタリングすることを防ぐために前にいくつかの計画が欲しいです。一方で、今月はやる気を失ってしまうのではないかという不安もあり、数ヶ月(暇)の予定を立てたくない。

私が探しているのは、一方を他方を支配することなく両方を組み合わせる方法です。スクラムの方法でプロジェクトを実現する必要がありますか?ユーザーストーリーを作成してから実現する必要がありますか?機能駆動型で作業する必要がありますか?(私はスクラムと古典的な「コードへの仕様」の方法でいくらかの経験があります。)

更新:「クリックダミー」から始めて、後で機能を実装するのはどうですか?

回答:


5

あなたは正しい軌道に乗っています。何カ月も計画を立てる必要はありませんが、必ず何らかの計画を立てる必要があります。

計画を立てることで、考えを整理し、必要となる可能性のあるテクノロジを特定し、問題点を明確にし、測定可能な目標に分解できるようにするためのロードマップを提供します。

さらに、これがあなたの時間の無駄であることを発見するためだけに数日分の計画をするかもしれません。おそらく、計画を立てている最中に、自分がリーグから抜け出していることや、自分がやろうとしていることをマーケティングできないことに気付くでしょう。この道をたどって、森の中で道に行くだけでなく、糸のようなコードのつるや脳をねじる誤った論理の軌跡に囲まれて森の中で道に迷うのではなく、自分の時間を他のアイデアに再投資できるようにしましょう。ノットに。


ターゲティングプラットフォームは私の毎日の仕事なので、使用したいテクノロジーのほとんどはわかっています。簡単なスクラムと基本的な計画を使用すると思います。したがって、いくつかのバックログから開始して、各反復で計画を立てることができます。
WarrenFaith

「計画」のスペルを間違えます。私はあなたのコメントを編集できないので指摘したと思いました:)しかし、はい、私はスクラムは柔軟性を維持し、プロジェクトを継続する努力に値するかどうかを決定する機会を与えてくれる優れたアプローチだと思います。
jmort253 2011年

Ooドイツ語では、その逆です。1つのnで計画し、2つのmでプログラミングします...:Dありがとうございます。
WarrenFaith

@WarrenFaith-すみません!それが出てきた私の民族中心主義です!私の間違いを指摘してくれてありがとう;)
jmort253

11

実行可能な最低限の製品を計画し、それを実装します。次に、ユーザーの意見に耳を傾け、次の論理的な拡張を計画し、それを実装します。繰り返す。


3
....あなたがクールだと思う何かのアイデアがあるときはいつでも、そのアイデアをスクラムバックログに書き留めてください。ただし、実行可能な最小限の製品が完成するまで実装しないでください。
k3b 2011年

主な問題はまだ私がそれをどのくらい深く計画すべきかです。あなたも私にそのアドバイスを与えることができれば、あなたは答えを受け入れてもらいました。
WarrenFaith 2011年

1
@WarrenFaith:機能->>ストーリー->>テストケース。
Steven A. Lowe、

4

プログラムの計画と設計にどれだけの時間を費やしても、とにかく常にその一部を書き直すことになります。それは重力のようなものであり、その存在を否定する賢いものではありません。

リファクタリングは開発の通常の部分であり、いつ実行するかを決定するだけの問題であることを理解する必要があります。長い間待つと、大量のスパゲッティになってしまい、完全な書き直しを求めます。面白くない。

私の提案は少し計画することですが、できるだけ早くコーディングを開始し、リファクタリング、リファクタリング、リファクタリングを行って、コードを形に保ちます。DRY原理(自分を繰り返さないでください)は、そのための優れた指標です。


お返事をありがとうございます。リファクタリングは珍しいことではありませんが、プレーニングの失敗によるリファクタリングを防ぎたくありません。
WarrenFaith 2011年

@ウォーレン-計画の失敗はリファクタリングを妨げません。ソリューションをコンピューターでコーディングするか、頭または紙でコーディングすることができます。どちらも効果がないと思います。後で変更することを知って、コーディングを開始します。
kevin cline、2011年

@kevin cline:わかりました。既存のコードをリファクタリングして新機能や改良点を作り、アプリ全体を新しい機能向けに書き直してみましょう。私は2番目ではない、本当に、最初に一緒に暮らすことができます。..
WarrenFaith

@WarrenFaith:コードがタイトで形が整っている限り、書き換えを回避できるはずです。私がリライトを見たのは、システムが泥の大玉(リファクタリングなし)、または根本的な技術変更(プラットフォームの変更)になったときだけです。
マーティンウィックマン

3

私がこのポジションにいるとき、私は時々TDD(テスト駆動開発)を利用して、私が開発しているシステムの最も複雑な部分のいくつかのテストの計画を開始します。あるいは、最も複雑な領域について、いくつかの高レベルの疑似コードをまとめることもできます。このプロセスにより、緩やかな行動計画が得られ、最も時間がかかる可能性が高い領域を特定するのに役立ちます。

私にとって、このアプローチは、コーディングと計画の中間にあるため機能します。テストのアイデアや擬似コードを作成したら、各論理セクションを処理してコードを実装できます。私は、提案されたソリューションの最も難しい部分に最初に取り組むことがよくあります。これは、通常、最も難しい部分はアプリケーションのコア機能であり、いつでもベルやホイッスルを遅らせることができるためです。

ほとんどのコードは頭の中にあり、プログラムに入る準備ができているとコメントしているので、このアプローチを使用すると、システム全体で頭を悩ませることなく、各セクションに集中できます。

より簡潔に要約すると、「最も難しい部分に最初に取り組み、分割して征服し、疑似コードやTDD計画を使用して」と言うことができます。


私はTDDのファンではありませんが、とにかく感謝します!
WarrenFaith

私は必ずしもTDDを使用すると言っているわけではありません。私のポイントは、それが私のコードを「計画する」ための構造として使用するものであるということでした。そうすれば、コードをすぐに作成するのではなく、実際のコーディングから少し離れている大量のドキュメント/プロジェクト計画を作成するのに長い時間を費やしません。幸せな媒体を見つけることです。原則としてペンと紙でも同じことができます。また、すべてをテストするのではなく、より複雑な領域のみをテストすることも指摘しておきます。
BradB、2011年

3

コードをモジュール化してみてください。あなたが計画している他のものはすべて、次の反復中に捨てられる可能性があります。


2

少なくともあなたの考えを書き留めておくことをお勧めします。プロジェクトの規模によっては、多くの正式な計画が不要になる場合があります。ただし、それが非常に大きい場合は、頭痛を軽減し、さらに詳細な計画を立てるために数日を費やすことをお勧めします。

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