The SDLC: From "It Works on My Machine" to Production
Junior Engineers think the job is "writing code." Senior Engineers know the job is "delivering value." Writing code is just one step in the SDLC (Software Development Life Cycle).
If you write brilliant code but it fails deployment, you delivered zero. If you write brilliant code but it solves the wrong user problem, you delivered zero.
Here is the full lifecycle of a feature, and your role in each stage.
Phase 1: Planning (The "Why")
Before you type a single character, ask:
- What problem are we solving?
- Who is it for?
- How do we know if it works?
Your Job: Push back on vague requirements.
- Bad PM: "Build a dashboard."
- You: "Who is the user? What data do they need? Is this read-only?"
Phase 2: Design (The "How")
This is where you save time. Spending 1 hour on a Whiteboard saves 3 days of coding.
- System Design: Schema changes? API contracts?
- UI/UX: Do we have the assets?
- Tech Debt: Are we hacking this or building it right?
Mentor Tip: Write a 1-page "RFC" (Request for Comment) before you code. "I plan to add a column to the Users table and create a new endpoint." Get the team to agree before you open the IDE.
Phase 3: Implementation (The Code)
This is what you are good at. But remember: Code is liability. Less code is better.
- Branching Strategy: Keep branches short-lived (< 2 days).
- Local Testing: Does it actually run?
Phase 4: Verification (The "Does it Work?")
- Unit Tests: Test the logic.
- Integration Tests: Test the database connection.
- Code Review: Get a peer to sanity check.
The Golden Rule: The Code Reviewer is not your QA. You are your QA. If you hand buggy code to a reviewer, you are wasting their time.
Phase 5: Deployment (The "Ship")
- CI/CD Pipeline: The robot runs the tests.
- Staging: Verify in a production-like environment.
- Production: The scary button.
Key Concept: Feature Flags. Don't release to everyone at once. Release to 10% of users. If it breaks, turn it off. This is how you sleep at night.
Phase 6: Maintenance (The "Forever")
The feature is live. Now the real work begins.
- Monitoring: Are the logs clean?
- Metrics: Is anyone using it?
- Bug Fixes: (See "Failure Demand").
Summary
The SDLC is a loop, not a line.
- Verify requirements before coding.
- Test your own work before reviewing.
- Monitor the feature after shipping.
You own the feature until it is retired.
