Senior Software Engineer
Day to Day Activities
- Build communication systems that span across multiple distributed systems.
- Design and drive efforts on testing and automation, logging and monitoring, code quality and performance, and documentation and knowledge sharing.
- Architect computational models that drive high performance perception pipelines.
- Provide guidance to other engineers about implementation, design architecture, and style.
- Design abstractions and APIs for testability, maintainability, scalability, usability.
- Strong knowledge of Modern C++ and Python.
- Strong experience with versioning and dependencies across multiple codebases.
- Experience with Linux (kernel, systemd, packaging systems, performance and debugging tools, etc..).
- Knowledge of IPC techniques and implementation.
- Knowledge of containerization and paradigms (docker, kubernetes, etc...).
- Strong grasp of networking concepts, principles, and tools (ARP, TCP, VLANs, DNS, NGINX, wireshark, etc…).
- Strong experience with software development processes (testing, CI/CD, design documentation, project management workflow, code reviews, source control conventions).
- Strong architectural and object oriented or functional design experience - able to start the right patterns of design for proper testability, debuggability, logging trackability, reliability, and scalability.
- Experience deploying softwares and configuring distributed systems.
- Knowledgeable about the full stack of software: web disciplines to low level systems.