Sr. Software Engineer, Platform Modernization
Innovation Associates, Inc.
Summary
NEXiA runs inside customer pharmacies and carries years of hard-won pharmacy logic. You'll help modernize it incrementally using the strangler fig approach: take one capability at a time out of the legacy system, rebuild it as a well-defined bounded context, and route traffic to the new implementation with a clear path back if something goes wrong. Pharmacists and operators keep working the way they always have while the system underneath changes. This is not a greenfield role, and the interesting problems are at the boundary: anti-corruption layers that keep legacy coupling out of new code, backward compatibility across the customer versions in the field. We're looking for someone who starts from how a pharmacy actually works (filling, verifying, dispensing, stocking) and builds the model from there, and who's comfortable working directly with pharmacists and support staff to get it right.
Job description
Your Role & Its Purpose
NEXiA runs inside customer pharmacies and carries years of hard-won pharmacy logic. You'll help modernize it incrementally using the strangler fig approach: take one capability at a time out of the legacy system, rebuild it as a well-defined bounded context, and route traffic to the new implementation with a clear path back if something goes wrong. Pharmacists and operators keep working the way they always have while the system underneath changes. This is not a greenfield role, and the interesting problems are at the boundary: anti-corruption layers that keep legacy coupling out of new code, backward compatibility across the customer versions in the field. We're looking for someone who starts from how a pharmacy actually works (filling, verifying, dispensing, stocking) and builds the model from there, and who's comfortable working directly with pharmacists and support staff to get it right.
How You'll Contribute
Domain-Driven Modernization
- Decompose legacy NEXiA capabilities into bounded contexts modeled on real pharmacy workflows (fulfillment, dispensing, inventory, patient safety)
- Design and implement anti-corruption layers and facade patterns that isolate new modules from legacy coupling
- Execute strangler fig migrations — incrementally routing traffic from legacy paths to new implementations with rollback capability
- Maintain seamless end-user experience throughout transitions; the pharmacist should be oblivious to what's changing underneath
- Collaborate with domain experts (pharmacists, operators, support) to validate that domain models reflect real-world activities, not inherited technical artifacts
Systems Design & Architecture
- Reason about system behavior across module boundaries — trace failure modes, data consistency, and latency implications before they become production incidents
- Design for the constraints of on-prem, customer-deployed environments: upgrade paths, backward compatibility, long-lived versions
- Make deliberate architectural trade-offs between isolation and pragmatism; not every boundary needs a message bus
- Own technical design within bounded contexts; propose decomposition strategies and defend them in design reviews
Engineering Craft
- Build full-stack applications using .NET Core / ASP.NET Core and modern front-end frameworks
- Write meaningful tests — integration tests that validate domain behavior across the old/new boundary, not just unit test coverage metrics
- Apply DDD patterns (aggregates, domain events, context mapping) as tools for clarity, not ceremony
- Contribute to CI/CD pipelines, containerized deployments, and observability — especially at the seams between legacy and modern components
AI Tooling & Evolving Practice
- Actively adopt AI-assisted development tools (code generation, automated refactoring, test generation) to accelerate modernization work
- Evaluate and integrate AI tooling into daily workflows — not as novelty but as a force multiplier for understanding legacy code, generating migration scaffolding, and validating domain models
- Demonstrate willingness to evolve how you work as tooling capabilities change; the best tools in 12 months won't be the same as today
Collaboration
- Work across engineering, product, QA, and customer-facing teams to ensure modernization priorities align with customer impact
- Participate in design discussions with intellectual honesty — challenge assumptions, surface risks, and propose alternatives
- Mentor team members on DDD, migration patterns, and systems thinking
What You Bring to the Table
- 6+ years of software development experience, with meaningful time spent modernizing or migrating existing systems (not exclusively greenfield)
- Demonstrated ability to model software around business domains rather than technical layers — evidence of DDD, bounded context identification, or equivalent domain modeling discipline
- Experience working at the boundary between legacy and modern systems: anti-corruption layers, facade patterns, incremental migration, feature flags for gradual cutover
- Strong proficiency in a statically-typed OO language (C#/.NET strongly preferred; Java or similar accepted with willingness to ramp)
- Experience with modern front-end frameworks (Angular, React, Blazor, or equivalent)
- Understanding of on-prem deployment constraints: customer-specific configurations, upgrade compatibility, long-lived versions
- Systems thinking — ability to reason about how changes propagate across module and service boundaries
Even Better If You Bring
- Healthcare, pharmacy automation, or regulated-environment experience
- Experience with event-driven architectures and domain event patterns
- Familiarity with Azure cloud services and hybrid cloud/on-prem models
- Active use of AI-assisted development tools with concrete examples of productivity impact — hands-on experience with Claude Code, Opus, or Sonnet is a significant plus
- Experience with container orchestration (Kubernetes, OpenShift) in on-prem environments
Requirements
- 6+ years of software development experience
- Experience modernizing or migrating existing systems (not exclusively greenfield)
- Demonstrated ability to model software around business domains (DDD, bounded context identification, or equivalent)
- Experience with anti-corruption layers, facade patterns, incremental migration, feature flags
- Strong proficiency in a statically-typed OO language (C#/.NET strongly preferred; Java or similar accepted)
- Experience with modern front-end frameworks (Angular, React, Blazor, or equivalent)
- Understanding of on-prem deployment constraints: customer-specific configurations, upgrade compatibility, long-lived versions
- Systems thinking — ability to reason about how changes propagate across module and service boundaries
- Applicants must be authorized to work for ANY employer in the U.S.
- Employer will not sponsor applicants for work visas
Benefits
- Medical, Dental & Vision
- 401(k) Matching
- Paid Parental Leave
- Pet Insurance
- Tuition Reimbursement
- Professional Development Funding
- Generous Time Off
- Paid Volunteer Days
- Wellness Programs
- Annual Discretionary Bonus
Company overview
Innovation Associates, Inc., operating as iA, is a leading pharmacy fulfillment company that provides integrated automation solutions for centralized and community pharmacy operations. Founded in 1972 and headquartered in Indianapolis, Indiana, the company has over 30 years of experience in developing advanced robotics and enterprise software systems for pharmacy automation. iA's comprehensive Pharmacy Fulfillment Platform includes modular robotic pods, sophisticated counting and dispensing devices, and the NEXiA Enterprise Software Suite that manages the entire prescription fulfillment workflow from order acceptance to delivery. The company serves commercial retail pharmacies, health systems, and government pharmacy operations, helping them improve workflow efficiency, increase accuracy, reduce operating costs, and enable pharmacists to focus more time on patient care. With a focus on accelerating the pharmacy industry's move toward centralization, iA offers solutions for centralized pharmacy fulfillment, community pharmacy operations, and shared central fulfillment networks across multiple partners.