Part 03 of 18
Software Development, Product Engineering, and Design
and Design Roadmap
1. Purpose of This Part
This part defines the software development and product engineering roadmap.
This is the first deep domain roadmap because software is one of the fastest ways to start producing public artifacts, building GitHub history, creating useful tools, and turning abstract ideas into working systems.
However, this part must be understood correctly.
Software development is not the whole life plan.
Software is one major branch of the larger mission: to deeply understand, build, test, write, research, experiment, publish, and serve across many domains. The software branch matters because it gives the ability to create applications, tools, platforms, automations, AI systems, research utilities, dashboards, simulations, and infrastructure that can support many of the other domains too.
The software target is not “learn to code casually.”
The target is:
Become capable of designing, building, testing, deploying, securing, maintaining, scaling, and explaining real software systems.
This directly connects to the original goal: to stop being merely “into” technology and instead become someone who can build applications that ship, scale, solve problems, and leave behind a serious body of work.
2. What Software Competence Actually Means
Software competence is not knowing one framework.
It is not memorizing syntax.
It is not being able to follow a tutorial. It is not having a folder full of unfinished projects.
Software competence means being able to move through the full lifecycle of a product or system.
A real software engineer can:
● understand a problem ● define users and requirements ● design a solution ● choose a suitable architecture ● model data ● write clean code ● build interfaces ● build APIs ● use databases properly ● handle authentication and authorization ● test the system ● debug failures ● deploy the system ● monitor the system ● secure the system ● document the system ● improve the system over time
The standard is:
Can I take an idea from zero to a deployed, usable, maintainable system?
That is the standard that separates someone who merely “knows coding” from someone who can build.
3. The Research-Backed Source Spine
Software development should be learned from a combination of official documentation, practical projects, and production-style repetition.
The main source spine for this roadmap is:
● MDN Web Docs for HTML, CSS, JavaScript, HTTP, web APIs, accessibility, performance, and general web platform knowledge. MDN’s learning area is designed as a structured path for essential front-end development skills, and MDN also documents the open web technologies themselves. (MDN Web Docs)
- React official documentation for React itself. React’s current docs introduce the main
daily concepts such as components, markup, styles, rendering lists and conditions, events, state updates, and data sharing. (React)
- TypeScript official documentation for TypeScript. The TypeScript Handbook is intended
as a comprehensive guide for everyday programmers, and it covers everyday types, narrowing, functions, object types, generics, modules, and type manipulation. (TypeScript)
- Node.js official documentation for backend JavaScript. Node describes itself as a free,
open-source, cross-platform JavaScript runtime that can be used to create servers, web apps, command-line tools, and scripts. (Node.js)
- Git and Pro Git for version control. The full Pro Git book is available through the official Git website and should be treated as the serious Git reference. (Git)
- PostgreSQL official documentation for relational databases. PostgreSQL’s official
documentation currently covers supported versions including PostgreSQL 18, 17, 16, 15, and 14. (PostgreSQL)
- Docker official documentation for containerization. Docker’s getting-started docs
explicitly guide new users through Docker basics and development workflows. (Docker Documentation)
- Kubernetes official documentation later, once containerized applications and deployment
fundamentals are already comfortable. Kubernetes describes itself as a portable, extensible, open-source platform for managing containerized workloads and services. (Kubernetes)
- OWASP for web application security. The OWASP Web Security Testing Guide is a
comprehensive guide for testing web applications and web services, and the OWASP Top 10 is a standard awareness document for major web application security risks. (OWASP)
- GitHub Actions documentation for CI/CD. GitHub Actions is documented as a way to
automate, customize, and execute software development workflows directly inside a repository, including CI/CD workflows. (GitHub Docs)
- Playwright, Vitest, and/or Jest for testing. Playwright provides end-to-end testing across
Chromium, Firefox, and WebKit; Vitest is a Vite-powered testing framework; and Jest is a JavaScript testing framework that works with TypeScript, Node, React, Angular, Vue, and other ecosystems. (Playwright)
- OpenAPI for API descriptions. The OpenAPI Specification defines a language-agnostic
interface for HTTP APIs so humans and computers can understand service capabilities without reading source code or inspecting traffic. (OpenAPI Initiative Publications)
The rule is:
Official docs first. Tutorials second. Projects always.
4. The Software Builder Identity
The software identity to develop is not “React developer,” “backend developer,” or “full-stack developer” at first.
The better identity is:
Product engineer.
A product engineer is someone who can build software in context.
They do not only ask, “How do I code this?”
They ask:
● What problem is this solving? ● Who is the user? ● What is the smallest useful version? ● What data does this need? ● What can fail? ● How will I test it? ● How will I deploy it? ● How will I know it is working? ● How will I maintain it? ● What should not be built yet? ● What should be simple? ● What needs to be secure? ● What needs to be fast? ● What needs to be documented?
This is the mindset required for building real SaaS products, internal systems, clone projects, AI tools, dashboards, and future startup ideas.
5. The Software Development Ladder
The roadmap should be climbed in layers.
The layers are not strict prison walls. They overlap. But they define the general order of maturity.
Layer 0 — Operating Environment and
Developer Workflow Purpose Before building serious software, the working environment must be clean.
A weak development environment creates friction, confusion, and unfinished projects.
The goal of this layer is to become operational as a developer.
Topics
- terminal basics
- shell navigation
- package managers
- code editor setup
- Git installation
- GitHub setup
- SSH keys
- project folder structure
- environment variables
- local development servers
- README writing
- issue tracking
- commit discipline
- branch discipline
- basic debugging workflow
Core Sources Use the official Git website and Pro Git for Git fundamentals. Use GitHub Docs for GitHub workflows and GitHub Actions later. (Git)
Required Artifacts Create a repository called something like:
developer-operating-system
It should include:
- setup notes
- Git command notes
- terminal command notes
- environment setup checklist
- VS Code or editor configuration notes
- SSH/GitHub setup notes
- personal commit conventions
- README template
- project template
- debugging checklist
Completion Standard This layer is complete when:
- new projects can be created quickly
- Git is used naturally
- GitHub repositories are clean
- commits are regular and meaningful
- every project has at least a basic README
- local development environments no longer feel mysterious
Layer 1 — Programming Fundamentals
Purpose This layer builds the basic ability to express logic in code.
The goal is not to become a syntax memorizer.
The goal is to think computationally.
Topics
- variables
- types
- strings
- numbers
- arrays/lists
- objects/dictionaries
- conditionals
- loops
- functions
- modules
- input/output
- error handling
- file handling
- basic debugging
- basic testing
- reading documentation
- writing small scripts
Recommended Languages Use:
- JavaScript, because it is central to the web.
- Python, because it is excellent for scripting, automation, AI, data work, and later research workflows.
This software roadmap will focus mainly on the JavaScript/TypeScript web path, but Python should remain active because it connects strongly to AI, math, physics, automation, and research computing.
Required Projects Build at least 20–30 small programs.
Examples:
- calculator
- unit converter
- expense tracker CLI
- flashcard quiz CLI
- file renamer
- text analyzer
- password generator
- habit tracker CLI
- JSON data parser
- CSV cleaner
- small web scraper where legal and permitted
- simple API caller
- markdown notes organizer
- log file analyzer
- study timer
- command-line todo list
Artifact Rule Every small program must include:
- README
- what it does
- how to run it
- what was learned
- known limitations
Completion Standard This layer is complete when:
- small programs can be written without panic
- bugs are debugged systematically
- functions and data structures feel natural
- documentation is readable even if not always easy
- GitHub contains a visible trail of small working programs
Layer 2 — Web Foundations: HTML, CSS,
JavaScript, HTTP Purpose This layer builds the actual foundation of the web.
Frameworks must not be learned before the web itself.
React, Next.js, backend APIs, authentication, deployment, performance, and accessibility all sit on top of HTML, CSS, JavaScript, and HTTP. MDN should be the core resource here because it provides structured learning for web development and documentation for the web platform itself. (MDN Web Docs)
Topics HTML
- document structure
- semantic elements
- forms
- links
- images
- tables
- metadata
- accessibility basics
- SEO basics
- form validation
CSS
- selectors
- cascade
- specificity
- box model
- positioning
- flexbox
- grid
- responsive design
- media queries
- typography
- spacing
- color
- animations
- component styling
JavaScript in the Browser
- DOM manipulation
- events
- forms
- fetch
- promises
- async/await
- modules
- browser storage
- error handling
- basic state
- rendering data
- client-side validation
HTTP
- request/response model
- methods: GET, POST, PUT, PATCH, DELETE
- status codes
- headers
- cookies
- caching basics
- CORS basics
- JSON
- REST fundamentals
Required Projects Build these without React first:
- Personal homepage
- Responsive landing page
- Multi-page informational website
- Form-heavy website
- JavaScript quiz app
- Weather/API dashboard
- Local-storage habit tracker
- Expense tracker
- Markdown previewer
- Accessibility-improved redesign of a bad page
Completion Standard This layer is complete when:
- semantic HTML can be written without guessing
- CSS layouts can be built without constant panic
- JavaScript can manipulate pages and call APIs
- basic HTTP concepts are understood
- small browser apps can be built without frameworks
- MDN becomes familiar rather than intimidating
Layer 3 — TypeScript
Purpose TypeScript should be introduced after JavaScript fundamentals are real.
The goal is to write safer, clearer, more maintainable JavaScript.
TypeScript is not just “JavaScript with types.” It changes how you model data, APIs, components, functions, and errors.
The TypeScript Handbook should be the main reference because it is designed as a comprehensive document for everyday programmers. (TypeScript)
Topics
- basic types
- type inference
- unions
- literal types
- interfaces
- type aliases
- optional properties
- narrowing
- generics
- utility types
- modules
- async functions
- typing API responses
- typing React props later
- typing backend request/response objects later
Required Projects Convert earlier JavaScript projects into TypeScript.
Then build:
- typed todo app
- typed expense tracker
- typed API client
- typed form validator
- typed CLI utility
- typed JSON schema validator
- small TypeScript package published locally
Completion Standard This layer is complete when:
- TypeScript errors are useful rather than terrifying
- data models can be typed clearly
- functions have meaningful types
- API response types are modeled
- TypeScript is used naturally in frontend and backend projects
Layer 4 — Frontend Engineering with
React Purpose React should be learned after the browser foundations are in place.
The goal is not to “learn React” as an isolated tool.
The goal is to build interactive user interfaces out of components.
React’s official docs describe React as a library for building user interfaces from components, and the Learn section covers the core daily concepts such as components, events, rendering lists, conditional rendering, state, and data sharing. (React)
Topics
- components
- props
- state
- events
- conditional rendering
- lists
- forms
- controlled inputs
- derived state
- effects
- custom hooks
- component composition
- context
- error boundaries
- client-side routing
- state management
- accessibility in components
- testing components
Tooling Use Vite for early React projects because it is a modern frontend build tool with a fast development workflow. Vite’s official site describes it as a next-generation frontend build tool for modern web applications. (vitejs)
Later, use Next.js for full-stack React applications. Next.js describes itself as a React framework for building full-stack web applications, providing additional structure, features, and optimizations on top of React. (Next.js)
Required Projects Build:
- React component library
- Dashboard UI
- Notes app
- Study planner
- Kanban board
- Habit tracker
- E-commerce product listing UI
- Chat interface UI
- Admin dashboard
- Full frontend for a SaaS-style product
Frontend Artifact Requirements Each serious frontend project must include:
- design reference or Figma file
- component structure
- responsive layout
- accessibility notes
- state management explanation
- screenshots
- README
- known limitations
- future improvements
Completion Standard This layer is complete when:
- React components can be designed cleanly
- state is handled intentionally
- forms are not confusing
- API data can be displayed safely
- frontend projects look usable and polished
- component structure can be explained clearly
Layer 5 — Backend Engineering
Purpose Backend engineering is where software becomes more than an interface.
The backend handles data, business logic, authentication, authorization, integrations, jobs, APIs, files, events, and reliability.
Node.js is a suitable backend path for this roadmap because it allows JavaScript/TypeScript to be used across frontend and backend. Node’s official documentation describes Node as a cross-platform JavaScript runtime used for servers, web apps, command-line tools, and scripts. (Node.js)
Topics
- server basics
- routing
- middleware
- controllers
- services
- environment variables
- request validation
- error handling
- logging
- authentication
- authorization
- database access
- file uploads
- email sending
- background jobs
- rate limiting
- API documentation
- security basics
- deployment readiness
Frameworks Start with raw Node HTTP concepts briefly.
Then use a backend framework.
Options:
- Express for simplicity and ecosystem maturity. Express describes itself as a minimal and flexible Node.js web application framework for web and mobile applications. (Express)
- Later, consider more structured frameworks such as NestJS if large enterprise architecture becomes important.
Required Projects Build:
- Basic HTTP server
- REST API for todos
- REST API with validation
- REST API with PostgreSQL
- Authenticated API
- File upload service
- Email notification service
- Background job processor
- API for a dashboard
- Backend for a SaaS-style product
Backend Artifact Requirements Each serious backend project must include:
- API documentation
- database schema
- environment variable example
- request validation
- error handling
- logging
- tests
- README
- security notes
- deployment instructions
Completion Standard This layer is complete when:
- APIs can be built without following a tutorial
- backend structure is clear
- errors are handled consistently
- database operations are safe
- authentication and authorization are understood at a basic level
- backend systems can be deployed and tested
Layer 6 — Databases and Data Modeling
Purpose Databases are not just storage.
They are where the shape of a product becomes real.
A weak developer treats the database as an afterthought. A strong developer understands entities, relationships, constraints, indexes, transactions, migrations, backups, and query behavior.
PostgreSQL should be the main relational database because it is widely used, mature, powerful, and well documented. Its official documentation is the primary source for learning it seriously. (PostgreSQL)
Topics
- relational model
- tables
- columns
- primary keys
- foreign keys
- constraints
- indexes
- joins
- normalization
- transactions
- migrations
- query planning basics
- backups
- seeding
- pagination
- search
- soft deletes
- audit fields
- multi-tenancy basics
ORM Options Use SQL directly first.
Then use an ORM.
Prisma is a strong TypeScript ORM option because its documentation describes it as an open-source ORM with type-safe access to PostgreSQL, MySQL, SQLite, and other databases. (Prisma)
Drizzle is another TypeScript ORM option that emphasizes lightweight, performant, SQL-like and relational query APIs. (orm.drizzle.team)
The important rule: Do not use an ORM to avoid learning SQL. Use an ORM after learning enough SQL to know what it is doing.
Required Projects Build:
- SQL-only CRUD app
- Blog database schema
- E-commerce schema
- Booking/reservation schema
- Multi-user SaaS schema
- Audit log system
- Search/filter system
- Analytics dashboard queries
- Migration-heavy project
- Database performance experiment
Completion Standard This layer is complete when:
- schemas can be designed intentionally
- relationships are modeled correctly
- joins are understood
- migrations are not mysterious
- indexes are understood at a basic level
- database constraints are used instead of relying only on application code
Layer 7 — API Design
Purpose APIs are contracts between systems.
A weak API merely “works.”
A strong API is predictable, documented, secure, versionable, and understandable. OpenAPI should be learned because the OpenAPI Specification defines a standard, language-agnostic way to describe HTTP APIs so both humans and computers can understand service capabilities. (OpenAPI Initiative Publications)
Topics
- REST principles
- resources
- HTTP methods
- status codes
- validation
- pagination
- filtering
- sorting
- authentication
- authorization
- rate limiting
- versioning
- error response format
- OpenAPI documentation
- API clients
- webhooks
- idempotency
- background job APIs
Required Projects Build:
- REST API with OpenAPI docs
- API client package
- Public API demo
- Webhook receiver
- API with pagination/filtering/sorting
- API with idempotency keys
- API with rate limiting
- API with role-based permissions
- API used by a frontend app
- API tested with automated integration tests
Completion Standard This layer is complete when:
- APIs are documented before or alongside implementation
- request and response formats are predictable
- errors are structured
- API consumers are considered
- API tests exist
- endpoints are designed, not randomly added
Layer 8 — Authentication, Authorization,
and Security Purpose Security cannot be postponed until “later.”
Every real application has users, data, permissions, secrets, and attack surfaces.
This layer connects software development with the later cybersecurity domain.
OWASP should be a core source here because the OWASP Top 10 is a standard awareness document for major web application security risks, and the OWASP Web Security Testing Guide provides a comprehensive testing framework for web applications and services. (OWASP)
Topics
- password hashing
- sessions
- cookies
- JWTs
- OAuth basics
- CSRF
- XSS
- SQL injection
- access control
- role-based authorization
- rate limiting
- input validation
- output encoding
- secure headers
- secret management
- dependency vulnerabilities
- logging security events
- secure file uploads
- account recovery
- email verification
- two-factor authentication basics
Required Projects Build:
- Email/password auth system
- Session-based auth app
- JWT-based API
- Role-based admin dashboard
- Secure file upload feature
- Rate-limited login endpoint
- Password reset flow
- Security checklist for an app
- OWASP Top 10 self-audit of your own project
- Vulnerability writeup for a deliberately insecure app
Completion Standard This layer is complete when:
- authentication is not copy-pasted blindly
- authorization is checked server-side
- sensitive data is treated carefully
- common web vulnerabilities are understood
- security notes exist in project READMEs
- applications are reviewed against OWASP categories
Layer 9 — Testing and Quality Engineering
Purpose Testing is what turns code from “it worked once on my laptop” into something that can be changed without fear. Testing also proves seriousness.
A production-minded developer does not treat tests as optional decoration.
Playwright is useful for end-to-end testing because it supports reliable browser automation across Chromium, Firefox, and WebKit. Vitest is useful for Vite/TypeScript projects, and Jest remains a widely used JavaScript testing framework across many project types. (Playwright)
Testing Types Learn:
- unit tests
- integration tests
- API tests
- component tests
- end-to-end tests
- regression tests
- smoke tests
- accessibility checks
- performance checks
- security checks
Required Projects Add tests to existing projects:
- Unit tests for utility functions
- API tests for backend routes
- Integration tests for database workflows
- Component tests for React components
- End-to-end tests for login flow
- End-to-end tests for checkout/booking flow
- Regression tests for fixed bugs
- CI workflow running all tests
- Test coverage report
- Testing strategy document
Completion Standard This layer is complete when:
- tests are written before refactoring serious features - bugs result in regression tests
● CI runs tests automatically ● the project can be changed with less fear ● test failures are understood rather than ignored
Layer 10 — DevOps, Deployment, and
CI/CD Purpose A project is not truly real if it only runs locally.
Deployment is where software meets the world.
This layer teaches the ability to package, deploy, automate, and maintain applications.
Docker should be learned because it standardizes the packaging and running of applications in containers, and Docker’s official docs provide getting-started material for Docker basics and development workflows. (Docker Documentation)
GitHub Actions should be used for CI/CD because it allows workflows to run directly from repositories, including automated build, test, and deployment pipelines. (GitHub Docs)
Kubernetes should come later, not immediately. It is powerful, but it is not necessary for early projects. Its official documentation defines it as a platform for managing containerized workloads and services through declarative configuration and automation. (Kubernetes)
Topics
● environment variables ● build scripts ● production builds ● Dockerfiles ● Docker Compose ● image builds ● container networking ● deployment platforms ● CI/CD pipelines ● secrets
- migrations in production
- logs
- health checks
- rollbacks
- backups
- uptime monitoring
- domain setup
- SSL/TLS basics
Required Projects Deploy:
- Static website
- React frontend
- Node API
- PostgreSQL-backed app
- Dockerized full-stack app
- App with GitHub Actions test pipeline
- App with automatic deployment
- App with staging and production environments
- App with health check endpoint
- App with rollback notes and deployment runbook
Completion Standard This layer is complete when:
- projects are deployed publicly
- Docker is usable without fear
- CI runs tests automatically
- environment variables are managed safely
- deployment steps are documented
- failures can be diagnosed from logs
Layer 11 — Performance, Accessibility,
and User Experience Quality Purpose A working app is not necessarily a good app.
A good app must be usable, accessible, reasonably fast, and understandable.
web.dev is useful here because it provides material from Chrome team members and external experts on building fast, accessible, secure, cross-browser websites, and its Learn Performance course covers web performance concepts and improvement techniques. (web.dev)
Topics
- Core Web Vitals
- page load performance
- bundle size
- lazy loading
- caching
- image optimization
- accessibility semantics
- keyboard navigation
- ARIA basics
- color contrast
- form usability
- responsive design
- error states
- empty states
- loading states
- mobile usability
Required Projects Improve existing projects:
- Accessibility audit
- Performance audit
- Lighthouse improvement pass
- Keyboard-only navigation pass
- Mobile responsiveness pass
- Bundle size reduction
- Image optimization
- Loading state improvements
- Error state improvements
- Usability test with another person Completion Standard This layer is complete when:
- projects are not only functional but usable
- common accessibility mistakes are avoided
- performance is measured
- mobile layouts are tested
- users are considered as humans, not abstract “traffic”
Layer 12 — System Design and Scaling
Purpose Scaling should not be learned as fantasy architecture.
It should be learned after building systems that reveal real pain.
The aim is to understand how systems change when there are more users, more data, more services, more failures, and more complexity.
Topics
- client-server architecture
- monoliths
- modular monoliths
- microservices later
- caching
- queues
- background jobs
- rate limits
- database indexes
- read replicas
- file storage
- CDNs
- load balancing
- horizontal scaling
- vertical scaling
- observability
- retries
- idempotency
- eventual consistency
- distributed system failure modes
Required Projects Build or extend:
- Background job system
- Queue-based email sender
- Caching layer
- Rate-limited API
- File upload system using object storage
- Analytics event pipeline
- Multi-tenant SaaS architecture
- Service split from monolith
- Load test experiment
- Scaling case study writeup
Completion Standard This layer is complete when:
- scaling tradeoffs are understood practically
- caching is used intentionally
- background jobs are understood
- queues are used for real use cases
- system diagrams can be created
- architecture decisions can be justified
6. The Project Ladder
The roadmap should produce increasingly serious projects.
Do not only build isolated exercises.
Build a portfolio that shows growth. Level 1 Projects — Small Skill Builders Purpose: build fluency.
Examples:
- calculator
- quiz app
- todo list
- notes app
- weather dashboard
- local storage tracker
- API data viewer
- command-line scripts
- form validator
- static portfolio
These projects are not impressive by themselves, but they build hand control.
Level 2 Projects — Complete Small Applications Purpose: build end-to-end understanding.
Examples:
- study planner
- habit tracker
- personal finance tracker
- flashcard app
- blog CMS
- booking app
- admin dashboard
- inventory tracker
- customer support tracker
- document organizer
Requirements:
- frontend
- backend
- database
- authentication
- tests
- deployment
- README
- screenshots
Level 3 Projects — Clone Projects Purpose: learn by rebuilding real product patterns.
Examples:
- YouTube clone
- Spotify clone
- Amazon clone
- Notion-style notes app
- Trello clone
- Slack-style chat app
- GitHub issue tracker clone
- Airbnb-style booking system
- Stripe-style dashboard
- Shopify-style admin panel
Important rule:
A clone is only useful if it becomes independent.
Do not merely follow a 20-hour tutorial.
Instead:
- Follow enough to understand structure.
- Close the tutorial.
- Rebuild from memory.
- Change the requirements.
- Add missing features.
- Write architecture notes.
- Deploy it.
- Explain how it works.
Level 4 Projects — Real Utility Projects Purpose: solve actual problems. Examples:
- personal study operating system
- ICS exam revision planner
- Anki deck generator
- PDF note extractor
- research paper tracker
- AI-powered document assistant
- invoice tracker
- client CRM
- shipping/marine insurance study dashboard
- GitHub activity visualizer
- bug bounty note manager
- electronics lab inventory manager
These are more valuable than clones because they serve real needs.
Level 5 Projects — SaaS-Style Systems Purpose: simulate or build real businesses.
Examples:
- multi-tenant project management SaaS
- AI customer support platform
- appointment booking SaaS
- learning management system
- research collaboration tool
- document intelligence platform
- developer portfolio analytics platform
- cybersecurity report management platform
- electronics lab management system
- shipping operations dashboard
Requirements:
- user accounts
- organizations/workspaces
- role-based permissions
- billing simulation or real billing later
- dashboards
- notifications
- audit logs - admin panel
● tests ● deployment ● security review ● documentation ● architecture diagrams
Level 6 Projects — Production and Open Source Purpose: become useful to other people.
Examples:
● open-source developer tool ● reusable React component library ● API client library ● CLI automation tool ● testing utility ● documentation generator ● AI evaluation tool ● research notebook toolkit ● electronics calculation tool ● cybersecurity reporting template generator
The goal at this level is not just “portfolio.”
The goal is real public utility.
7. GitHub Strategy for Software
GitHub must become a record of serious building.
Do not create dozens of empty repos.
Create a combination of:
● small daily practice repos ● serious project repos ● learning labs ● project templates
- documentation-heavy repos
● open-source contributions ● research/code notebooks ● deployed product repos
Repository Standards Every serious repository should include:
● clear README ● problem statement ● feature list ● screenshots ● demo link if deployed ● tech stack ● architecture diagram ● local setup instructions ● environment variable example ● database schema notes ● testing instructions ● deployment instructions ● known limitations ● roadmap ● lessons learned ● references
Commit Standards Commits should be regular and meaningful.
Examples:
● feat: add user authentication flow ● fix: handle expired sessions ● test: add API tests for project creation ● docs: document deployment process ● refactor: split billing service from controller ● chore: configure GitHub Actions test workflow
The goal is not fake activity.
The goal is visible craftsmanship.
8. Documentation Standard
Every project should be documented as if another serious person might read it.
Documentation is part of engineering.
It proves understanding.
A project README should answer:
1. What is this? 2. Why does it exist? 3. Who is it for? 4. What problem does it solve? 5. What features does it have? 6. What is the tech stack? 7. How do I run it? 8. How do I test it? 9. How is it deployed? 10.What is the architecture? 11.What are the limitations? 12.What did I learn? 13.What would I improve?
This documentation habit will eventually support research, open source, product building, and technical writing.
9. How AI Should Be Used in Software
Development AI is allowed.
AI is useful.
AI must not become the builder.
Correct AI Use Use AI to:
- explain documentation
- compare architecture choices
- generate test cases
- review code
- suggest refactors
- explain error messages
- generate edge cases
- critique README files
- create learning exercises
- simulate interviews
- ask Socratic questions
- produce alternative implementations
- help debug after you have tried
- identify security concerns
- generate checklists
Incorrect AI Use Do not use AI to:
- generate full apps that you do not understand
- skip documentation
- avoid debugging
- avoid learning JavaScript
- avoid learning SQL
- avoid writing tests
- avoid reading errors
- claim generated code as mastery
- build portfolio projects you cannot explain
The AI Coding Rule For any AI-assisted code, you must be able to:
- explain every file
- explain every dependency
- run the project
- modify the project
- test the project
- debug the project
- remove or rewrite parts of the code 8. document the architecture
If you cannot explain it, it is not yours yet.
10. Common Traps
Trap 1 — Tutorial Addiction Watching someone else build gives the feeling of progress.
But the real test is independent rebuilding.
Rule:
For every tutorial project, build one independent variation.
Trap 2 — Framework Hopping React, Vue, Svelte, Next.js, Remix, Astro, Solid, and other tools can all be interesting.
But switching constantly prevents depth.
Rule:
Pick one main path long enough to ship serious work.
For this roadmap, the main path should be:
HTML/CSS/JavaScript → TypeScript → React → Next.js → Node.js → PostgreSQL → Docker → CI/CD → production systems
Trap 3 — Avoiding Databases Many beginners build frontends and avoid databases.
This blocks real product development. Rule:
Every serious app must eventually persist real data.
Trap 4 — Avoiding Deployment Local-only projects are incomplete.
Rule:
If it matters, deploy it.
Trap 5 — Avoiding Tests Untested projects become fragile.
Rule:
Every serious project needs at least a basic test suite.
Trap 6 — Overengineering Too Early Do not build microservices for a todo app.
Do not add Kubernetes before understanding Docker.
Do not add queues before needing background jobs.
Rule:
Build simply first. Add complexity only when the project teaches why it is needed.
Trap 7 — Pretty UI, Weak Logic A polished frontend can hide weak engineering. Rule:
Every beautiful interface must be backed by correct data, validation, security, and tests.
Trap 8 — Backend Without Product Thinking A technically functional API is not automatically a useful product.
Rule:
Always ask who uses this and why.
11. The First 12 Serious Software Artifacts
This is the initial software artifact sequence.
These should become GitHub repositories or serious subfolders in a learning monorepo.
Artifact 1 — Developer Operating System A repo documenting environment setup, Git workflow, project templates, debugging checklists, and README templates.
Artifact 2 — Web Foundations Portfolio A set of HTML/CSS/JavaScript projects built without frameworks.
Artifact 3 — TypeScript Practice Lab A collection of typed utilities, API clients, and small TypeScript exercises.
Artifact 4 — React Component Library Reusable buttons, forms, cards, modals, tables, navigation, and dashboard components. Artifact 5 — Full-Stack Todo/Project Manager Not because todos are impressive, but because the app can include auth, database, testing, deployment, and documentation.
Artifact 6 — Study Planner / Exam Revision System A real utility for your own life.
This can connect to your ICS study, Anki workflows, timetable planning, and revision tracking.
Artifact 7 — Admin Dashboard A polished dashboard with charts, filters, tables, search, pagination, role-based access, and mock analytics.
Artifact 8 — Clone Project Choose one major clone: YouTube, Spotify, Trello, Notion, Amazon, GitHub Issues, or Slack.
The clone must be rebuilt independently after learning from references.
Artifact 9 — SaaS-Style Multi-Tenant App A workspace-based product with users, roles, organizations, audit logs, and settings.
Artifact 10 — AI-Integrated Software Tool A practical tool that uses AI, but still has solid software architecture, evaluation, logging, and user workflows.
Artifact 11 — Open-Source Developer Tool A CLI, package, testing helper, documentation generator, or API client that someone else could use.
Artifact 12 — Production Case Study A full writeup explaining one serious project:
- problem
- users
- requirements
- architecture
- database
- API
- frontend
- testing
- deployment
- security
- tradeoffs
- failures
- what changed
- what comes next
This final artifact is important because it converts building into public proof of competence.
12. When to Move Forward
Do not move forward because a video playlist is complete.
Move forward when the work shows competence.
Move past fundamentals when:
- small programs can be built without hand-holding
- functions, objects, arrays, errors, and files are understandable
- Git is used naturally
Move past web foundations when:
- responsive pages can be built
- DOM manipulation is understandable
- API data can be fetched and rendered
- forms can be handled
- HTML/CSS/JS no longer feel like magic
Move past React basics when:
- components can be structured cleanly
- state and props are clear
- forms and API data can be handled
- reusable components can be built
- a frontend can be deployed
Move past backend basics when:
- APIs can be built and tested
- database integration works
- auth is understood at a basic level
- errors and validation are handled
- deployment is possible
Move into advanced product engineering when:
- multiple full-stack apps have been deployed
- tests exist
- CI/CD exists
- security has been reviewed
- documentation is strong
- users other than you could realistically use the project
13. The Software Development Standard
The final standard for this domain is:
I can build useful software from idea to production, explain every major decision, test the system, deploy it, secure it, document it, and improve it over time.
This is the death of fake progress.
This is the beginning of real technical identity.
Software development is not the entire life plan.
But it is one of the strongest engines in the plan because it creates artifacts quickly, supports other domains, builds GitHub history, enables business ideas, and turns curiosity into tools.