We are seeking a Principal Software Engineer to play a pivotal role in the modernization of our product suite, leading efforts that span both hybrid mobile development and cloud-native server-side architecture. Our goal is to transform a legacy monolithic desktop application into a modern SaaS-based platform, built on microservices and hosted in AWS.
In this role, you will lead a cross-functional engineering team responsible for delivering both the mobile multi-platform front-end experience and the scalable backend services that power it. You’ll collaborate with stakeholders, architects, and fellow engineers to translate product requirements and architectural vision into robust, secure, and testable software components.
You will take ownership of key implementation areas with a strong focus on quality, test-driven development, and engineering best practices. In addition, you’ll provide technical leadership, mentorship, and guidance to team members across disciplines.
ECI’s home and building supply software suite (Spruce) is a fully integrated business management solution for small to medium-sized businesses. It streamlines operations and drives growth. The platform is cloud-based and fully integrated, from purchasing through to delivery, and is now expanding to include modern, cross-platform mobile applications and cloud-native backend services.
What You’ll Do
- Be a technical leader on a high-performing team.
- Design and develop high quality features which delight our customers.
- Support and promote the practices and culture needed to transform our organization to a successful DevOps “you build it, you run it” organization.
- Perform on-call duties for all modernized components, user interfaces, or services that your team owns.
- Be a champion and example for quality, engineering, and operational excellence.
- Plan and deliver the technical evolution of our products to cloud-native SaaS products and services.
- Improve the design of current legacy applications to permit extension and use of modernized services.
- Support and promote a Generative organizational culture.
- Plan complex initiatives by breaking them into manageable chunks.
- Implement tests and test framework enhancements to support various portions of the Test Pyramid.
- Contribute to test automation and refactoring efforts, including BDD, TDD, performance/scalability testing, resiliency testing, etc.
- Collaborate effectively with Engineering leadership, Architects, UX Designers, Product Managers, SDETs, SREs, and other Software Engineers.
- Work within a small, agile team leveraging Scrum.
- Document key technical decisions and code design specifications.
- Participate actively in code reviews and contribute to technical discussions.
- Effectively communicate technical challenges and help resolve them.
- Keep yourself up-to-date with evolving technologies and apply this knowledge in our technical solutions.
- Empathetically help other developers grow.
Skills or experience you need
- Bachelor’s degree in Computer Information Systems, Computer Science, or related field of study.
- 12+ years software engineering experience with distributed applications in production environments.
- 8+ years of experience designing/developing/maintaining SaaS products in public cloud environments.
- 8+ years of recent experience with .Net or .Net Core (C#).
- 8+ years of experience with test-driven (TDD) and behavior-driven (BDD) development techniques.
- 5+ years of experience developing mobile applications
- 3+ years of experience in a modern frontend framework
- 3+ years of experience with building, orchestrating, and managing containerized workloads (AWS ECS/EKS, Docker, etc.)
- Deep, expert-level understanding of design patterns and modern software design principles (e.g. SOLID, Twelve Factor, etc.).
- Familiarity with micro-services architectures and RESTful APIs.
- Prior experience with modern monitoring solutions (e.g. DataDog, Dynatrace, AppDynamics, Splunk, Prometheus, Grafana, Open Telemetry)
- Hands-on experience with Postgres and/or TSQL and NoSQL Data stores.
- Deep understanding of AWS infrastructure and services including but not limited to EKS, ECS, EC2, EBS, S3, CloudWatch, Cloud Trail, API Gateway, ALB, Route 53, Transit Gateway, IAM, AWS Config, etc.
- Familiar with Cl/CD pipelines using tools such as GitHub, Azure DevOps, Jenkins, Nunit/XUnit, Selenium/Appium, Specflow/Cucumber/ReqnRoll, etc.
- Familiar with Infrastructure as Code, Configuration as Code, GitOps, Continuous Delivery and Deployment (CI/CD) practices and tools (Azure DevOps, GitHub, Jenkins, Atlantis, Ansible, Packer, CloudFormation/Terraform, etc.).
Skills that will set you apart
- AWS – Developer or Solutions Architect Certification
- Previous experience successfully decomposing a large, monolithic codebase into a modular and well-designed solution.
- Hands-on experience with Blazor and Webassembly.
- Hands-on experience with Azure Dev Ops
- Hands-on experience with Data Dog.
- Hands-on experience with Istio, AppMesh, and/or similar service mesh architectures.
- Hands-on experience with cross-platform mobile development frameworks (e.g. Blazor, Xamarin, etc.)
- A background designing for and achieving compliance (ISO27001, SOC2, PCI)
Behavioral Competencies
- A sense of urgency and a strong bias for action.
- Strong communication skills and a natural inclination to collaborate.
- Experience leading strong personalities by influence.
- Exhibits sound judgement and can make wise decisions despite ambiguity.
- Identifies and resolves root causes rather than only treating symptoms.