VS Code won because it's free and doesn't suck. That's literally it. Every other editor either costs money (JetBrains, Sublime Text), is slow as hell, or makes simple tasks unnecessarily complicated (Vim configuration hell).
IntelliSense Actually Works (Most of the Time)
IntelliSense is VS Code's autocompletion system, and it's pretty good. Unlike the garbage autocompletion in most editors that just suggests random words from your file, IntelliSense actually understands your code structure.
Works great for JavaScript, TypeScript, Python, and C#. Gets confused sometimes with complex codebases - I've seen it give up on 50MB JavaScript files and just stop suggesting anything. But for normal projects, it'll save you from typing the same variable names 500 times. The TypeScript compiler powers much of the IntelliSense magic.
The language support comes from extensions. JavaScript and TypeScript work out of the box. Everything else needs plugins, but there's probably one for whatever weird language you're using.
Debugging When Things Break
VS Code's debugger is solid. Set breakpoints, inspect variables, step through code - all the basic stuff you need when your code inevitably breaks at 2am.
Common debugging gotchas that will ruin your day:
- The debugger randomly dies with "Extension host terminated unexpectedly" during live demos. Happened to me presenting to the CEO. Reload the window:
Ctrl+Shift+P
→ "Developer: Reload Window" - Node.js debugging breaks with "Cannot connect to runtime process" - spent 3 hours debugging this before realizing VS Code was trying to debug Node 14 while running Node 18
- Python debugging disaster: Multiple virtual environments confuse VS Code. It'll debug the wrong Python interpreter, break on the wrong files, and show variables from a completely different environment. Wasted 4 hours chasing a bug that only existed in the wrong venv.
- Browser debugging throws "Cannot connect to the target" because launch.json gets corrupted when you switch Git branches. Chrome DevTools just works better for web debugging.
- Production war story: Debugger attached to prod server instead of local during deployment. Took down checkout for 12 minutes because VS Code held connection open.
The integrated terminal helps, but it also randomly dies. When it does, just close the terminal tab and open a new one. Don't waste time troubleshooting it. The terminal profiles feature lets you configure different shell environments.
Git Integration That Mostly Works
Built-in Git support is decent. You can stage files, write commit messages, and push without touching the command line. The visual diff is nice for reviewing changes.
Real talk on Git in VS Code:
- Staging individual lines works well for cleaning up debug commits
- Branch switching is fine until you have merge conflicts, then you're better off using the command line
- The Git graph extensions are useful, but the built-in history view is trash
- GitHub integration is smooth if you like Microsoft's ecosystem
Git gotchas that will bite you:
- VS Code sometimes doesn't detect when you switch branches outside the editor - you'll be editing main while thinking you're on a feature branch. Lost 2 hours of work on the wrong branch because of this shit.
- Large repos (100MB+) make the Git features crawl - our 1.2GB monorepo makes VS Code freeze for 30 seconds on
git status
. The Progress bar lies about completion time. - If you have uncommitted changes and switch branches, VS Code gets confused about what's staged. Shows "M" for files that haven't changed. Had to
git reset --hard
and lost actual changes. - Production incident: Team member pushed sensitive config because VS Code showed it as "already committed" when it wasn't. Always check
git diff --staged
manually.
Extensions: The Good, The Bad, The Broken
The marketplace has 40,000+ extensions. About 80% are garbage, 15% are useful, and 5% are essential. The extension guidelines supposedly ensure quality, but reality disagrees.
Must-have extensions:
- GitLens - Shows who wrote each line of code
- Prettier - Auto-formatting that actually works
- Python extension - Used to be trash, now it's merely annoying
Extensions break constantly:
- Major VS Code updates break half your extensions - 1.85 to 1.86 killed 12 of my plugins (breaking changes)
- Popular extensions get abandoned and stop working - looking at you, Bracket Pair Colorizer (extension lifecycle)
- Too many extensions make startup crawl - I installed 30 extensions and VS Code took 15 seconds to start (extension host performance)
GitHub Copilot: AI That's Actually Useful
GitHub Copilot integration is probably the best AI coding tool right now. It suggests entire functions based on your comments and context. The OpenAI Codex model powers the suggestions, trained on billions of lines of public code.
What Copilot is good for:
- Writing boilerplate code you're too lazy to type (code generation)
- Suggesting API calls you can never remember (API documentation)
- Converting comments into actual implementation (prompt engineering)
What Copilot is bad at:
- Complex algorithms (it'll give you something that compiles but doesn't work)
- Security-sensitive code (don't trust it with auth logic)
- Making you a better programmer (it's autocomplete, not a brain replacement)
Copilot gotchas:
- Sometimes suggests deprecated APIs (known limitation)
- Occasionally suggests code that looks right but has subtle bugs (security considerations)
- Makes you lazy - you stop learning patterns because Copilot does it for you (developer dependency concerns)
VS Code won because it's free, works out of the box, and has enough features to get shit done. The competition either costs money, breaks constantly, or makes you configure 47 YAML files before you can edit a JavaScript function. When your deadline is tomorrow and you need an editor that just works, there's only one real choice.
That said, VS Code isn't perfect. It's a memory hog built on Electron, extensions break every major update, and the debugger randomly dies during demos. But compared to paying $300/year for JetBrains or spending weekends configuring Neovim, VS Code's problems feel manageable.
Here's what daily life looks like with Microsoft's surprisingly decent text editor.