ワンマンチームのソフトウェアライフサイクル手法[非公開]


15

私は修士プロジェクト用のソフトウェアシステムを構築しており、「ワンマンチーム」に適した特定の方法論に関するアドバイスを探していました...


1
あなたがこの質問をしてくれてうれしいです、私は現時点でそのような状況にいます。プロセスなしでソース管理、継続的インテグレーション、テスト駆動開発、その他のさまざまな方法を取り入れた2人のチームに引き継ぎました。私自身、効率を改善するために何ができるのか、そして最終的に私の下で人々を雇うことが許されたときにどのように最善の準備をするのかについて疑問に思います。
maple_shaft

回答:


11

私は、ほとんどが自宅で働く一人用の「雇用のためのソフトウェア銃」として生計を立てているので、他の人々がこれについて何と言っているのか聞きたくありません。

ここに、私が重要だと感じたいくつかのことを示します。

  • デニスが言うように、ソース管理は不可欠です-ただし、SVNだけがオプションではありません。私は主にPerforceを使用していますが、gitは優れた代替手段です。私は「メインライン」開発モデルが好きです。これにより、コードブランチで実験を行い、機能するときにそれらをメインラインにマージし、機能しない場合はジャンクできます。
  • 私はノート、ノートブックを使用してタスクを追跡するためのプログラムを。現在、後者にはRedmineを使用しています。その前に、私はFogbugzを使用しました。Redmineには、組み込みのWikiがあり、永続的なメモや重要なサイトへのリンクに使用できるため、Redmineも気に入っています。
  • また、私が何をしているのかを追跡し、何らかの合理的な制限を設定して、燃え尽きることなく十分に完了するようにすることも重要です-以下を参照してください。

私の他の手法は長年にわたって進化してきましたが、プロジェクトとクライアントに応じてそれらを微調整します。人々は、プロセスにだまされずに作業コードにお金を払うので、プロセスを軽量に保ち、クライアントの顔に触れないようにします。しかし、私はいくつかのアジャイル技術が私にとって本当にうまくいくと思います:

  • 私の現在のクライアントの1つは、実装するために大きな機能をドロップする傾向があり、それらが完了するまで私を悩ませません。だから、スクラムスプリントでそれらに取り組むことは素晴らしいことだと思います。私の推測では、あなたの研究顧問がコントロールマニアでない限り、マスターのプロジェクトに役立つかもしれません。
  • 私の他の現在のクライアントは、「これに取り組むのをやめて、それを修正する」タイプの緊急事態を持っている傾向があります。私はスクラムでそれをやってみて、1回のスプリントの後でafterめました。だから私はかんばんを使ってそれをやっていて、それはずっと良く機能しています。

自分で作業することのもう1つの落とし穴は、何をするか、いつ、または十分に完了しているのか、または十分に完了したためにいつ仕事をやめるのかを誰にも教えてくれないことです。あなた自身のために。個人的にはスクラムが好きです。なぜなら、スプリントの目標に対して自分がどのようにやっているかを追跡できるからです。かんばんプロジェクトの場合、どれだけの時間を費やしているのかを追跡できますが、目標ベースのものだけでなく、それも好きではありません。

私の友人の何人かは、タスクに集中し、個人の効率を追跡する方法としてポモドーロを誓います。私はそれを試してみたいと思っています。

また、クライアントにコードをリリースして、クライアントが「正しい」ことを確認する正式なプロセスもありますが、それはおそらくあなたが求めているものの範囲外です。


3

他のSVNを使用して、すべてをバージョン管理します。追跡については、ノートブックはより簡単なプロジェクトに対応します。必要に応じて、無料のタスク/バグ追跡アプリケーションが多数あります(Redmineはクールです)。私の意見では、アジャイル/ XP /継続的インテグレーション/その他は少しやり過ぎです。


3

Personal Software Process以外は、単一の開発者が使用するために設計された正式なプロセスモデルについてはあまり知りませんでした。PSPは、ドキュメントとペーパーワーク(とにかく未加工の形式)にかなり重く、作業の実行に関する特定の手法についてはあまり言及されていません(代わりに、PSPはデータ収集に重点を置いて改善領域を見つけます)小規模から中規模のプロジェクトで使用できる個人的なプロセスを開発するためのポイント。

最善の行動方針は、多数のプロセスモデルから広く受け入れられているベストプラクティスを(ニーズとプロジェクトに基づいて)適切に選択することです。完了した作業/残りの作業の追跡、要件の管理、バージョン管理、テスト(特に単体テストと受け入れテスト)、継続的インテグレーション、コーディング標準、You Ai n't Gonna Need Itなどを見てください。そうでない場合は、Code CompleteThe Pragmatic Programmerを読んで、ヒントを練習することをお勧めします。

個人で働くことの最大のことは、外部の力によってあなたに課された制限は別として、それはすべてあなた次第です。あなたと一緒に仕事をする他の人に対応する必要はないので、可能な限り最も効率的な方法で仕事をすることができるテクニックを選ぶ方が簡単です。長年にわたって、あなたはおそらくあなたが最高の仕事をする方法を考え出してきたので、それは良い出発点になるでしょう。次に、その上に既知の「ベストプラクティス」を適用して、能力とテクニックを強化します。


1

男は特定の方法論について尋ねており、人々は「X / Yソフトウェアを使用する」と答えています。ツールの問題ではなく、実際には多くの方法論があり、アジャイル、反復、スパイラル、ウォーターフォール、XP、Vモデル、TDDなどの検証レポートはまだないようです。


問題は、ほとんどの研究がチームとの連携に向けられていることです。私の知る限りでは、PSPのみが1人のエンジニアが使用するように設計されています。そしてその中でも、PSPはデータを追跡して改善すべき領域を特定する方法の指定に焦点を当てており、ソフトウェアの品質を改善するのに役立つ可能性のあるいくつかの高レベルのタスクのみを提供します。
トーマスオーエンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.