Solera is a global leader in data and software services that strives to transform every touchpoint of the vehicle lifecycle into a connected digital experience. In addition, we provide products and services to protect life’s other most important assets: our homes and digital identities. Solera processes over 300 million digital transactions annually for approximately 235,000 partners and customers in more than 90 countries. Our 6,500 team members foster a unique, innovative culture and are dedicated to successfully bringing the future to bear today through cognitive answers, insights, algorithms, and automation. For more information, please visit solera.com
JOB SUMMARY:
The Senior Algorithm Software Engineer is responsible for playing a leading role on a team focused on the development of improvements and enhancements to transportation routing and scheduling algorithms. This person analyzes, designs, programs, and debugs algorithm enhancements. Presents technical documentation to the team and stakeholders. May interact with users to define systems requirements and/or necessary modifications. Experienced in object-oriented design, coding, performance tuning, and unit testing. The role will be about 75% development and 25% system maintenance and support. This person must also have solid communication and team building skills and must be able to participate in software design discussions and guide the architecture of the solution based on proven object-oriented design concepts, industry standard patterns, and best practices. Mentors, guides and aids the growth of less-experienced developers through leadership.
ESSENTIAL RESPONSIBILITIES AND DUTIES:
- Design, implement, and troubleshoot complex algorithms with a focus on both traditional and ML-based solutions.
- Optimize the performance and scalability of algorithms for real-world applications, addressing computational constraints and trade-offs.
- Conduct algorithm tuning, including parameter optimization and runtime efficiency enhancements.
- Write clean, modular, and well-documented code in C#, C++, java and .NET to ensure production-grade quality.
Logical data modeling
Object oriented design, coding, and unit testing
Authors and reviews technical requirements to ensure compliance with business requirements
Performs proper unit testing and software code writing (including automated unit testing)
Participates in the testing process through test review and analysis, test witnessing and certification of software
Participates in peer code reviews and develops skill level of others through mentorship
- Live troubleshooting of customer production issues
Machine Learning-Specific Engineering:
- Build and optimize ML models and pipelines, focusing on constraints like speed, accuracy, and interpretability.
- Develop and test ML algorithms such as supervised, unsupervised, and reinforcement learning methods, tailored to specific applications.
- Preprocess and analyze large datasets, ensuring data quality, normalization, and transformation to suit algorithmic needs.
- Debug and troubleshoot model performance issues, including overfitting, underfitting, and convergence problems.
- Implement and optimize feature selection/extraction methods to enhance model accuracy and runtime.
- Deploy ML models to production, ensuring robust integration into existing systems.
Advanced Performance and Tools:
- Design and implement custom loss functions, regularization techniques, and optimization strategies.
- Use profiling tools and frameworks to debug and enhance computational efficiency (e.g., TensorFlow Profiler, PyTorch Profiler, or custom solutions).
- Leverage distributed computing frameworks train and deploy ML models on large-scale datasets.
- Build and maintain simulation environments to evaluate the behavior of ML and non-ML algorithms under varied constraints.
Collaboration and Research:
- Collaborate with data scientists and domain experts to align algorithms with project requirements and expected outcomes.
- Stay updated with advancements in ML frameworks, libraries, and research to integrate cutting-edge methodologies into projects.
- Translate state-of-the-art research papers into practical and scalable software solutions
QUALIFICATIONS:
- EDUCATION: Bachelor’s degree in Computer Science, Computer Engineering, Electrical Engineering, or Mathematics
- EXPERIENCE: 6+ years of applicable Software Development experience.
- Product Based company experience is Mandatory
KNOWLEDGE/SKILLS/ABILITIES:
Knowledge of common routing algorithms
- Traveling Salesman
- Dijkstra's Shortest Path First algorithm
- Genetic Algorithms and heuristics
- Analysis of algorithms
- Logical thinking
Excellent interpersonal skills
Excellent written and oral English skills
- Excellent working knowledge of logical data modeling
- Excellent working knowledge of C#/C++ development environments and process
Versed in industry standard Software Development Life-Cycle (SDLC) process methodologies and Agile methodologies such as SCRUM
- Knowledge of Agile practices
- Transportation industry knowledge desired but not required
Experience mentoring less experienced developers
- Approaches software development using industry standard concepts, practices, and procedures
- Ability to work on multiple tasks simultaneously with various team members and/or other groups both internally and externally
- Ability to effectively engage in self-directed time management and prioritization of workload
- Ability to work independently to develop new skills as needed to support new products and applications
- Ability to coordinate and oversee parallel efforts for multiple developers
- Knowledge of relational databases and SQL
- Performance of data structures