GitXplorerGitXplorer
a

new-software-project-checklist

public
456 stars
41 forks
0 issues

Commits

List of commits on branch main.
Verified
2f40d5c8712e24ec5d967d0008c8511defb2cbd0

Merge pull request #5 from Silverlight42/main

aardalis committed 4 years ago
Verified
4ca64a95b30f5638e7118f0a06e5b242963a16a6

Update README.md

SSilverlight42 committed 4 years ago
Verified
a62da4b0c667d074b9f43f29953b7853392f3839

Update README.md

aardalis committed 4 years ago
Verified
85182e6d5cfd2366a3ca8c02dc2da32e511a798e

Merge pull request #3 from fiseni/main

aardalis committed 4 years ago
Verified
616b69e8e52297ff676c3ad2dd9d92ecfdd3df7e

A couple of "what" and "how".

ffiseni committed 4 years ago
Verified
25fe577bdc92bd7e2dec9be7f871f7dfcf93aa2e

Merge pull request #2 from markrdeacon/patch-1

aardalis committed 4 years ago

README

The README file for this repository.

PRs Welcome Sparkline

Ultimate New Software Project Decision Checklist

When starting a new software project, there are many decisions that need to be made. Every decision can be phrased as a question. The following checklist outlines the questions that should be asked, and answered, as early in the life of a new software project as possible.

Give a Star! ⭐

If you like this list or found it helpful, please give it a star. Thanks!

And now, the list!

Who

  • Who is on the team (and what are their roles)?
  • Who is ultimately responsible for the project (management owner)?
  • Who is the project being built to support? Who will its users be?
  • Who does the team coordinate with downstream (for QA, deployments, support, etc. if any)?
  • Who does the team coordinate with upstream (for requirements, direction, prioritization, etc.)?

Communication

  • How will/does the team communicate?
    • Is there an email alias for the team?
    • Is there a list of team members and their contact information available?
    • Is there a real-time chat tool configured (Teams, Slack, Discord, etc.)?
  • Does the team have any regular standing meetings?
    • Daily standup or sync meeting?
    • Periodic demo to customer/management?
    • Iteration/sprint-related meetings?

What

  • What is the ultimate goal of the app? What problem does it solve?
  • What are the "user personas" of the app?
  • What kind of app is the team building? What hardware will it run on (web, mobile, desktop, etc.)?
  • What kind of methodology will the team use to collaborate (Kanban, Scrum, XP, etc.)?
  • What framework(s) will the app be built with/on?
  • What architectural pattern(s) will the app leverage?
  • What programming language(s) will the app be written in?
  • What code formatting standards has the team adopted?
  • What persistence store(s) will the app use?
  • What kinds of tests will the app require?
    • Unit tests
    • Integration tests
    • Functional tests
    • UI tests
    • Load tests
    • Security tests
  • What will the initial source control structure look like?
    • Where does code go?
    • Where do tests go?
    • Where do docs go?
    • Where do build scripts go?
  • What is the branching strategy used?
    • What is the main branch called?
    • What is the dev branch (if any) called?
    • Are there other long-lived branches (per release, per feature, etc)?
  • What process is envisioned for accepting commits?
    • Pull requests?
    • Approvals required?
    • Automated build/test pass required?
    • What team members have admin access?
  • What build/deploy automation tools does the app use?

Where

  • Where is the team located, physically?
  • If remote, what remote collaboration tools will be used?
  • Where will the project's artifacts (code, work items, builds, etc) be located?

When

  • When is the project due?
  • When is the first milestone due?
  • When is the first proof-of-concept demo planned for?

Why

  • Why is the company building this app?
    • Why is the company building this app?
    • Why is the company building this app?
    • Why is the company building this app?
  • Why were the decisions made on this list chosen vs. their alternatives?

How

  • How is the application deployed? Where? On-premises, in the cloud?
  • How often is the application deployed?
  • Does the team differentiate between production deployments and product releases?
  • How do different parts of the app communicate with one another?
    • In process library method calls
    • Out of process API calls
    • Out of process async messages
  • How does the system communicate with its persistence store?
    • Direct SQL calls
    • OR/M
  • How does the system communicate with other dependencies?
    • HTTP client
    • FTP
    • Shared database
    • Carrier pigeon
  • How will the app handle cross-cutting concerns?
    • Logging
    • Security/Auth
    • Auditing
    • Monitoring and Health Checks

Further Reading