We are seeking a mid-level Software Engineer to play a key role in building a new suite of mobile applications as part of the modernization of our product suite as we transition to a modern SaaS-based cloud-native platform built on microservices and hosted in AWS.
As part of a cross-functional team, you will be responsible for delivering both the mobile multi-platform front-end experience and the scalable backend services that power it. You will work closely with senior engineers, stakeholders, and product teams to implement scalable, testable, and maintainable software components that power our next-generation solutions.
You will be responsible for delivering high-quality code with a strong emphasis on test-driven development (TDD), behavior-driven development (BDD), and sound software engineering practices. While this is an individual contributor role, you will be encouraged to collaborate actively with the team and may optionally support more junior developers through informal mentoring.
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 into modern, cross-platform mobile applications and cloud-native backend services.
What You’ll Do
- Aspire to be a highly effective independent contributor 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.
- Deliver the technical evolution of our products to cloud-native SaaS products and services.
- Support and promote a Generative organizational culture.
- Participate in planning events to break down complex initiatives into manageable chunks.
- Create reliable and fast automated test capabilities and feedback loops within our CI/CD pipelines, 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 / Kanban.
- Refactor code, as needed, to improve testability.
- Document key technical decisions, code design specifications and test outcomes.
- 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 support other developers.
Skills or experience you need
- Bachelor’s degree in Computer Information Systems, Computer Science, or related field of study.
- 3+ years software engineering experience with distributed applications in production environments and automated testing hands on experience.
- 3+ years of experience designing/developing/maintaining SaaS products in public cloud environments.
- 3+ years of recent experience with .Net or .Net Core (C#).
- 3+ years of experience with test-driven (TDD) and behavior-driven (BDD) development techniques.
- Familiar with mobile development.
- Familiar with Cl/CD pipelines using tools such as GitHub, Azure DevOps, Jenkins, Nunit/XUnit, Selenium/Appium, Specflow/Cucumber/ReqnRoll, etc.
- 1+ years of experience with building, orchestrating, and managing containerized workloads (AWS ECS/EKS, Docker, etc.)
- Familiar with Azure DevOps, GitLab or equivalent.
- Familiar in design patterns and modern software design principles (e.g. SOLID, Twelve Factor, etc.).
Skills that will set you apart
- AWS – Developer or Solutions Architect Certification
- Thorough understanding of AWS infrastructure and services
- Familiarity with Blazor and Webassembly.
- Hands-on experience with Azure Dev Ops
- Familiarity with an Observability Platform like CoraLogix.
- Familiar with 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 Infrastructure as Code, Configuration as Code, GitOps, Continuous Integration, Delivery and Deployment (CI/CD) practices and tools (Azure DevOps, GitHub, Jenkins, Atlantis, Ansible, Packer, CloudFormation/Terraform, etc.).
- Good understanding of service mesh architectures like Istio, AppMesh, etc.
- Good Understanding of cross-platform mobile development frameworks (e.g. Blazor, Xamarin, etc.)
- Hands-on experience with postgres and/or TSQL and NoSQL Data stores.
- Previous working experience in decomposing a large, monolithic codebase into a modular and well-designed solution is desired.
- Familiarity with modern monitoring solutions (e.g. DataDog, Dynatrace, AppDynamics, Splunk, Prometheus, Grafana, Open Telemetry)
- Experience with Terraform and/or CloudFormation and management of all infrastructure or configuration through code (e.g. IaC).
- Familiarity with micro-services architecture, RESTful APIs and defining test automation strategies for Services.
- Good understanding and responsiveness for requests related to compliance activities (ISO27001, SOC2, PCI etc.)
Behavioral Competencies
- A sense of urgency and a strong bias for action.
- Good communication skills and a natural inclination to collaborate.
- Strong problem solving skills and technical acumen
- Exhibits sound judgement and can make wise decisions despite ambiguity.
- Identifies and resolves root causes rather than only treating symptoms.