Senior Principal Software Engineer
JOB SUMMARY:
We are looking for a Sr Principal Software Engineer for our team that will focus on a new product feature offering. The Principal Software Engineer will be responsible for the cohesive development, overseeing integration of new services to various other microservices eco system, coordinating with QA, and peers. The Principal Software Engineer will have a holistic approach about systems when driving the definition, build, deployment, and operations of applications for the new product. We are seeking an individual who will take ownership of the new requirements and can help build the appropriate services, leveraging experience with minimal direction, while balancing trade-off and strict processes and methodologies in a fast-paced environment.
Our products intersect with all the current and exciting trends in the automotive and transportation industries and our business is growing every year. Our people and our platforms are the foundation and enabler of that growth.
Your Role
- As part of our dynamic team of Software Engineers, you will:
- Build best in class application software and services for our SaaS technology Platform.
- Applies full understanding (i.e. mastery) of the software engineering discipline and industry best practices plus creativity to effectively design, implement, and support SW products and services.
- Works on problems of complex scope where analysis requires evaluation of multiple factors of the overall product and service.
- Discovers and evaluates the most relevant factors to be considered in the creation, design, implementation or modification of software and services.
- Develop with cross-functional teams’ strategies towards higher organizational throughput via automation and flexible processes.
- Help engineering, and cross-functional leaders drive change in the organization: process improvements, best practices, and leveraging metrics to ensure effectiveness.
- Build tools and capabilities to facilitate application lifecycle operations like upgrades with no downtime, rollback, operational data collection, real-time monitoring, self-healing, and repair.
- Leverage Agile principles and practices to scope work and produce estimates, deliver the highest possible quality, performance, and feature velocity.
- Support Development and QA teams along the steps of the Software Development Life Cycle by maintaining environments and tools.
Minimum Qualifications
- Bachelors’ and preferably master’s degree in computer science or equivalent industry experience.
- Experience building scalable software for SaaS or Platform products with high scalability and availability in mind.
- 12+ years of strong Computer Science fundamentals experience in Design patterns, Object oriented design, layered architectures, distributed systems and Micro-services architecture.
- 5+ years' hands on experience in Core and Enterprise Java technologies, ideally with Spring Boot framework.
- 5+ years' hands on experience working with RDBMS technologies with large datasets (e.g. MySQL, Oracle, Postgres)
- 3+ years’ work experience with large scale NoSQL technology (e.g. MongoDB, DynamoDB) a must.
- 3+ years' experience working with any of the messaging technologies such RabbitMQ, Kafka(preferred) or Kinesis.
- 3+ years’ work experience with web browser technologies: HTML5, AJAX, preferably with JavaScript frameworks such as React.JS, Next.JS or Angular.
- Hands-on experience designing and developing web services (e.g. REST, SOAP, JSON, XML).
- Experience with Elastic Search, index management, use of APIs and optimization strategies.
- Experience with AWS or other Cloud environments highly preferred.
- Experience with containerization technology such as Docker or Kubernetes.
- Experience using tools such as GitHub, Gitlab, Jenkins/CruiseControl
- Groovy/Grails experience is a plus
Preferred Qualifications
- You demonstrate proficiency the technologies in our stack (see above), self-motivated to learn and ramp up fast.
- You demonstrate a high sense of urgency, ownership, and leadership, you take great pride in helping teams and individuals.
- You have competence in building and designing complex systems leveraging multiple technologies (legacy and new)
- You can demonstrate and ensure consistency in line with industry best practices for CI/CD, code quality, operational readiness, and security.
- Understands fundamentals of Agile methodologies - iterative development, SCRUM, continuous integration
- Knowledge of professional software engineering best practices including coding standards, code reviews, source control management, build processes, and unit testing.
- Strong organizational skills in a fast paced and fast changing environment
- Experience with Jira & Confluence a plus.
- An understanding of Telematics, Mapping Applications, or Mobile Resource Management is a plus.