Welcome to the Software Management & Planning Tool! This application is designed to help software engineering leaders and managers model, visualize, and plan their software systems, organizational structures, and yearly initiatives.
- Purpose
- Getting Started
- Core Concepts & Data Model
- Key Features
- Basic Workflow Example
- Tips & Best Practices
- Known Limitations (MVP)
- Future Enhancements (Backlog Highlights)
This tool provides a unified platform to:
- Model Software Architecture: Define systems, services, APIs, and their dependencies.
- Map Organizational Structure: Link teams to services, assign engineers (including AI Software Engineers), and represent management hierarchies.
- Visualize Relationships: Understand how services connect, how teams are structured, and how they relate to the software they own.
- Plan Capacity & Resources: Configure detailed capacity constraints (leave, overheads, team activities, etc.) and AI productivity gains to understand true team availability (Net Project SDE Years).
- Manage Roadmaps & Backlogs: Define, prioritize, and manage initiatives from backlog through to completion, focusing on strategic alignment and product management needs.
- Execute Yearly Planning: Commit initiatives to a yearly plan, assign detailed engineering estimates, and track against calculated team capacities.
- Gain Strategic Insights: Use the dashboard to visualize investment allocation, track strategic trends over time, and monitor progress towards business goals.
- Forecast Team Growth: Model SDE hiring, ramp-up, and attrition, factoring in detailed capacity constraints to predict resource availability.
The ultimate goal is to enable better-informed decision-making for software delivery, resource allocation, and strategic planning.
Upon launching the application, you'll see the main menu on the top bar:
- Click "Load System".
- A dialog will appear listing all previously saved systems.
- Click the "Load" button next to the system you wish to work with.
- The application comes with pre-configured sample systems (
StreamView
andConnectPro
) to help you explore its features.
- Click "New System".
- You will be taken to the "Edit System" page with a new, default system structure.
- Fill in the "System Name" and "System Description".
- Proceed to define your services, teams, managers, and other relevant data.
- Remember to click "Save All Changes" at the bottom of the edit page.
- Click "Delete System" from the home page menu.
- A dialog will list saved systems. Click "Delete" next to the desired system.
- A confirmation prompt will appear before permanent deletion.
- Click "Reset Defaults".
- Caution: This action will erase ALL currently saved systems and restore the initial sample systems (
StreamView
,ConnectPro
). This cannot be undone. - A confirmation prompt will appear before deletion.
Understanding these core entities is key to using the tool effectively. Most entities include an extensible attributes: {}
object for future flexibility.
- The highest-level entity, representing a collection of related software services (e.g., a product or platform).
- Attributes:
systemName
,systemDescription
, and an extensibleattributes
object.
- Services: Logical components within a system providing specific business functionalities.
- Attributes:
serviceName
,serviceDescription
,owningTeamId
, an array ofapis
,serviceDependencies
(other services it relies on),platformDependencies
, and an extensibleattributes
object.
- Attributes:
- APIs: Public interfaces exposed by a service.
- Attributes:
apiName
,apiDescription
,dependentApis
(other APIs it calls), and an extensibleattributes
object.
- Attributes:
- Agile software development teams responsible for building and maintaining services.
- Attributes:
teamId
(unique),teamName
(official name),teamIdentity
(codename/nickname),teamDescription
,sdmId
,pmtId
,fundedHeadcount
. engineers
: An array of engineer names (strings) who are primary members of this team. These names link to entries in the globalallKnownEngineers
list.awayTeamMembers
: An array of objects, where each object represents a borrowed engineer and includes{ name, level, sourceTeam, attributes }
.teamCapacityAdjustments
: A detailed object for configuring team-specific capacity modifiers (see Capacity Configuration).- Extensible
attributes
object.
- The central roster of all engineers in the system is stored in
currentSystemData.allKnownEngineers
. - Each engineer object includes:
name
: Unique name of the engineer.level
: Numerical level (e.g., 1-7).currentTeamId
: TheteamId
of the team they are currently assigned to as a primary member (null if unassigned).attributes
: An extensible object containing:isAISWE
(boolean): True if the engineer is an AI Software Engineer.aiAgentType
(string): Specifies the type of AI agent (e.g., "Code Generation", "Testing") ifisAISWE
is true.skills
(array of strings): List of the engineer's skills.yearsOfExperience
(number): Years of industry experience.
- Engineers borrowed from other teams, business units, or organizations to supplement a team's capacity.
- Tracked within each team's
awayTeamMembers
array. Each member hasname
,level
,sourceTeam
, andattributes
(similar toallKnownEngineers
for consistency, e.g., for AI away-members). - These members contribute to a team's Effective BIS (Builders In Seats).
- Software Development Manager (SDM): Manages one or more 2-Pizza Teams.
- Attributes:
sdmId
,sdmName
,seniorManagerId
(their direct manager), and an extensibleattributes
object.
- Attributes:
- Senior Manager: Manages one or more SDMs.
- Attributes:
seniorManagerId
,seniorManagerName
, and an extensibleattributes
object.
- Attributes:
- Project Managers: Individuals responsible for managing projects/initiatives.
- Stored in
currentSystemData.projectManagers
array. - Attributes:
pmId
,pmName
, and an extensibleattributes
object.
- Stored in
- External infrastructure, cloud services, or shared components that services rely on (e.g., "AWS S3," "Auth0," "Kafka"). Dynamically compiled into
currentSystemData.platformDependencies
.
- Projects, workstreams, or features planned for a year, stored in
currentSystemData.yearlyInitiatives
. - Key Attributes:
initiativeId
,title
,description
.isProtected
(boolean): If true, the initiative is locked at the top of the plan.assignments
: Array of{ teamId: string, sdeYears: number }
objects detailing effort per team. At the roadmap stage,sdeYears
can be0
to indicate general team impact or involvement before detailed SDE estimates are available. This structure is consistent with how the Yearly Planning view tracks effort.impactedServiceIds
(array of strings): Lists the service IDs directly affected by this initiative.roi
: An object detailing Return on Investment:{ category, valueType, estimatedValue, currency, timeHorizonMonths, confidenceLevel, calculationMethodology, businessCaseLink, overrideJustification, attributes }
.targetDueDate
(string: "YYYY-MM-DD").actualCompletionDate
(string: "YYYY-MM-DD").status
(string: e.g., "Backlog", "Defined", "Committed", "In Progress", "Completed").themes
(array of strings/themeIds): Links todefinedThemes
.primaryGoalId
(string): Links to agoal
incurrentSystemData.goals
.projectManager
,owner
,technicalPOC
: Objects like{ type, id, name }
linking to personnel.workPackageIds
(array of strings): Links toworkPackages
.attributes
: An extensible object, now includingpmCapacityNotes
(string) for product manager notes on high-level capacity or team impact andplanningYear
(number) which is the primary field for associating an initiative with a planning year.
- A detailed set of parameters stored in
currentSystemData.capacityConfiguration
to define and calculate net engineering capacity.- Global (
globalConstraints
):workingDaysPerYear
: Basis for SDE Year calculations.standardHoursPerDay
: Standard work hours.publicHolidays
(number): Days per year.orgEvents
(array): Objects like{ id, name, estimatedDaysPerSDE, attributes }
.
- Standard Leave Types (
leaveTypes
): Array of objects like{ id, name, defaultEstimatedDays, attributes }
(e.g., Annual, Sick, Study, In-Lieu). - Per Team (
team.teamCapacityAdjustments
):leaveUptakeEstimates
(array): Objects like{ leaveTypeId, estimatedUptakePercent }
for team-specific uptake of standard leave.variableLeaveImpact
(object): Total team days lost for types like{ maternity: { affectedSDEs, avgDaysPerAffectedSDE } }
.teamActivities
(array): Objects like{ id, name, type, estimateType ('perSDE'|'total'), value, attributes }
.avgOverheadHoursPerWeekPerSDE
(number): For recurring meetings, admin, etc.aiProductivityGainPercent
(number): An estimated percentage of productivity gained for human engineers due to AI tooling.
- Global (
- The system uses these inputs to generate
currentSystemData.calculatedCapacityMetrics
.
- Strategic objectives that initiatives align with, stored in
currentSystemData.goals
. - Attributes:
goalId
,name
,description
,strategyLink
,owner
,projectManager
,technicalPOC
(personnel objects),initiativeIds
(array of linked initiative IDs), and an extensibleattributes
object.
- Tags or categories for grouping initiatives, stored in
currentSystemData.definedThemes
. - Attributes:
themeId
,name
,description
,relatedGoalIds
(array of linked goal IDs), and an extensibleattributes
object.
- Granular breakdown of initiatives, stored in
currentSystemData.workPackages
. - Attributes:
workPackageId
,initiativeId
(parent),name
,description
,owner
(personnel object),status
,deliveryPhases
(array of{ phaseName, status, startDate, endDate, notes }
- standard phases include "Requirements & Definition", "Design (Technical & UX)", "Implementation", "Integration & System Testing", "Security Testing", "User Acceptance Testing (UAT/E2E)", "Deployment", "Completed & Monitored"),plannedDeliveryDate
,actualDeliveryDate
,impactedTeamAssignments
(array of{ teamId, sdeDaysEstimate }
),totalCapacitySDEdays
(calculated),impactedServiceIds
,dependencies
(array linking to other work packages), and an extensibleattributes
object.
- Snapshots of past yearly plans, stored in
currentSystemData.archivedYearlyPlans
. - Attributes:
versionId
,versionName
,archivedDate
, a deep copy ofinitiatives
at that time,notes
, and an extensibleattributes
object.
Once a system is loaded, a persistent navigation bar appears at the top, giving you one-click access to all major views for that system. The currently active view is highlighted for context. Click "Home" to return to the system selection screen.
Click "Dashboard" from the top navigation bar to access a set of high-level widgets for strategic analysis.
- Navigate through different dashboard widgets using "Previous" and "Next" buttons.
- Purpose: To track progress against high-level business objectives for a selected year.
- Features: Displays a set of "Goal Cards," one for each strategic goal.
- At-a-glance Metrics: Each card shows the total SDE investment, number of linked initiatives, and a visual progress bar.
- Contextual Status: The overall status (
On Track
,At Risk
,Completed
) provides an immediate health check. Hover over the status for a tooltip explaining the reason. - Ownership & Teams: Clearly lists the goal's owner, PM, and technical POC, as well as all teams contributing to the goal's initiatives.
- Drill-Down: Expand a card to see a detailed list of the specific initiatives supporting that goal, including a team-by-team SDE breakdown for each.
- Purpose: To celebrate and report on successfully completed work.
- Features: Shows a list of all initiatives that have a status of "Completed."
- Each accomplishment card displays the initiative title, completion date, and description.
- It provides rich context by showing the strategic goal it supported, the themes it belonged to, the key owners, contributing teams, and the final team effort in SDE-Years.
- A doughnut chart and summary table showing the percentage of total SDE-Year investment allocated to each strategic theme.
- A global "Filter by Year" dropdown allows for analyzing a specific year or all years combined.
- A 100% stacked bar chart that visualizes how theme-based investment percentages evolve year-over-year, making it easy to spot strategic shifts.
- Purpose: To visualize the product roadmap from both tactical and strategic perspectives.
- Features:
- Roadmap by Quarter: A theme-based swimlane view with columns for Q1, Q2, Q3, and Q4 of a selected year.
- 3-Year Plan (3YP): A similar swimlane view with columns for the "Current Year," "Next Year," and "Future," providing a long-range strategic outlook.
- Both views are interactive and can be filtered by Organization, Team, and Theme.
Accessible by clicking "System Overview". Provides multiple views of your architecture and organization.
- Carousel Navigation: Use the "< Previous" and "Next >" buttons to cycle through different visualizations.
- System Visualization: Displays services, their APIs, and platform dependencies.
- Team Relationships Visualization: Shows how teams are interconnected based on service dependencies.
- Service Relationships Visualization: Visualizes a specific service and its direct dependencies.
- Service Dependency Visualization & Table: A force-directed graph and a table detailing upstream and downstream dependencies for a selected service.
- Click "Edit System" from the top navigation bar.
- Modify: System Name, Description, Services, APIs, Teams, and manage assignments for Engineers, SDMs, and PMTs.
- Click "Save All Changes" to persist all modifications.
- Click "Inspect Org Design" to see an organization chart and a detailed team breakdown table.
- Click "Engineers List" for a sortable and exportable list of all engineers.
- Click "Capacity Tuning" from the top navigation bar.
- This page allows defining factors that impact engineering capacity, such as leave, overhead, and AI-driven productivity gains, to calculate a realistic Net Project Capacity for each team.
- Click "Roadmap & Backlog" to manage the pipeline of all initiatives. This is the source of truth for creating and defining work before it is committed to a yearly plan.
- Click "Year Plan" to commit initiatives, assign detailed engineering estimates, and track progress against calculated team capacities using the Above The Line / Below The Line (ATL/BTL) system.
- Click "Resource Forecasting" to access a tool for modeling team headcount and effective SDE availability over 52 weeks, factoring in hiring, attrition, and capacity constraints.
- The application's home page (when no system is loaded) features a collapsible section displaying this
README.md
file directly.
- Load or Create a System.
- Define Core Data (Edit System / Org View):
- Set System Name and Description.
- Add/Define Project Managers, Goals, and Defined Themes.
- Add/Define your Teams, assigning SDMs and PMTs.
- Add Engineers (Human or AI) to the global roster (
allKnownEngineers
) and assign them to teams. Add any Away-Team Members. - Add/Define Services, assign owning teams, and define APIs and dependencies.
- Click "Save All Changes" in the Edit System view.
- Explore Visualizations (System Overview): Use the carousel, view Org Chart, and Engineer List.
- Manage Roadmap & Backlog:
- Navigate to "Roadmap & Backlog".
- Add new initiatives, define their strategic attributes (goals, themes, ROI, owner, PM notes, etc.), and set their initial status (e.g., "Backlog", "Defined").
- Edit existing initiatives as they evolve, either inline or via the modal.
- Tune Capacity Constraints:
- Navigate to "Capacity Tuning".
- Set global working days, holidays, org events, and default leave days.
- For each team, configure leave uptake %, variable leave impact, team activities, recurring overhead, and AI productivity gain %.
- Review the summary, narrative, and waterfall chart.
- Save All Capacity Configuration.
- Analyze Dashboard Views:
- Navigate to the "Dashboard".
- Use the carousel to switch between the Strategic Goals, Accomplishments, Investment, and Roadmap widgets.
- Use the filters to analyze data for specific years, organizations, or teams.
- Manage Yearly Plan:
- Navigate to "Year Plan".
- Select a planning year from the dynamic dropdown.
- Assign detailed SDE Year estimates per team.
- Mark critical initiatives as "Protected". Drag and drop to prioritize.
- Use "Capacity Scenarios" and the "Apply Constraints & AI Gains (Net)?" toggle to analyze.
- Review the "Enhanced Team Load Summary" table to see detailed capacity and loading.
- Save Current Plan Order & Estimates.
- Forecast Resources (Optional): Navigate to "Resource Forecasting" for team-specific hiring and availability modeling.
- Save Regularly: Use the "Save" buttons frequently to persist your changes.
- Iterative Definition: Start with high-level entities and gradually add detail.
- Use the Dashboard: Regularly check the Strategic Goals and Accomplishments dashboards to track progress and celebrate wins.
- Roadmap vs. Year Plan: Use the "Roadmap & Backlog" view for broader strategic planning and the "Year Plan" view for detailed engineering capacity allocation.
- Single User, Local Storage: Data is saved in your browser's local storage. No multi-user collaboration.
- Limited Import/Export: General import/export for initiatives/plans to CSV/Excel is a future enhancement (though tables built with
EnhancedTableWidget
like Engineer List and Roadmap Table support export). - No True Skill Matching: While skills are tracked for engineers, there's no automated matching to initiative requirements for resource suggestions.
- UI for Advanced Planning Entities: While the data model supports Goals, Themes, Project Managers, Work Packages, and Plan Archiving, dedicated UI views for managing all aspects of these are still under development or planned.
This tool is an evolving MVP. Key future enhancements include:
- Detailed Planning Module: UI for managing Goals (linking initiatives), Work Packages (phases, status, team assignments, dependencies), and task breakdowns.
- Enhanced Yearly Planning UI: Full UI support for editing all new initiative fields (ROI, due dates, personnel, etc.) directly in the planning table or a detail panel. UI for managing
archivedYearlyPlans
. - AI-Powered Enhancements:
- Conversational AI assistant for data querying and insights.
- AI-assisted system modeling and plan optimization.
- Analysis of team composition and hiring risks.
- Data Access Layer Refactoring: Complete the abstraction of data operations for easier future backend integration.
- EnhancedTableWidget Rollout: Apply the widget to more tables (e.g., Planning Table, Team Load Summary) for consistent filtering/export.
- Collaboration & Cloud Sync: For multi-user access and data persistence beyond local storage.