The Software Engineer will design, implement, benchmark, and deploy simple, elegant, high-performance backend services using Python and Java that are highly horizontally scalable and support rapid expansion.
Specific responsibilities include the following:
- Design and prototype user interfaces for both mobile applications and web sites, including debugging and performance improvements, while applying knowledge of caching principles and paradigms to improve performance
- Write Vertica queries and analyze data with Hadoop and analytics tools such as Metric Insights and Tableau
- Distributed Systems research, development, and debugging, including debugging across process boundaries for server-side development of back-end services;
- RESTful Web Services development and application of knowledge of client-server architectures and authorization schemes to design and build robust application programming interfaces (APIs) to support client applications, including debugging and performance improvements, using tools such as IntelliJ, PyCharm and Eclipse APIs
- Linux multithreaded programming with Java, Python, or similar programming languages to design, develop and maintain stable and scalable server systems; and
- Design, develop, and maintain database systems utilizing relational databases and object-relational mapping (ORM).
The position will also provide technical leadership in design, guidance, and implementation of specific subsystems and frameworks; work with development teams distributed across different geographies and time zones; mentor junior engineers; and adhere to timelines, budgets, and deadlines.