TechLead
Lesson 29 of 30
5 min read
Project Management

Scaling: Programs and Portfolio Management

Understand the difference between projects, programs, and portfolios, PMO types, portfolio prioritization, strategic alignment, and governance frameworks

Project vs. Program vs. Portfolio

As organizations grow, individual projects must be coordinated within larger structures. Understanding the hierarchy of projects, programs, and portfolios is essential for scaling project management.

Dimension Project Program Portfolio
ScopeDefined deliverablesRelated projects + operationsAll programs, projects, operations
DurationTemporaryLonger than individual projectsOngoing
ObjectiveDeliver specific outputsDeliver coordinated benefitsAchieve strategic objectives
Success MetricOn time, on budget, on scopeBenefits realizationStrategic value delivered
ManagerProject ManagerProgram ManagerPortfolio Manager / VP
ExampleBuild mobile appDigital transformation (mobile + web + API + data)All engineering initiatives

PMO Types

Project Management Office Models

  • Supportive PMO: Provides templates, best practices, training, and tools. Low control. PMs have autonomy. Best for mature organizations with experienced PMs.
  • Controlling PMO: Requires compliance with frameworks, methodologies, and reporting standards. Medium control. PMs must follow defined processes. Best for organizations needing consistency.
  • Directive PMO: Directly manages projects. PMs report to the PMO. High control. Best for organizations with immature PM practices that need centralized governance.

Portfolio Prioritization

// Portfolio Management Model
interface PortfolioItem {
  id: string;
  name: string;
  type: 'project' | 'program' | 'initiative';
  status: 'proposed' | 'approved' | 'active' | 'on-hold' | 'completed' | 'cancelled';

  // Strategic alignment
  strategicObjective: string;
  alignmentScore: number; // 1-5

  // Value
  expectedROI: number; // percentage
  expectedRevenue: number;
  expectedCostSavings: number;

  // Investment
  totalBudget: number;
  budgetSpent: number;

  // Resources
  teamSize: number;
  keyResources: string[];

  // Risk
  riskLevel: 'low' | 'medium' | 'high' | 'critical';

  // Scoring
  priorityScore: number;
}

interface Portfolio {
  name: string;
  totalBudget: number;
  allocatedBudget: number;
  items: PortfolioItem[];
  strategicObjectives: {
    id: string;
    name: string;
    weight: number;
    okrs: { objective: string; keyResults: string[] }[];
  }[];
}

// Portfolio prioritization using weighted scoring
function prioritizePortfolio(
  items: PortfolioItem[],
  weights: {
    strategicAlignment: number;
    roi: number;
    riskAdjustment: number;
    resourceAvailability: number;
  }
): PortfolioItem[] {
  return items.map(item => {
    const riskMultiplier: Record = {
      'low': 1.0, 'medium': 0.8, 'high': 0.6, 'critical': 0.4
    };

    const score = (
      item.alignmentScore * weights.strategicAlignment +
      Math.min(item.expectedROI / 100, 5) * weights.roi +
      riskMultiplier[item.riskLevel] * 5 * weights.riskAdjustment
    );

    return { ...item, priorityScore: Math.round(score * 100) / 100 };
  }).sort((a, b) => b.priorityScore - a.priorityScore);
}

// Portfolio Dashboard
interface PortfolioDashboard {
  summary: {
    totalProjects: number;
    activeProjects: number;
    totalBudget: number;
    budgetUtilized: number;
    onTrackPercentage: number;
    atRiskPercentage: number;
    offTrackPercentage: number;
  };
  resourceAllocation: {
    team: string;
    totalFTEs: number;
    allocatedFTEs: number;
    utilizationRate: number;
  }[];
  strategicCoverage: {
    objective: string;
    projectCount: number;
    budgetAllocated: number;
    healthStatus: 'green' | 'amber' | 'red';
  }[];
}

OKRs for Project Management

Example PM OKRs

  • Objective: Improve project delivery predictability
    • KR1: 80% of sprints complete all committed stories (current: 60%)
    • KR2: Reduce average schedule variance from 25% to 10%
    • KR3: All projects have a risk register reviewed bi-weekly
  • Objective: Increase engineering team productivity
    • KR1: Reduce average cycle time from 8 days to 5 days
    • KR2: Increase deployment frequency from weekly to daily
    • KR3: Reduce meeting load per engineer from 12hrs/week to 8hrs/week

Governance Framework

  • Decision Rights: Clearly define who can approve budgets, scope changes, and resource allocation at each level
  • Reporting Cadence: Projects report weekly, programs report bi-weekly, portfolio reports monthly to executive leadership
  • Stage Gates: Major funding decisions happen at defined gates — not continuously
  • Resource Arbitration: When projects compete for the same resources, the portfolio manager resolves based on strategic priority

Continue Learning