Seniority Level | Employment Type | Job Functions |
Senior-level | Full-time | Engineering |
What if the devices you use every day were smart enough to understand both their environment and your intent? Imagine what’s possible when your camera can accurately perceive what it’s seeing and hearing without compromising your privacy. Imagine your wearable devices seamlessly integrating into your life, doing what you need them to do for as long as you need them to do it. Imagine if your appliances knew exactly what to do. No complicated settings, just perfect results. So simple it feels like magic.
Join the dynamic and experienced team at Perceive, which is making magic a reality, as a Senior Software Engineer. Be part of the team that’s transforming sensing into perceiving!
Job Description Summary
Perceive is looking for a Senior Software Engineer to join our highly skilled software & tools team. The ideal candidate is expected to assume a hands-on role in the development and support of our advanced ML software and tools infrastructure. She/he will be expected to understand and translate architecture and design requirements to production-ready and commercially deployable solutions. The candidate is expected to demonstrate a structured and very detail-oriented approach to their work and follow rigorous engineering approaches. The ideal candidate will be self-motivated and focused, comfortable collaborating with geographically dispersed teams, passionate about SW and tools, a team player, and eager to make a difference as a member of a motivated group of SW engineers. Strong analytical and troubleshooting skills, excellent written and spoken communication skills, and a strong drive to solve problems and disrupt the status quo are also required for this position.
Essential Duties and Responsibilities
- Develop and support ML SW infrastructure and tools with strong emphasis on efficiency, stability, scalability, and smart resource management
- Maintain and manage ML development frameworks, tools, and applications
- Evaluate requirements, architectures, tools, and quantify design and performance tradeoffs
Minimum Qualifications
- Bachelor’s or master’s degree in any of Electrical Engineering, Computer Science, Software Engineering, or a related field
- 5+ years of experience in embedded software/firmware quality assurance and/or embedded software/firmware development
- Proven experience with test plan development, automated testing, and continuous integration
- Understanding of the software product life cycle and testing of products from inception to end of life
- Experience with development tools such as Docker, Git, and Jenkins
- Experience with C/C++ programming, Python, and scripting associated with large code base development
- Experience with embedded processors, hardware interfaces, communication protocols, multi-threaded programming, RTOS, Linux, or equivalent system testing
Preferred Qualifications
- Experience with Event Drive Design and CQRS patterns
- Experience with ML frameworks, such as PyTorch and TensorFlow
- Experience with ML workflow tools, such as MLflow, KubeFlow, or DVC
- Experience running ML workloads in the cloud
- Experience with AWS SageMaker, Azure Machine Learning Studio
- Experience with the ELK stack (Elasticsearch, Logstash, Kibana)
- Hands-on experiences in deploying Python applications with Gunicorn and Fabric
- Experience with databases – both relational and non-relational
- Agile/Kanban development expertise
- Git workflow
- Familiarity with Atlassian Data Center applications
Work Environment
- This position involves working mainly in a typical desk/office environment. Travel to other Perceive offices may be required occasionally
Location
- Primary location: Vancouver, BC
- Secondary location: San Jose, CA