MI
Job Description
Key Responsibilities
- Design, develop, and maintain core system features, backend services, and engines.
- Collaborate with cross-functional teams including backend, AI, robotics, design, and content teams to fulfill platform requirements.
- Investigate design approaches, prototype new technologies, and evaluate technical feasibility.
- Optimize backend infrastructure for scalability and responsiveness.
- Ensure adherence to best practices in software design, development, security, monitoring, logging, and DevOps throughout project execution.
- Introduce innovative ideas, products, and features by keeping up with industry trends and latest developments.
- Operate within an Agile/Scrum environment to deliver high-quality software on aggressive schedules.
Required Skills & Experience
- Proficiency in distributed application development lifecycle concepts such as authentication, authorization, security, session management, load balancing, and API gateways.
- Strong programming skills in Java; familiarity with other server-side languages like Python or PHP is a plus.
- Experience working on Linux-based operating systems.
- Familiarity with server-side frameworks such as Servlets, Spring, or Java Spark.
- Experience with ORM/data access frameworks like Hibernate or JPA integrated with Spring or other frameworks.
- Knowledge of data serialization frameworks (e.g., Apache Thrift, Google Proto Buffs, Apache Avro, JSON libraries like Jackson).
- Experience with inter-process communication frameworks such as Web Sockets, RPC, message queues, or libraries like Kryonet, RxJava.
- Understanding of multithreading and concurrency concepts including threads, thread pools, futures, and asynchronous programming.
- Experience in defining system architectures and evaluating tradeoffs in architecture, design patterns, reliability, and scalability.
- Experience developing cloud-based software services with an emphasis on scalability, performance, and reliability.
- Good understanding of networking and communication protocols; ability to identify and resolve CPU, memory, and I/O bottlenecks.
- Knowledge of monolithic and microservices architectural paradigms.
- Experience with cloud hosting platforms such as Amazon AWS, Google Cloud, or Azure.
- Proficiency in at least one database technology: SQL (MySQL), NoSQL (MongoDB), or graph databases (OrientDB).
- Familiarity with testing frameworks/tools like JMeter, Locust, Taurus.
- Version control experience with Git.
Additional (Preferred) Skills
- Experience with RPC frameworks like Apache Thrift, gRPC.
- Familiarity with asynchronous libraries/frameworks such as RxJava, Akka, Play, Vert.x.
- Knowledge of functional programming languages like Scala.
- Experience with NoSQL/graph databases.
- Knowledge of server/application monitoring and logging tools such as Monit, ELK stack, Graylog.
- Experience with DevOps tools including Ansible, Salt, Puppet.
- Containerization technologies like Docker, LXD.
- Experience with container orchestration platforms such as Kubernetes.
Qualifications
- Bachelor's degree in Computer Science, Engineering, or related field.