What Iโ€™d Tell My Past Self About Building Extensions That Actually Help Developers ๐ŸŽฏ (Part 5/5)



This content originally appeared on DEV Community and was authored by Vijay Gangatharan

The final part of our journey building Additional Context Menus – where I share the hard-earned wisdom, surprising lessons, and what’s coming next. If I had a time machine, here’s what I’d whisper to my past self.

TL;DR ๐Ÿง 

If I could go back to day one, I’d say: “Start simple, obsess over performance, listen to users religiously, and remember – developers just want their tools to work reliably without thinking about them.” Also, “That weird edge case? Someone’s definitely hitting it right now.” ๐Ÿ˜…

The Time Machine Advice to Past Me โฐ

“Stop Trying to Impress Computer Science Professors”

Past me: “I’ll use the most sophisticated parsing techniques!”

Present me: “Users don’t care if you use AST or regex. They care if it’s fast and reliable.”

The biggest lesson? Perfect is the enemy of good. My beautiful Babel AST parser impressed exactly zero users while adding 400KB to the bundle. The “amateur” regex solution delighted thousands.

Academic purity doesn’t matter in production. User happiness does.

“Performance Isn’t Just a Nice-to-Have”

Past me: “I’ll optimize later, features first!”

Present me: “Performance IS a feature. The most important one.”

That 601KB bundle wasn’t just technically embarrassing – it was user hostile. Every extra millisecond of load time, every MB of memory usage, every sluggish interaction pushed users away.

The esbuild migration taught me: Build tools should disappear. When users say “it feels like VS Code should have shipped with this,” you nailed it.

“Your Users Are Smarter Than Your Assumptions”

Past me: “Developers will love these advanced features!”

Present me: “Ask them what they actually need first.”

Sarah’s comment about wanting reliable basics over fancy features was a revelation. I was building a Swiss Army knife when users needed a really good hammer.

Key insight: Users will forgive missing features. They won’t forgive broken core functionality.

The 5 Lessons That Actually Matter ๐ŸŽฏ

1. Reliability Beats Features Every Time ๐Ÿ›ก

The difference between a tool people try and a tool people depend on? Reliability.

// What matters more:
 50 features that work 90% of the time
 5 features that work 99.9% of the time

Those 37 tests weren’t just good practice – they were a promise to users that this extension wouldn’t break their workflow.

2. Bundle Size Is User Experience ๐Ÿ“ฆ

Every KB matters when you’re competing for space in someone’s VS Code installation:

  • 24.75KB: “This loads instantly!”
  • 601KB: “Why is VS Code so slow now?”

Rule of thumb: If your extension takes more than 1 second to activate, it’s too heavy.

3. Edge Cases Aren’t Edge Cases ๐ŸŽฏ

That weird scenario you think only 0.1% of users will hit? It’s actually 20% of your support tickets:

  • Files with emoji in function names โœจ
  • Deeply nested code structures ๐Ÿ—
  • Concurrent operations ๐Ÿ”„
  • Special characters in paths ๐ŸŒ

Test for the chaos. Real-world code is messier than your examples.

4. Developer Experience Is Product Quality ๐Ÿš€

The development experience directly impacts the end product:

  • 19-second builds โ†’ Slow iteration โ†’ Bugs slip through
  • 1-second builds โ†’ Rapid testing โ†’ Bulletproof features

Invest in your build tools. Fast builds enable better software.

5. Community Feedback Is Pure Gold ๐Ÿ’Ž

Every user comment taught me something:

  • “Love it, but can it handle large files?” โ†’ Performance improvements
  • “Works great, but the save feedback is confusing” โ†’ UX overhaul
  • “This extension reads my mind!” โ†’ Confirmation I was on the right track

Listen actively. Users tell you exactly what to build next.

What I’d Do Differently (The Honest Version) ๐Ÿ”„

Start with Performance Testing From Day One

Instead of optimizing late, I’d set performance budgets upfront:

  • Bundle size limit: 50KB max
  • Build time limit: 2 seconds max
  • Activation time limit: 500ms max

Build for Edge Cases Early

Instead of assuming perfect code, I’d test with chaos from the start:

  • Malformed syntax
  • Massive files
  • Concurrent operations
  • Unusual file structures

Talk to Users Before Writing Code

Instead of building what I thought users wanted, I’d interview 10 developers first:

  • What frustrates you most about VS Code?
  • Show me your typical workflow
  • What would save you the most time?

The Roadmap That Has Me Excited ๐Ÿš€

Coming in v2.0 (The User-Requested Features)

๐Ÿ” Smart Code Search

“Find similar functions across my entire codebase”

๐ŸŽฏ Context-Aware Suggestions

“Suggest the best file location for this function”

๐Ÿ”„ Refactoring Workflows

“Help me split this massive component into smaller pieces”

Each feature is user-requested, performance-tested, and edge-case-hardened before shipping.

The Long-Term Vision

VS Code extensions that feel native. Tools that disappear into your workflow and just make development more pleasant.

Imagine right-clicking and getting suggestions that actually understand your project, your patterns, and your goals. That’s the future we’re building toward.

Advice for Aspiring Extension Developers ๐Ÿ’ช

Start Small, Think Big

Begin with one feature that solves one real problem perfectly. Don’t build a Swiss Army knife on day one.

Obsess Over Performance

Users notice sluggishness before they notice features. Make it fast, keep it fast.

Test the Chaos

Real users write messy code, work in complex projects, and do unexpected things. Test for that reality.

Listen More Than You Code

The best features come from user conversations, not late-night coding sessions.

Ship Early, Iterate Fast

Perfect is the enemy of shipped. Get feedback fast and improve continuously.

The Most Important Thing I Learned ๐ŸŒŸ

Building developer tools isn’t about showing off your technical skills. It’s about understanding developer pain and making it go away.

The highest compliment isn’t “this code is impressive.” It’s “I forgot I was using an extension.”

When your tool becomes invisible because it Just Worksโ„ข, that’s when you’ve succeeded.

Try It Yourself! ๐ŸŽฎ

Ready to experience these hard-won lessons in action?

Install Additional Context Menus:

  1. Open VS Code Extensions (Ctrl+Shift+X)
  2. Search “Additional Context Menus”
  3. Click Install
  4. Open any React/Angular/Express project
  5. Right-click in a .ts file and be amazed โœจ

What’s Your Story? ๐Ÿค

Building this extension taught me more about software development than any tutorial or course ever did. The struggles, the breakthroughs, the user feedback – it all shaped not just the extension, but me as a developer.

Your turn: What developer frustration are you going to solve? What tool are you going to build that makes coding just a little bit more joyful?

Drop a comment with your ideas. The next great VS Code extension might be yours! ๐Ÿš€

Thank you for joining this journey from frustration to solution. Building tools that help fellow developers is one of the most rewarding experiences in programming.

Now go build something that makes developers smile! ๐Ÿ˜Š


This content originally appeared on DEV Community and was authored by Vijay Gangatharan