Description
JOB SUMMARY
We are seeking a highly skilled and experienced Senior Software Engineer to join our dynamic team. The ideal candidate will have a strong background in C++ development, with over 8 years of experience, and a passion for mentoring and leading by example. In this role, you will be responsible for driving engineering best practices, developing high-quality software solutions, and contributing to the growth and development of junior team members.
Essential Duties & Responsibilities
Software Development
Create high quality software features and components that integrate into complex software solutions. Develop software that is logically well-structured, fulfills requirements, is readable, maintainable, testable, and performant using standard idioms and common software craftsmanship techniques. Contribute to sizing decisions and complexity evaluation for initiatives. Pair with other engineers and apply clean code techniques to produce high quality code.
Testing & Quality Assurance
Create testing strategies that include performance, security, regression, and automation testing concepts. Create appropriate unit, integration, and automated acceptance tests for features based on requirements. Create automated tests for positive and negative scenarios. Utilize test-driven development (TDD) to guide development. Coach peers on TDD and test strategy concepts.
Data Management, Infrastructure, Integrations
Devise data storage and access strategies during development work. Use knowledge of data modeling, data storage, and data transmission techniques to make appropriate design decisions. Understand the basics of ML and data analytics and can apply this knowledge to increase the business value of data through transformation. Design system integration strategies leveraging cloud and managed services during product design and development. Leverage experience with infrastructure as code concepts to design modules for reuse, container orchestration, and data migration.
Operations
Create highly dependable software features and systems through usage of operationalization development techniques such as monitoring, logging, metrics gathering, system health, and reporting. Improve operations culture of team by defining best practices, advocating for deployment automation, and influencing technology selection based on product and team needs. Manage build pipelines, write code for collecting and radiating key metrics.
Security & Compliance
Develop software with a security-first mindset using knowledge of standard security protocols and common security risks, secure coding techniques, and appropriate usage and protection of sensitive information such as PHI. Proactively identify and mitigate single-avenue threats. Implement basic security safeguards, leverage threat modeling for system-level security.
Product & User Experience
Develop software features with user experience in mind. Extend and enhance user-facing software effectively, create reusable interaction patterns, and define best practices. Translate design goals into functional user-facing implementations. Address tech and design debt based on priority.
Requirements & Design
Collaborate with stakeholders to understand business context and share technical context. Write detailed technical stories which transform business context into technical specifications. Apply established architectural themes to new problem space
Knowledge & Requirements
- Design, develop, and maintain robust C++ desktop development applications, with a focus on Windows environments.
- Lead the implementation of engineering best practices across the team, ensuring high standards of code quality and performance.
- Collaborate with cross-functional teams to design and develop software solutions that meet business needs.
- Mentor and guide junior developers, providing technical leadership and fostering a culture of continuous learning.
- Communicate complex technical concepts to non-technical stakeholders, ensuring alignment and understanding across the organization.
- Contribute to the architectural decisions and design patterns to ensure scalability, maintainability, and performance.
Qualifications
EDUCATION & EXPERIENCE REQUIREMENTS
- Minimum years of work experience: 8 years
- Minimum level of education or education/experience: Bachelors or equivalent work experience in Computer Science, Computer Engineering, Electrical Engineering, Information Systems, IT
- 8+ years of professional experience in C++ desktop development applications.
- Proven experience in developing Windows applications or a strong background in Windows system administration.
- Solid understanding and practical experience with design patterns and software architecture principles.
- Strong desire and ability to mentor junior developers and contribute to their professional growth.
- Excellent communication skills, with the ability to clearly articulate complex problems and solutions to both technical and non-technical stakeholders.