Technical Fundamentals Every PM Should Know
This document serves as a comprehensive guide for people in Product to build a foundational understanding of essential technical concepts, enabling effective collaboration with engineering teams.
How does the Internet work?
Basic Components
- Clients: Devices (browsers, mobile apps) requesting services.
- Servers: Machines hosting websites, APIs, or databases.
- Protocols: Rules governing communication (HTTP, TCP/IP, etc.).
- ISP (Internet Service Provider): Provides access to the Internet.
- Routers & Switches: Direct traffic across the network.
Data Travel
- Data moves in small packets across the network.
- Uses protocols like TCP/IP to ensure delivery.
- Packets may take different routes and get reassembled at the destination.
DNS (Domain Name System)
- Converts human-readable domain names (e.g., google.com) into IP addresses.
- Works through hierarchical name servers.
- Caching speeds up the process.
Web Requests and Responses
- Clients send HTTP/HTTPS requests to servers.
- Servers respond with requested content (HTML, JSON, etc.).
- Status codes indicate success (200), errors (404, 500), etc.
Security
- SSL/TLS: Encrypts communication (HTTPS ensures security).
- Firewalls: Protect networks from unauthorized access.
- DDOS Protection: Prevents malicious overload attacks.
Frontend vs Backend
| Role | Expectations | Tools Used |
|---|---|---|
| Front End | Handles UI/UX, client-side logic, user interactions | React, Angular, Vue.js, HTML, CSS, JavaScript |
| Back End | Manages databases, APIs, business logic, security | Node.js, Python (Django/Flask), Ruby on Rails, Java (Spring) |
APIs (Application Programming Interfaces)
APIs enable communication between different software applications. They allow frontend apps to interact with backends and third-party services.
- Types: REST, GraphQL, SOAP
- Key Concepts:
- Endpoints
- Request Methods (GET, POST, PUT, DELETE)
- Authentication (OAuth, API Keys, JWT)
Databases
Databases store and retrieve structured and unstructured data.
- Types:
- Relational (SQL): MySQL, PostgreSQL, SQLite
- NoSQL: MongoDB, Firebase, Cassandra
- Key Concepts:
- Tables, Rows, Columns (SQL)
- Collections & Documents (NoSQL)
- Indexing for performance
Software Development Life Cycle (SDLC)
The SDLC is a structured approach to software development.
- Planning: Define goals, scope, and feasibility.
- Analysis: Gather requirements and document user needs.
- Design: Plan architecture, UI/UX, and system components.
- Development: Code and build the application.
- Testing: Identify and fix bugs (unit, integration, system testing).
- Deployment: Release software to production.
- Maintenance: Monitor, update, and fix issues post-launch.
Version Control
Version control systems (VCS) track code changes, enabling collaboration and rollback when needed.
- Tools: Git, GitHub, GitLab, Bitbucket
- Key Concepts:
- Repositories
- Commits & Branching
- Merging & Pull Requests
- CI/CD (Continuous Integration & Deployment)
Testing and QA (Quality Assurance)
Ensures software meets quality standards and is bug-free.
- Types of Testing:
- Unit Testing (testing individual components)
- Integration Testing (testing interactions between components)
- Functional Testing (checking expected outputs)
- Regression Testing (ensuring new changes don't break old features)
- Performance Testing (checking system speed and load capacity)
Cloud Computing
Cloud computing provides scalable, on-demand access to computing resources.
- Service Models:
- IaaS (Infrastructure-as-a-Service) — AWS EC2, Google Cloud Compute
- PaaS (Platform-as-a-Service) — Heroku, AWS Elastic Beanstalk
- SaaS (Software-as-a-Service) — Gmail, Dropbox, Salesforce
- Key Concepts:
- Virtual Machines & Containers (Docker, Kubernetes)
- Serverless Computing
- Scalability & Load Balancing
System Design Basics
System design is about architecting scalable and efficient applications.
- Key Components:
- Load Balancers
- Databases (SQL vs NoSQL)
- Caching (Redis, Memcached)
- Message Queues (Kafka, RabbitMQ)
- Common Architectures:
- Monolithic vs. Microservices
- Client-Server vs. Peer-to-Peer
- Event-Driven Systems
Resources and References
FAQs
- Why should PMs understand technical concepts?
- Helps in communicating with engineers, making informed decisions, and improving collaboration.
- Do PMs need to code?
- Not necessarily, but understanding logic and technical constraints is valuable.
- How deep should a PM's technical knowledge be?
- Enough to ask the right questions and challenge assumptions.