このソフトウェア開発プロジェクトのチェックリストに何を追加しますか?[閉まっている]


14

私はチェックリストの大ファンです。ある旅行チェックリストはチェックリストの移動、さらにはスクラムのチェックリストを

コンテキスト:大企業に雇われ、ソフトウェア開発環境、プロセス、チームなど全体をセットアップする使命を与えられました。「カルテブランシュ」があります。ソフトウェアの有効な増分を作成する責任があります。プロジェクトサイズ:2000人/日。

次の(意図的に小さく不完全な)チェックリストに追加するアイテムは何ですか。

  • Continuous Integration Serverをインストールする
  • DoDを書く
  • 1ページのコーディングガイドラインを書く
  • 製品バックログを作成する
  • バグ追跡システムをインストールする
  • 定期的なフェイスタイムのスケジュール

回答:


10

* 1.)開発者に相談して、本当に必要なものを確認してください!*

2.)複数の環境を非常に迅速に立ち上げるためのソリューションを調査します(流行語に準拠していない場合は、パブリックまたはプライベートクラウドインスタンスまたは旧式の仮想マシンを考えてください)

3.)ソース/バージョン管理

4.)コードレビューシステム(例としてCrucbile / Fisheye)

5.)かんばんの壁(または同様のもの)

6.)通信プロトコル(リアルタイムチャットは大きなプラスです)、wikiもコラボレーションを促進します。これは社内の広報活動も対象にしています-事業主、技術サポートスタッフ、その他のグループとどのように関わるのですか?

7.)電子ホワイトボード

8.)開発者にとって快適な環境(ソファ、テーブル、チルアウトエリア、優れたWiFiなど)

9.)素晴らしいコーヒー!!!


コーヒーは違いを生む:)+ 1
RBA

使用している電子ホワイトボードは何ですか?

@Pierre 303-ホワイトボードセッションの結果の印刷
Martijn Verburg

8
  • ツールチェーンのセットアップ -IDE、CIサーバー、コード品質サーバー、ソース管理、ウェブサーバー、データベース、課題追跡など
  • バックアップ -チームの各人にはどのような役割がありますか?彼はどのプロセス/モジュールを「所有」し、彼のバックアップは誰ですか?
  • (ユーザー受け入れ)テスト環境のセットアップ-継続的な統合だけでなく 単体テスト。ただし、本当に悪いこと、複数のプラットフォーム、アプリケーションサーバー、VMなどをカバーする統合テスト。
  • パフォーマンステストのセットアップ-「どの機能/マイルストーンでパフォーマンスがそれほど低下しなかったのか」と答えるために履歴データが必要になるため、早い方が良いです。
  • (エンドユーザー)ドキュメントの概要 - ドキュメントには何が含まれますか?どのタイプのドキュメントが必要ですか?
  • マーケティングチャネル -内部マイルストーンと外部リリースはどのように発表されますか?ソフトウェアのクールな名前、ロゴ、色、言葉遣いなどはありますか?
  • 内部コミュニケーション -他のチームの仲間には、変更についてどのように通知されますか?コラボレーションはどのように行われていますか?ウィキ?アクセス権?
  • 品質保証の人とプロセス-誰が何を、どのくらいの頻度で、どのような基準でテストしますか?
  • リリースプロセス -いつ、どのくらいの頻度で、どのように、誰がリリースし、誰がリリースを受け取るかなど。
  • リスク管理 -最悪の場合のシナリオ(プロジェクトmgmt povとランタイムpovから、たとえば、「モジュールXでソフトウェアが失敗したために顧客がお金を失っています。バックアップ計画は何ですか?)
  • エスクロー用に仮想化するなど、コア開発環境を保護する
  • 公式および非公式の会議の場所
  • すべての人々のためのトレーニングまたはイントロ
  • 世話人特定し、物事が悪くなったときに実際に世話をするために必要なすべてのもの(許可など)を彼に与える

バックアップとトレーニング用に+1
Liviu T.

ただし、これのいくつかは無意味だと思います。
BlackICE

5

事後レビュー -あなたはブロックで物事に取り組んでいるので、私は1〜2時間のレビューをスケジュールし(チームの規模に応じて)、対面会議(可能であれば)を行いますより良いことができ、何も必要ありませんでした。開発プロセスの誤りから早期に学ぶことができるということは、後で作業する時間があまりないときに、後でそれを行うことを避けることができることを意味します。


4

あなたのプロジェクトにふさわしい専門家の優秀なチームを雇用することから始めましょう。一般的なビジネスアプリでは、データベース開発者とdba、QA担当者、システム管理者、ビジネスアナリスト、アプリケーション開発者、UIスペシャリスト、チームリーダーを少なくとも雇う必要があります。DBA、システム管理者、ビジネスアナリスト、およびQAは、開発チームとは別のレポートチェーンに参加する必要があります。開発データベースのスペシャリストは、アプリケーション開発者およびUIスペシャリストと同じテクニカルリードに報告する必要があります。

オフィススペースをセットアップします。プライベートオフィスは入手できれば素晴らしいですが(幸運を祈ります)、最低でも机、電話、コンピューター、ホワイトボード、専用の会議室が必要です。昼休み、冷蔵庫、ソフトドリンク、スナック、コーヒーを用意できる場所があることを確認してください。無料のソフトドリンクとコーヒーがさらに良い。

アプリケーションとデータベースの両方にdev / qa / stagingおよびprodサーバーをセットアップします。データベースは、アプリケーションと同じサーバー上に置かないでください。プロジェクトのサイズと範囲に応じて、環境ごとに複数のサーバーまたはSANなどが必要になる場合があります。

サーバーがセットアップされたらすぐに、ファイルシステム、データベース、およびデータベーストランザクションログのバックアップをスケジュールします。これは、設定の最初の日に行います。Iron Mountainのような会社を雇って、オフサイトで毎週バックアップを取ります。

ソース管理システムをセットアップし、その使用方法を説明するドキュメントを作成します。ルックアップタイプのテーブルのすべてのデータベース構造の変更とデータ挿入は、ソース管理のスクリプトに含めることを忘れないでください。これにより、展開が容易になります。

すべての関連ユーザーのライセンスで使用することにしたツールセットの商用ソフトウェアを購入するか、オープンソースソフトウェアをダウンロードします。

叫び声が速く、モニターが2台ある開発者用マシンを購入します。ゆっくりとうなり声を上げ、ユーザーがデスクトップ上で持っている典型的なテストユーザーマシンを少なくとも1つ購入します。

新しい開発者にあなたがやりたいことを訓練してください。ジュニア開発者がいるほど大きなチームがある場合は、追加のトレーニングをスケジュールし、プロジェクト計画に時間を含めます。少なくとも3か月間、ジュニアを非常に注意深く監視します。最初の1か月間、すべての新しい従業員を注意深く監視します。デッドウッドや不正な開発者をできるだけ早く排除してください。

何をどの順序で実行する必要があるかを決定します(クリティカルパス)。依存するタスクが完了するまで、クリティカルパスの最後にタスクを割り当てないでください。

テスト計画と要件を作成します。

クライアントと定期的にスケジュールされた進捗会議を設定します。彼らはあなたが何をしていて、障害が何であるかを知るに値します。物事が遅れる時期を伝えるのを忘れないでください。締め切りから3週間離れていて、それを見逃すことを既に知っている場合、その赤字はクライアントに伝える必要がある前に魔法のように消えません。追加された要件は追加のコストと時間を意味し、追加された要件ごとに他のタスクを削除するか、新しいタスクの期限までに期限が変更されることをクライアントが知っていることを確認してください。これを最初から明確にすることで、多くの苦痛と残業時間を節約し、クライアントではなくグループによって吸収されるコスト超過を節約できます。

1人のユーザーの速度だけでなく、予想される同時ユーザー数をテストできる環境をパフォーマンステスト環境に設定します。このテストを実行する前に、ライブを開始する日まで待たないでください。

プロジェクト計画では、QAがバグを見つけ、修正に時間がかかると想定します。最後に1日だけQAをスケジュールしないでください。

データベースのサイズとほぼ同じサイズのテストデータを作成します。すべての開発者に、このサイズのデータ​​ベースに対してコードをテストさせます。開発者が個人のマシン上の小さなデータベースに対してのみ開発することを許可しないでください。これは、本番稼働するまで正常に動作するコードの頻繁な原因です。

予算に報酬を計画します。数か月にわたってお尻を動かし、マネージャーだけがボーナスを得ると、人々はやる気を失います。また、頻繁に書面でありがとうと言ってください。

プロジェクト管理システムが必要な場合や、少なくともスプレッドシートを設定して、追跡する必要があるものを追跡する必要がある場合があります。プロジェクトの計画を立てるときは、計画で1日6時間以内と想定してください。これは、休暇、病気の時間、休日、人事会議、パフォーマンスレビューなど、プロジェクトに費やされない時間を説明するのに役立ちます。米国では11月1日から1月1日まで)、より多くの休暇や休暇のために追加の手当が必要になる場合があります。開発者が休暇や休暇をあきらめ、病気の時間、fair審員の義務、死別の時間などがいつ起こるかを誰も予測できないと期待するのは公平ではありません。彼らがこのプロジェクトであなたのチームに起こると仮定してください。


テストユーザーのマシンは「悲鳴を上げる」のではなく、「うめきを遅くする」べきだと思います;)非常に素晴らしいリストです。
BlackICE

@david、私はあなたの提案が好きで、本文でそれを変更しました。
HLGEM

すばらしい答え-箇条書きまたはセクション名が少し役立つかもしれません。
JBRウィルキンソン

3

私は質問とその後の回答には見られないいくつかのこと:

  • 災害復興計画。開発ボックス、ステージング、テストなどをどのようにバックアップしていますか?時々雪の日に家から仕事をするために必要なものがすべての開発者にありますか?等。

  • 訓練計画。開発者は何年間何週間トレーニングする必要がありますか?誰もがそれを追跡していますか?(スプレッドシートは、ほとんどのチームに十分です。)報告する(「何でも」で2時間のWebキャストを視聴したというメールを誰かに送信する)ためのメカニズムと、管理者が計画する-例えば、誰に何を送るべきか今年の会議。

  • ツールの位置。これは「すべてのMSDNサブスクリプションを提供します。作業用マシンに他のものをインストールしないでください」のような場所ですか、「コードが必要ですが、編集、コンパイル、テストに何を使用してもかまいません」 「一種の場所。決定を行い、記録します。

  • できる限り統合されたALM。通常、「インピーダンスの不一致」、二重入力、ツールのオーバーラップ、および回転椅子アプリケーションの統合の理由は、システムが少しずつ成長したためです。最初から始めて、あなたはあなたの人々がサイクルを通して単一のツールにとどまることができることを示したいと思います。Xでコードを入力せず、Yでコンパイルし、Zでテストし、Aでワークアイテム/タスクのステータスを変更し、Bで過ごした時間を報告し、Cに進むことができることを待っている人に伝え、 Dで次に何をするか、Eで全体的な進捗を確認するなど。


2

より多くの人の日をネジオティエートします。

人々が最初に十分に割り当てるとき、それはまれなイベントです。

[後で... さらに再ネゴシエートします...]


より多くの人の日を常に交渉しなければならないという見解を持つことは、私が推奨することではありません。
ニムチンプスキー

@NimChimpskyここで最近、信頼性の高い推定能力がコンピュータープロジェクトの神話であるかどうかについて議論がありました。作品が非常に有名で、研究が含まれていない限り、時間を予測することは本質的に困難です。たとえ自分のチームのスケジュールを予測できるとしても、外部要因と遅延を予測することはほとんど不可能です。したがって、「正確で信頼できる」推定値は、一般的なものとして存在するとは考えていません。
10

@Orblingは、私が働いている場所に存在します。英国のftse 250にリストされている全国の小売業者。一部のプロジェクトは遅れていますが、遅くはありません。それらは例外です。
ニムチンプスキー

@NimChimpskyプロジェクト内のすべての成果物を完全に制御でき、外部からブロックされておらず、手元のタスクに研究が含まれていない場合、比較的正確な推定値を取得できます。予算を提供することは、時間を見積もる前の徹底的な分析にまで及びます。ほとんどの企業では、開始前に十分に調査するための予算がありません。
10

@orbling常により多くの時間を要求することは純粋にarbitrary意的であり、証拠、成果物、分析、または予算に基づいているわけではない可能性があります。
ニムチンプスキー

2

私がサードパーティのライブラリとその使用法で最も問題を抱えているように見えます:

  1. 使用するライブラリとバージョンを決定します。
  2. ライブラリの更新をプロジェクトに統合するプロセスを作成します。
  3. 開発者全員がライブラリの選択に参加していることを確認してください。
  4. 使用されている技術に関するオープンディスカッションのための有益なチャネルを作成します。

どうして?サードパーティのライブラリ(専有)がひどいバグを抱えていた回数を伝えることはできません。または、「どのバージョンを使用しましたか。非推奨とマークされた関数を使用したのはなぜですか」と言う開発者に対処します。


1

組織にとって大きなコストとは、開発ライフサイクル全体を通じてセキュリティに予算を割り当てることではありません。つまり、セキュリティは通常、あまり効果的ではなく、効果的で高価な一連のアクティビティやコントロールを導入した後に、最終的には発生します。

開発の他のすべての側面と同じように、主要なマイルストーンで初期プロジェクト計画からセキュリティを組み込み、セキュリティガイダンスを最新の状態に保つために反復プロセスを使用します。セキュリティからの最終的なサインオフは、すべてのセキュリティ制御が設計に従って実装されていることを10の驚きのないチェックにする必要があります。

そうしないと、実装後にセキュリティを実行することになります-8〜10倍のコストがかかる可能性があります(Gartner、IBMなどからの数字)。および損傷。


興味がありますが、これはプロジェクトのセットアップチェックリストの一部でしょうか?私はソフトウェア開発の一部としてそれを入れましたが、プロジェクトのセットアップについては知りません。私は開発マイルストーンでそれを入れましたが、私はそれがOPが求めていたとは思わない、私は間違っている可能性があります。
BlackICE

デビッド-このレベルの詳細はそこにあるべきではないというのは正しいのかもしれませんが、少なくともセキュリティ用の広告申込情報があるべきだと思います。もっといい?
ロリーアルソップ

1

1.チームに持って行く

プログラマーに聞いてください!本当に、それが最も重要なことです。開発者がこの変更に直接関与していない場合、多くの抵抗に会います。結局のところ、それはあなたではなく、彼らがどのよう機能するかについてです。言うまでもありませんが、人々に方法やツールを強制しようとすることは通常恐ろしいことです。

2.検査と適応

あなたの経験を生かして、選ばれたコースに彼らがやるのをやさしく支援するために、チームに最良の働き方を見つけてもらいましょう。次に、定期的かつ協力して、あなた(彼ら)の行動を振り返り、プロセスを改善して改善します。

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