私が持っているすべてが大きなアイデアである場合、大規模なプロジェクトを開始する手順は何ですか?[閉まっている]


49

私はコンピューター工学の学生です。大きなプロジェクトをどのように処理できるか考えてきました。より効率的かつ効果的な方法で目標を達成するための最初のステップは何ですか?

プロジェクトを思いついたとき、どのようにそのプロジェクトに取り組み始めるべきかわかりません。多くの場合、私はそれを無視します。ただし、プロジェクトのアイデアはもう無視したくありません。

今、私はあなたのすべてに尋ねています、誰でも彼/彼女の経験を共有できますか?私が持っているすべてがアイデアであるとき、どのようにプロジェクトを始めるべきですか?


11
回答:最初のステップは、バージョン管理の使用を開始します。github、bitbucket、codeplex、sourceforgeなどのオープンソースリポジトリでどのように機能するかを確認してください。
Spoike

「バージョン管理」の意味は何ですか?もっと説明してもらえますか?

以下の私の答えをご覧ください。
スポイケ

1
[productivity.se]への移行をお勧めしますが、おそらくNARQとして閉鎖されるでしょう。これは実際にはプログラミングやプログラマーとはあまり関係がなく、信じられないほどオープンエンドで、あいまいです(「大きな」プロジェクトとは何ですか?
アーロンノート

6
実際にはあなたの質問に対する答えではありませんが、失敗することを恐れないでください。あなたがあなたにできないと言う人の話を聞かないでください。あなたが読んだ有名人は、頭が良く、才能があったので有名ではありません。彼らは永続的だったので有名です。頭が良くて才能のある人は、1ダースもありません。しつこい人は、その間ではほとんどありません。
チャールズランバート

回答:


64

コーディングと開発環境のセットアップをしばらく忘れてください。大きなプロジェクトに着手したい場合、最初にする必要があるのは、プロジェクトの目的範囲を把握することです。

私がお勧めするのは、ワードプロセッサを開いて、「プロジェクトの目標」ドキュメントを作成することです。アイデアのすべて、および作成するソフトウェアの一般的な目的を説明します。次に、プロジェクトの機能目標をリストします。私はそれを仕様化するつもりはありませんが、むしろ完成品がサポートすべき機能のさまざまな部分を説明しています。したがって、学校を運営するソフトウェアを作成している場合、「教師管理」を機能の一部としてリストし、その機能に含まれるもの(連絡先情報の追跡、クラスのスケジュールなど)を記述することができます。

それから最も難しい部分:それはあなたがすぐに行う必要があるものではなく、あなたが進むにつれてです。追加する機能のリストと同じくらい重要なのは、目標ドキュメントで説明した機能を確認し、プログラムの最初のバージョンでなくても使用できる機能に注意することです。これは、スコープを管理するための鍵です。
大規模なプロジェクトで人々が失敗する主な理由の1つは、いつ作業をやめるかわからないことです。彼らはそれが「完了」したとは感じません。なぜなら、アイデアが出続け、決してリリースされないからです。最終的に彼らは興味を失い、あなたはさらに半分の完成した傑作を手にします。そのため、目標の基本的な部分を達成するために本当に重要な機能を適切に処理する必要があります。それが最初のターゲットです。

これは私が今、すべての重要なプロジェクトを開始する方法です。それは私が焦点を保つのを助け、開発中に範囲と目的が「進化」するのを防ぐのを助けます。


あなたが言うすべてに対して+1。この本も読んでください
-treecoder

+1-何も追加する必要はありません。
-temptar

これは素晴らしい答えです。また、何らかのタイプのプロジェクト管理ソフトウェアがある場合は、早めに使い始めてください。もちろん制限付きの無料のものもあります。以前にCampFireを使用したことがあります(campfirenow.com/signup、「無料プランもご用意しています:10 MBのストレージを備えた4人のチャット担当者」をご覧ください)。
m4tt1mus

1
ワードプロセッサではなく、マインドマップをお勧めします(経験のない+空白のページ=プロジェクトは開始されません)。
-MaR

1
ワードプロセッサ?ペンと紙を使用します。:)
右折して

41

Linusが一番いいと思う

誰も大規模なプロジェクトに着手すべきではありません。あなたは小さな些細なプロジェクトから始めますが、決して大きくなることを期待すべきではありません。そうした場合、あなたは単に過剰設計し、一般的にそれがその段階でありそうであるよりも重要であると思います。さらに悪いことに、想像する作品の大きさに驚かされるかもしれません。だから小さく始めて、詳細について考えてください。全体像や派手なデザインについては考えないでください。かなり差し迫ったニーズを解決できない場合は、ほぼ間違いなく過剰に設計されています。そして、人々が飛び込んで助けてくれると期待しないでください。それは、これらのことの仕組みではありません。最初に中途半端な何かを手に入れる必要があり、それから他の人が「ほら、それは私にとってほとんどうまくいく」と言うでしょう。そして彼らはプロジェクトに参加します。-ライナス・トーバルズ


12

より効率的かつ効果的に目標を達成するための最初のステップは何ですか?

以前にプロジェクトをやったことがあり、バージョン/ソース管理を教えていない大学/大学にいると仮定します。一部のプロジェクトを見たい場合は、Github(Gitを使用)、Bitbucket(Mercurialを使用)、Google Code(Mercurial、Git、およびSubversionを使用)、CodePlex(MercurialおよびSubversion / TFS)などのオープンソースリポジトリにいつでもアクセスできます。 SourceForge(多く)など、コードベースを見てください。彼らが共通しているのは、ソース管理ソフトウェアを使用しているということです。

それらの使用方法に関する情報はたくさんありますので、これは標準的な業界慣行であるため、使用方法を学ぶことをお勧めします。以下に、視覚的なガイドを示します。

あるプロジェクトが思い浮かんだとき、私は何をすべきかわかりません。何回も無視します。

暇なときにできることは、それだけです。小規模に開始:プロジェクトを最初から作成し、ソースコードリポジトリに配置します。小さなプロジェクトに何かを追加したいときはいつでも、ソースコードリポジトリに変更をコミットします。やがて大きくなり、元に戻りたい場合は、バージョン管理システムで行った変更をいつでも元に戻すかロールバックできます。


9
小規模なスタートの場合は+1で、これが大規模プロジェクトの基本的なアプローチです。小さなプロジェクトに分割し、1つずつ処理します。
ジョエルC

5

「白紙」症候群に見舞われるのは完全に普通のことです。

あなたは素晴らしいプロジェクトを念頭に置いており、それは素晴らしいように見えますが、机に座って何かをしようとすると、突然ブロックして何もできなくなります。次に、ソリティアを開き、新しいレコードを作成します。

実際には、プロジェクトに関連する何かを始める必要があります。そうすれば、プロジェクトが生まれたような気分になります。

すぐにコードを書きたくないかもしれません。プロジェクトで実際に実行する必要のあることを記述するか、プロジェクトで実行することから始めます。ペンと紙を取り、書き始めます。詳細から、または全体像から始めることができます。両方を試して、何が最善かを見てください。

プロジェクトの機能、さまざまな部分、それらの部分がそれらの間でどのように通信するかを定義してみることができます。私はポストイットに満足している、彼らは楽しいし、あなたは進歩するにつれてそれらを変えることができる。彼らがあなたの心とアイデアに従うようにします。

または、いくつかの関数またはクラスのプロトタイプを開始できます。あなたはこれのためにあなたが好むどんな言語でも使うことができます。

しばらくすると、何か作業ができるようになり、あなたのプロジェクトはあなたの心に残るだけではありません。あなたは実際に何かをしました。

開発プロセスを実際に開始することに慣れたら、慎重な計画、文書化、プロトタイピング、必要なすべてのテクノロジーとソフトウェアの収集などを行います。

しかし、実際に適切なタイミングだと感じるまで始めないでください!


4

大きなプロジェクトは、多くの小さなプロジェクトまたはピースから形成されます。大きなアイデアやプロジェクトの要件が1つあります。たとえば、連絡先を管理するアプリケーションです。

分解してください。自問してみて、「私はこれを行うために必要な小さな部分何ですか?」

小さい部品を定義したら、繰り返します。一部の部品をさらに分解する必要がある場合があります。アイデアは、小さな部分ごとに最も管理しやすい目標を定義することです。設計と開発(Agile-TDDなど)で規律ある原則を使用することを学び、より小さく、より管理しやすい目標が達成されます。


2

アウトラインを作成する

あなたは大きなアイデアを持っていますが、あなたがあなたの仕事をどのように達成しようとしているかわからない。あなたがやろうとしていることの概要を作成します。実行する手順、必要なもの、使用する言語などを書き留めます。すべてを整理しておかないと、プロジェクトは完全に破壊されます。

ステップをスケジュールする

前にも述べましたが、それは本当に重要です。時間を計画している場合は、プロジェクトが終了する予定の終了日、およびプロジェクトのステップにかかる時間を見積もることができます。これもまた組織であり、実行し続けます。

仕事のためのツールを見つける

大規模なプロジェクトを開始する場合は、何らかの支援が必要になります。コードの編成と優れたバージョン管理システムにとって、Gitはすべてのコードを単一のリポジトリに保持するので優れています。Gitの詳細については、提供したリンクを参照してください。

また、あなたがしようとしていることを行うのに役立つ言語を使用していることを確認する必要があります。開始する前にプロジェクトを作成できることを確認してください。新しいことは何も学ばない、と言っているわけではありませんが、始める前に学んでください。

助けを得ます

通常、大きなプロジェクトは単独で行われるわけではありません。仲間の学生、プログラムを組むことができるコミュニティの人々、そしてあなたが始める前にあなたがあなたを助けることができると思う他の人に連絡してください。尋ねることを恐れないでください。

始めましょう!

他の誰かがあなたのプロジェクトを開始するのを待って、「私はそのアイデアがありました!」と言うのを、あざ笑うな。それは永遠にあなたを悩ませます...


1

多分それは決まり文句でいっぱいですが、私は提出します。

大きなプロジェクトを処理するには、主に経験が1つ必要です。経験はあなたに必要なすべてを提供します:

  • 知識:プロジェクトに費やす時間が長いほど、より一般的かつ具体的な知識が得られます
  • 自信:大きなプロジェクトを管理するには自信が必要です。自信は知識から得られます。一般的に、仕事のすべての部分はあなたが以前にやったことである、または人々がそれをしているのを見たという事実です。
  • 専門家のネットワーク:プロジェクトが本当に大きい場合、自分でそれを達成することはできないことに気づかなければならないので、誰に尋ねればいいか、探している重要な情報をどこで見つけられるかを知って準備してください

したがって、次の2つのことができます。

  • 飛び込んで、それがどうなるかを見てください。おそらくあなたは多くの間違いを犯すでしょうが、鍵はそれらから学ぶことです。
  • 大きなプロジェクトを担当している人を具体的に観察できる仕事に就く

それがお役に立てば幸いです。


1

「大きなプロジェクト」の私の定義は、「主要な問題が参加者の調整と参加者間のコミュニケーションであるプロジェクト」です(中規模のプロジェクトは管理が技術的な問題と同じくらい難しいとき、小さなプロジェクトは技術的な問題が経営者よりも重要です。長期的な1人のプロジェクトは大きなプロジェクトになる可能性があることに注意してください-あなたの将来の自己との調整とコミュニケーションは、他の誰かと同じことをすることと大差ありません)。

大きなプロジェクトを処理できる(「主な役割を持つ」)ための最初のステップは、主な役割を持たない大きなプロジェクトに参加することです。2番目のステップは、経験のある人に指導されながら、主な役割レベルに到達することです。

別のアプローチは、プロジェクトのサイズを徐々に増やし、経験から学ぶことです...


1

いくつかのアイデアは、エンジニアがすぐに飛び込んでコードの記述を開始するのに適しています。これらのプロジェクトは大規模な場合も小規模な場合もありますが、すべてに共通することは、明確に定義された解決すべき問題です。私はこのようなプロジェクトを何度も始めましたが、それは良いドキュメントを前もって書き、ソースコード管理、コミュニケーション、コラボレーションに関するベストプラクティスに従うことについて規律を構築することだけです。

私が持っているすべてがアイデアの芽である大きなプロジェクトは、私の経験でもう少し準備が必要です。私が最初に行うことは、自分のアイデアについて他の人と話し始めて、誰かが私が解決しようとしている問題について私の理解を共有しているかどうかを確認し、問題を解決するための私の計画されたアプローチを検証することです。友人や友人をビールに連れて行くか、チートスの寮の部屋に招待してください。しかし、このプロセスを通して、あなたが解決しようとしている問題をよりよく理解し、問題を解決するために持ち込める他の素晴らしいアイデアを見つけ、あなたのアイデアを他の人に売り込む練習をするかもしれません。あなたがそれを解決するのを助ける人々のチーム。


1

大きなものを小さなものに分割します。

「世界平和の達成」に取り組むことはできません。その代わりに、大量破壊兵器の禁止に取り組み、民主主義を奨励し、開発援助を提供し、文化的および科学的交換などを奨励します。


1

これらの答えの多くが触れていないことは、具体的な何かを成し遂げること、そしてそれを成し遂げることを自分自身に強いることだと思います。

時々、「思考の土地」で立ち往生して、そこに残っているのは入力の面倒だけだと感じますが、実際にはプロジェクトのかみ傷サイズの塊から始めて、実装は楽しくてやりがいがあります。

私を含め、このような多くの人々を知っています。実際に仕事を始めるまで、私は何もしません。すぐに実装できる部分を選択して、そこにたどり着くと、フローが開始されます。


1

目的なしで何かをする理由はありません。記述したいコードの必要性を示すユーザーストーリーが必要です。これらのユーザーストーリーを次の形式でフレーム化する必要があります。

[X]として
[Y]が欲しい
ので[Z]

これは単純すぎるように思えるかもしれませんが、ユーザーを定義するだけでなく、必要性と最終結果を1つの文で指定するためのフレームワークを提供します。これらの多くがあります。時間の経過とともに、あなたはより多くを思い付くでしょう。コードをいくつか作成したら、コードの開発を開始できます。あなたがより多くのアイデアを持っているか、他のことを見つけたとき。あなたはそれらを忘れないように戻って、より多くのユーザーストーリーを書きます。開始するのに最適な場所です。

Behavior Driven Developmentはこのアプローチを使用し、リンクのサイトには、この形式を使用してユーザーストーリーを表現するいくつかの例があります。

アイデアからコードを作成するのに最も早く、最も組織化された方法になると思います。


1

黄色の付箋と魔法のマーカーの束を手に取り、大きなホワイトボードがある部屋に座ってブレインストーミングをしました。

メインメニュー、レポート、データベース、認証など、思いついた簡単なフレーズを書き始めるだけです。これらをホワイトボードに貼り付けて、メインメニューがどのように見えるかなどのアイデアをじっと見ます:

ファイルを開く、ファイルを保存、ファイルに名前を付けて保存、印刷などを行い、メインメニューの下のホワイトボードに貼り付けます。

アイデアが頭に浮かぶと、それらを書き留めてください...良いもの、悪いもの、ばかげたものは何でもただ独断的になります。それらをボードに貼り付けます。ボードを見ると、より多くのアイデアが浮上し、パターンが現れます。ある時点で、開発を計画しているものの感覚をつかみ始めるでしょう。

黄色の付箋は、かなりすばやく移動できます。

物事がまとまり始めたら、これらの考えをグループに分けます。その後、単一のグループレベルでブレーンストーミングを行うことができます。状況が変化する20分前にどのように見えるかを知りたい場合に備えて、さまざまな段階でホワイトボードの写真を撮ります。

最終的には、完了しなければならない主要な部分についてかなり良いアイデアを得ることができます。これらのチャンクごとに1つのフォルダーを取得し、アイデアが来たときにそれらにアイデアを投げ込み続けることができます。


0

あなたは学生なので、私はあなたが学生ではなく、専門家ではないことを意味すると仮定します。後者には、ビジネスとコラボレーションに関する追加の考慮事項が必要です。先週新しいプロジェクトを始めたばかりなので、そのプロセスは新鮮です。

私が最初に行うことは、既存のソリューションとライブラリを調査することです。可能な限り車輪を再発明するのは好きではありません。この研究は、プロジェクトの言語を選択する際の大きな要因でもあります。一部の言語には、特定のタスクに適した既存のコードがあります。

次に行うことは、フォルダーを作成し、それをソース管理下に置くことです。これはgit init .最近と同じくらい簡単です。

次に、「hello world」が動作するようにします。これにより、開発環境が適切にセットアップされていることがわかります。

次に、サードパーティのライブラリが動作するための「hello world」取得します。これは、ライブラリに正しくリンクして使用していることを示すために最低限必要なものです。データベースライブラリの場合、たとえば、単純なクエリに接続して実行します。GUIツールキットの場合、ウィンドウが表示されます。

次に、ビルドスクリプトとテストフレームワーク設定します。これはantまたはmakefilesなどであり、プロジェクトがまだ小さい場合はセットアップがはるかに簡単です。

次に、データ構造作成します。「モデル」レイヤーとも呼ばれます。これは、プログラムがジョブを実行するために覚えておく必要があるすべてのものを格納する部分です。紙の上で多くのデザインを行ってから、スタブを追加するだけです。通常、デザインのこの部分が最も簡単です。たとえば、チェスプログラムには、ゲームグリッド、プレーヤー、ピース、動きのシーケンスなどを保存するオブジェクトが必要になります。

この時点で、私はプログラムのかなり良い基盤を持っています。通常、その特定のプロジェクトの次のステップがどうなるかはかなり明らかです。それから、少しずつ一歩ずつ進めていきます。コードはある程度まで機能します。


0

持っているのが「ビッグアイデア」だけであれば、多くのもの(他の回答で非常によく説明されている)、特にこれら2つ:時間モチベーションが必要になります。

個人プロジェクトで一人で作業する場合の最大の難しさは、通常、毎週プロジェクトに費やす時間がないため、あまり進歩が見られず、モチベーションをすぐに失い始めることです。

すでに述べたように、小さなステップを踏むことが重要です。

しかし、これだけではありません。小さくてやりがいのあるステップ踏まなければなりません!つまり、最大の価値をもたらし、大きなアイデアの重要な概念を実証する手順です。

たとえば、優れたユーザーインタラクションを備えた新しいスーパーtodoリストソフトウェアで作業している場合。本当に必要になるまで、ストレージとデータベースのものから始めないでください。革新的なユーザーインターフェースから始めましょう。それは楽しくて価値があります。それはあなたの誇りになり、やる気を保ち、あなたのアイデアが本当に良いかどうかをすぐに確認できるようにします。


0

最初に行う必要があるのは、座ってそのアイデアを文書で説明することです。それまではプロジェクトにはならず、その場合でも、アイデアのような短命なものから、プロジェクトのような具体的なものに変えるための仕事があります。

ここまで進んだら、プロジェクトへの転換を検討し、論理的な方法で実装できる個別のステップに分割する方法を特定できます。

次に、これらの手順を実装するためのタイムラインを概説します。所定の間隔で進捗状況を再確認して、そのプロセスをある程度制御できるようにします-そもそも思いもよらないアイデアを思いついてミックスに追加するのではなく。

最初のフィニッシュラインを特定し、それを目指します。あなたがそれに固執するほど、プロジェクトは追加のアイデアの重みの下に沈む可能性が高くなり、永遠に生きているように見えるので、あなたはそれを完了することを落胆する可能性があります。


0

コードの労力は通常、プロジェクト予算の約20%(+ -10%)です。コードを正しく取得することに焦点を当てることは無意味であり、対処しなかった労力の80%があるため、完全なコード管理を取得しても20の作業しか残りません。

プロジェクトにユーザーがいない場合はどうなりますか?完璧であるが、アイデアに関する特許を「Acme Patent Trolls」ファイルの1週間後に公開し、次のFacebookになるとしたらどうでしょうか。

次の標準プロジェクトライフサイクルの問題を見てください。要件、設計、コード、テスト、統合、展開、欠陥の追跡と修正、要件変更管理(拡張要求)。リリース計画、リソースの割り当て(予定している1日の時間数、プロジェクトで実際に実行する時間)、法務(運用するフリードン)など。

上記のすべてが整っていれば、非常に悪いコードでも成功します。上記のいずれも設定されていない場合、最適なコードは失敗します。

私は賭けをする人ではありませんが、あなたが想像できない多くの様々な方法で、あなたの最初の「大きな」プロジェクトは失敗するでしょう。心配しないで、先に進んで失敗し、そこから学び、次のことをしてください。開始しないのは本当の犯罪です。初めて成功した場合は、プログラミングではなく、ビジネス管理で堅実なキャリアを積んでいます。

質問に答えるために、ソフトウェアツールを片付け、「ビジネスプランニング」ツールを引き出します。なぜあなたがそれをやっているのか、なぜ誰がそれを望んでいるのかを理解してください。(あなたはあなた自身の顧客になれますが、とにかく練習をしてください)。これを「ビジネスプラン」に書き留め、それらから構築します。


0
  1. 成功はどのようなものですか?
  2. プロジェクトの未知のものは何ですか?
  3. プロジェクトの既知のものは何ですか?
  4. 未知のものを除去/発見し、未知のものに変換するために何ができますか?
  5. 成功を達成するために既知のものを組み立てるために何ができますか?
  6. プロジェクトを前進させる次の具体的なステップは何ですか?

プロジェクトが完了するまで最後の手順を繰り返します。数年かかることを受け入れ、前進し続ける


0

ここでの答えはすべて素晴らしく、すべてですが、正直なところ、どれだけバージョン管理、ギッティング、フローチャート、マークアップを作成してもかまいません。重要なのは、機能的なアプリケーション、機能的なアプリケーションがあることですは、それが達成された問題を解決するものとして定義されており、他のすべてのものはほとんど無関係です。

コーディングを開始し、機能フェーズにコーディングし、テストを実行し、デバッグし、起動し、必要に応じて新しい機能を繰り返し使用します(リーンスタートアップの方法で)-これはアジャイルな管理方法です廃棄物を減らすための開発(または誰かが定義したように:完成品の完成品)。


-1

新しいプロジェクトを開始するときに行うことのリスト:

  1. 新しいディレクトリを作成する
  2. 既存のメイクファイルテンプレートをコピーしてメイクファイルを作成する
  3. いくつかのヘッダーと実装ファイルを作成します
  4. コンパイルしてください
  5. バージョン管理の使用を開始する
  6. クラス、関数、データメンバー、変数の命名規則を決定する
  7. 最初のクラスを書く
  8. クラスが独立しており、すべてのメンバー関数が他のメンバー関数から独立していることを確認してください
  9. main()などの関数を作成して、いくつかのオブジェクトを作成します
  10. プログラムの準備が整うまで手順7〜10を繰り返します。
  11. コンパイルする
  12. エンドユーザーに出荷する

それはコーディングについてですが、エンジニアリングではなく、一定の規模を超えて機能しません。代わりに、ユーザーストーリー、要件、または何らかの種類の仕様から何かを行う必要があります。これらは、実装技術を選択するのに役立ちます。「ストーリーを書く」、「ストーリーを注文する」は最初の2つのステップであり、バージョン管理はコードの前にあり、最初のストーリーは常に「研究実装テクノロジー」です(これは「言語を選ぶ」以上のものです)。
アンドリューマックレガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.