C3 AI is looking for Senior Software Engineers to join the rapidly growing Data org within the Platform Engineering department to work on high-value technologies at the intersection of large-scale distributed systems, data infrastructure, and machine learning. They will design, develop, and maintain various features in a highly scalable and extensible AI/ML platform for large-scale applications, involving data science, distributed systems, and multi-cloud strategy.
Requirements
- High proficiency in coding with Java, C++, C-Sharp, or some other compiled language. Python would also be acceptable.
- Strong competency in object-oriented programming, data structures, algorithms, and software design patterns.
- Experience with version control systems such as Git.
- Experience with large-scale distributed systems.
- Experience with any public cloud platform (AWS, Azure, GCP).
- Some familiarity with distributed computing technologies (e.g., Hadoop, Spark, Kafka). Familiarity with managed versions of these technologies on public cloud platforms is also acceptable.
- Familiarity with technologies in the modern data science/analysis and engineering ecosystem (e.g., Pandas, Koalas).
Responsibilities
- Design and develop infrastructure and services to enable data pipelines for petabyte level scale and more.
- Design and develop abstractions over datastores such as Cassandra, PostgreSQL, Snowflake, etc.
- Design and develop file system abstractions over AWS S3, Azure Blobs, HDFS, etc.
- Design and develop connectors to various external data stores.
- Design and develop distributed system components for stream processing, queueing, batch processing, analytics engines, etc.
- Develop and maintain industry-leading, high-performance APIs for AL/ML applications.
- Develop and maintain features for distributed computations over large-scale data for ML workflows.
Other
- Work with architects, product managers, and software engineers across teams in a highly collaborative environment.
- Participate and provide insights in technical discussions.
- Write clean code following a test-driven methodology.
- Deliver commitments promptly following agile software development methodology.
- Good verbal and written technical communication ability to facilitate collaboration.