The Principal Software Engineer-Data Warehouse System
responsible for designing and leading the development of a comprehensive large-scale enterprise data ingestion and integration system including data lake, data appliance, data warehouse, data movement, analytical, virtualization, visualization, decision science platform, and other components. The Principal Software Engineer – Data Warehouse System is expected to work both as an independent contributor and as a member of cross-functional teams.
To perform this job successfully, an individual must be able to perform each essential duty satisfactorily. Reasonable Accommodations may be made to enable qualified individuals with disabilities to perform the essential functions.
- Design and lead the development of a comprehensive large-scale enterprise data ingestion and integration system including data lake, data appliance, data warehouse, data movement, analytical, virtualization, visualization, decision science platform, and other components
- Data warehouse query engine – design, implement the company’s proprietary cutting-edge data warehouse systems.
- Real-time query engine – design, implement our state-of-the-art in-memory query engine to bring quick insights to scientists and customers.
- Collaboration on requirements – work with the Engineering, Product Management and Simulation teams to come up with features that would help company and its clients be more productive and improve the output of the company’s hardware and processes.
- Expertly utilize distributed/parallel processing for information management solution design and development.
- Implement scalable ETL processes to collect and store large amount of data from multiple data sources and diverse external targets/services.
- Perform hands on development, coaching and leadership through all project phases.
- Keep system running at optimal speed and help troubleshoot application operational issues.
- Write server and client-side code for company applications and provide feedback to the pull requests of other team members.
- Work both as an individual contributor and as a member of a team to deliver features and architectural improvements.
- Work directly with product management and design to plan, develop and iterate on prototypes.
- Full ownership including: designing, implementing, testing and metric analysis.
- Participate in team and other assigned meetings.
- Other duties as needed or required.
Desired: Master’s degree plus five years of job-related experience, or Ph.D. plus three years of job related experience from an accredited university in an applicable field such as computer science.
Required: Bachelor’s degree from an accredited university in computer science or engineering plus at least seven years of applicable and job-related experience.
- Languages: Experience with C++ is preferred, experience with Java and/or Scala and/or C# is acceptable
- Databases: MySQL, InfluxDB, Cassandra, MongoDB
- Experience designing and deploying production-grade software
- Experience with object design
- Experience writing distributed systems
- Experience developing and debugging software on a network stack IP, TCP, HTTP, REST
- Experience with Hadoop (MapReduce, Spark), or similar, large scale data processing systems
- Solid understanding and working knowledge of relational or non-relational databases
- Solid understanding and working knowledge of modern operating systems and/or application scalability techniques
- Engineering tools: Ansible, Bootstrap, Jenkins, Github
- Runtime: Docker, Kubernetes, Angular, Prometheus, Elasticsearch
- Clouds: OpenStack, VMWare, AWS, Azure, Google
- BSCS or comparable background
- Experience with Linux based operating systems, including the ability to navigate and administer Linux operating systems
- High level of commitment to contribute to a positive, high-paced and results-oriented work environment
- Understanding on how to scale server-side applications depending on load
- Demonstrated application of software engineering best practices
- Experience working on Agile teams, specifically using the Scrum method
- Excellent communication skills
- Willing to take ownership of problems and see them through to resolution
- Strong desire to work for an early stage startup company on disruptive technologies and make it a success.