Hagerty is an automotive enthusiast brand and the world’s largest membership organization. As a Software Engineer II on the Digital Sales team, you will work on the web quoting experience to impact Hagerty's revenue by developing and maintaining applications and features in a collaborative environment.
Responsibilities:
- Develop maintainable, scalable, secure, and resilient software by:
- Thoroughly understanding your tasks including the associated business needs, architectural and system interaction designs, and operational need. Such tasks tend to contain some ambiguity and touch multiple parts of a single service
- Writing clean, human-readable code. Track and consistently apply the comments received on your code to future work
- Developing and designing comprehensive and automated unit, integration, and end-to-end tests, while understanding appropriate use of each test type
- Actively reviewing the telemetry (logs, metrics, etc.) produced by the service to ensure it is easy to support. Identify new telematic data that could be added and just as importantly old data that is no longer helpful
- Own and support features, modules, and products by:
- Being able to thoroughly explain and demonstrate the usage of your product’s features from the perspective of its customers
- Thoroughly understanding in-development features and supporting less experienced developers in breaking those down into well-structured tasks
- Actively practice troubleshooting and participate in the on-call support rotation for team’s production services
- Monitoring key product metrics, analyzing changes over time, and support prediction of future changes
- Improve your skills as an engineer by:
- Carefully researching how the components of our technology stack are designed, why they are designed that way, and understanding the tradeoffs made by those design choices
- Learning to define and properly apply abstractions that make our code more flexible and intelligible while reducing overall complexity
- Understanding and effectively communicating the system resource and performance impact, at the micro- and macro-level, of design decisions
- Learning to take the perspective of others and communicate effectively from that point of view
- Contribute to and engage in a collaborative environment by:
- Being an active participant in all team activities: team ceremonies, banter, troubleshooting, design discussion, work breakdowns, etc
- Explaining the purpose of team practices and behaviors, modeling them, and helping less experienced engineers adopt them
- Helping less experienced engineers know the difference between something they can reasonably figure out on their own and when they are blocked. Provide them tips for accomplishing the former and guidance on asking good question to avoid the latter
- Coaching less experienced engineers on our tools, techniques, and patterns, why we’ve chosen those, the tradeoffs we’ve made in choosing them, and their proper application
Requirements:
- Completed some professional training (e.g., college, bootcamps) in software development
- Comfortable working and actively participating within smaller (5-10 people) technical groups
- Eager to deeply learn, both independently and with help, our technologies and patterns such as: Languages: C#, Typescript, Databases: Strong MS SQL knowledge, complex SQL queries, relational schemas, Interservice Communication: HTTP API patterns (ReST, RPC, GraphQL), brokered and non-brokered messaging, Security: SAML, OAuth 2, OIDC, data encryption, signing, CSRF, System Performance: load testing, application profiling, OS profiling, Operational Readiness: diagnostic and audit logging, metrics, tracing, monitoring, alerting, Deployment: VMs, containers, cloud providers, configuration management, canary deployments, Expert in CI/CD best practices, Expert with modern testing frameworks utilizing NUNIT, Selenium, Playwright, Jest (or similar), Network: TCP/IP, HTTP, Firewalls, load balancers, Cloud: AWS experience
- Able to clearly communicate your thoughts and actively listen to and integrate the thoughts and comments of others