Software Development Engineer III

Innovation Associates, Inc.
4h$93,000 - $152,594

About The Position

NEXiA is the pharmacy automation platform that controls physical fulfillment hardware — counting machines, collation systems, conveyor routing — in pharmacies across North America. This role is for a senior engineer who will improve the platform from inside while delivering real features making incremental progress through daily work. You’ll be working between VB.NET code that predates your involvement and diving in to understand why it works the way it does, and move it toward modern .NET architecture. Some days that means building a new feature in C#; other days it means improving a existing module so it can be tested, extended, or eventually deprecated. This is not a role where you’ll be in the thick of the existing platform, making judgment calls about what to address now, what to isolate, and what to leave alone. The engineers driving the broader modernization strategy (DDD decomposition, bounded context identification) set the architectural direction, you will work within that direction while keeping the platform running and improving for customers today. The expectation is that you work as an AI-augmented engineer — not someone who occasionally uses Copilot, but someone who directs AI agents to comprehend undocumented legacy modules, generate characterization tests, propose migration paths, and execute multi-step refactoring. You review and verify the output with engineering judgment, because in a pre-existing codebase where AI tools will confidently generate plausible-but-wrong characterizations. The combination of legacy expertise and AI leverage is how a small team moves a large codebase forward. If you’ve only worked on greenfield projects or need a modern stack to be productive, this isn’t the right fit. If you’re effective in legacy enterprise codebases and ready to leverage AI tooling as a force multiplier to modernize at scale, this is meaningful work.

Requirements

  • 6+ years of professional software development experience, with significant time spent in legacy or brownfield codebases (not exclusively greenfield)
  • Strong proficiency in .NET — modern .NET/C# preferred, but demonstrated ability to work productively in older .NET technologies (VB.NET, .NET Framework, WinForms)
  • Experience improving codebases you inherited: introducing tests where none existed, refactoring without rewriting, migrating incrementally between technology generations
  • Hands-on experience building and consuming APIs, with working knowledge of service integration patterns
  • Solid SQL Server skills — querying, performance analysis, schema understanding — in a codebase where the database is deeply coupled to application logic
  • Pragmatic engineering judgment: knowing when to improve, when to isolate, and when to leave something alone
  • Active engagement with AI-assisted development tools in your daily workflow — not autocomplete-level usage, but using AI for code comprehension, test generation, refactoring, or migration work. Existing agentic workflow experience (Claude Code, Cursor, etc.) is ideal; demonstrated rapid adoption and concrete experimentation is acceptable
  • Comfort working in a regulated, on-prem environment where deployments are customer-specific and rollbacks are expensive

Nice To Haves

  • Direct experience migrating VB.NET or VB6 applications to modern .NET/C#
  • Experience with pharmacy automation, healthcare, or other regulated environments where software controls physical processes
  • Familiarity with DDD concepts — bounded contexts, aggregates, domain events — even at a working level
  • Experience with CI/CD pipelines (Azure DevOps, GitHub Actions) and containerization
  • Experience with front-end frameworks (Angular, React, Blazor)
  • Exposure to event-driven or message-based architectures

Responsibilities

  • Build and ship features across the NEXiA platform — pharmacy workflows, hardware integration, operator interfaces — working within and improving the existing codebase
  • Own features end-to-end: understand the domain context, design the approach, implement across the legacy/modern boundary, test, and support through deployment
  • Work across the full stack — VB.NET backend, .NET Core services where they exist, front-end interfaces, SQL Server data access, and hardware integration layers
  • Write code that moves the codebase forward: when you touch a module, leave it more testable, more maintainable, and closer to modern patterns than you found it
  • Navigate and improve a VB.NET codebase that has evolved through multiple technology generations
  • Identify opportunities to migrate legacy components to modern .NET/C# — not as a separate initiative, but as part of feature delivery and defect resolution
  • Build and maintain the seams between legacy VB.NET code and modern .NET components; manage the coexistence practically
  • Apply pragmatic judgment about what to modernize now versus what to isolate and defer — not everything needs to be rewritten, but nothing should be left unexaminable
  • Write meaningful tests for the existing codebase, introduce test seams, extract interfaces, break dependencies as needed
  • Build automated validation that works across the legacy/modern boundary, catching regressions before they reach customer environments
  • Troubleshoot and debug across the full stack(including 32-bit VB.NET components)with a systematic approach; production issues in pharmacy automation have real operational impact
  • Improve test infrastructure: create the test coverage that doesn’t exist today so the team can change code with confidence
  • Operate as an orchestrator of AI-assisted engineering workflows, not just a developer with an autocomplete plugin. The practical workflow: directAI agents to comprehend a legacy module, generate characterization tests that capture actual behavior, propose migration approaches, review and validate output before shipping. You own the judgment; the AI multiplies your throughput
  • Apply AI tooling to the hardest parts of legacy work: mapping undocumented business logic across VB.NET modules, generating test suites for legacy code, identifying coupling patterns and migration risks across a large codebase, and scaffolding modern .NET replacements
  • Maintain verification discipline — in a codebase where behavior is undocumented, AI tools will confidently generate plausible-but-wrong characterizations. Knowing when to trust and when to verify is as important as knowing how to prompt
  • Develop and share effective AI workflows with the team; this team’s velocity depends on tooling leverage, not just headcount. What you learn about applying agentic tools to legacy modernization makes everyone faster
  • Work alongside the engineers driving architectural decomposition (Platform Modernization, Database Modernization) to ensure feature work aligns with the broader migration strategy
  • Participate in design discussions with honesty about what the legacy codebase can and can’t support without deeper changes
  • Mentor other engineers on navigating legacy code, introducing tests into untested systems, and practical migration patterns
  • Communicate trade-offs clearly to product and leadership: what you can build cleanly now, what requires legacy improvement first, and what the cost of deferring improvement looks like.

Benefits

  • Generous time off policy that allows you to put your family first
  • Opportunity to work on the cutting edge of pharmacy automation in a high growth tech company
  • Competitive benefits, salary, and talent development opportunities
  • Commitment to professional development and working for a company where your voice is heard
© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service