Job Summary:

The Senior Software Engineer is responsible for creating software that delights our customers and users in a way that is also easily maintainable. The Senior Software Engineer is responsible for leading the design, development, and implementation of software solutions.  You will collaborate closely with cross-functional teams to understand requirements, design scalable architectures, and deliver robust, efficient software products.

General Responsibilities:

  • Research, design, implement, and maintain software features through ongoing feature development, refactoring, and by addressing bugs.
  • Build highly performant, fault tolerant, high-quality, scalable software.
  • Actively seek to learn and improve the company, department, team, and themselves.
  • Develop intuitive software that meets the needs of the company and our customers.
  • Leverage technical knowledge, skills, and experience to improve department processes and software quality.
  • Write quality unit and integration tests.
  • Analyze and test programs and products before formal launch.
  • Contribute and adhere to best practices in software development.
  • Participate in agile development processes, including sprint planning, daily stand-ups, and retrospectives.
  • Communicate with and train stakeholders on completed work for documentation, customer training, troubleshooting, and quality.
  • Provide mentoring for other Software Engineers.
  • Perform code reviews and provide constructive feedback.
  • Stay up to date with emerging technologies and trends in software development and recommend new tools and techniques to improve efficiency and productivity.
  • Participate in architectural discussions and contribute to the continuous improvement of development processes and methodologies.
  • Participate in educational opportunities like online course materials, professional publications, conferences, meet-ups, etc.
  • Performs other related duties as assigned.

Additional Required Skills and Abilities:

  • Excellent verbal and written communication skills.
  • Excellent interpersonal and customer service skills.
  • Strong architectural and design skills, with the ability to architect complex systems and make informed technical decisions.
  • Analytical and creative problem solving.
  • High level of organization and attention to detail.
  • Ability to work independently.

Education and Experience:

  • Bachelor's degree in computer science, Engineering, or a related field (or equivalent experience).
  • 5+ years of relevant experience developing enterprise scale, web-based software applications.
  • 4+ years of C# experience.
  • 2+ years of Microsoft SQL database experience required (4+ preferred).
  • 4+ years’ experience developing applications using RESTful APIs.
  • 4+ years’ experience developing REST API driven applications using C# .NET framework and/or ASP.NET.
  • Expertise in front-end technologies such as HTML, CSS, JavaScript, and modern JavaScript frameworks (e.g., React, Angular, Vue.js), React preferred.
  • Experience with version control systems (e.g., Git) to manage source code and facilitate collaboration within the development team.
  • Experience with testing and mocking frameworks (e.g., MSTest, NUnit, XUnit, Moq)
  • Experience with cloud computing platforms (e.g., AWS, Azure, GCP) and DevOps practices. Azure preferred.
  • Experience with CI/CD, preferably Azure YAML pipelines.
  • Experience with static and dynamic code analysis tools (e.g., SonarQube, Veracode, ReSharper).
  • Experience with one or more of the following required: Domain Driven Design, event-based architecture, distributed systems, microservices, clean architecture, 12-factor App.

Physical Requirements:

  • Prolonged periods sitting at desk and working on a computer.
  • Must be able to lift to 10 pounds at times.