Senior Software Engineer - Edge and Embedded Platforms
Job description
We are a stealth-mode, NEA (https://www.nea.com/)-funded startup based in the San Francisco Bay Area. Our team consists of veterans from industry (Uber, Apple, Amazon, Google, Rohde & Schwarz) and academia (Stanford University) joining forces to address the most fundamental problems in machine perception and sensor fusion. We've built a new disruptive Tagless Activity Tracking platform, with roots in academic research, to revolutionize the world of industrial automation. You can find out more about us by visiting our website (https://www.plato.systems/).
Our mission and team expertise spans beyond software to advanced sensor systems, algorithms, embedded systems, signal processing, and machine learning. Our team is building and deploying edge software and cloud services for real-time customer facing products as well as internal big data tools. We look for people with a depth of expertise and experience in one of these areas, and with the intellectual curiosity for interacting with, learning from, and teaching world-class experts in areas outside their expertise..
We currently have an exciting opportunity for software development on an embedded edge linux platform. The candidate will join a multi-disciplinary team of scientists and engineers and support multiple teams across the company.
Responsibilities:
You will be writing efficient, robust, and scalable code aimed at system-level development/testing of a product that produces real-time machine learning inference based on input from multiple sensors. This is a highly technical hands-on role which requires in-depth technical understanding of software in a resource-constrained environment, and requires a familiarity with various infrastructure and tools needed to support the development, robust operation, and testing / continuous monitoring of this product. It is expected that you can track and clearly communicate work you are doing related to release readiness, identify any gaps, and consistently assess new and innovative ways to improve the quality and performance of our products, as well as evangelize performance and architecture standard methodologies throughout the engineering team.
Some examples of your day to day tasks and requirements:
- Develop and optimize real-time multi-sensor solutions using Python on a Linux platform and integrate into existing pipelines
- Handle GPU - CPU code optimizations and profiling, multi-threading, multi-processing operations on edge
- Design and develop optimized C/C++ software on the edge and port over existing Python code
- Take part in defining our software architecture and roadmap and aligning with the business needs of the company
- Performance tuning, balancing, improving usability and automation
- Test and debug end-to-end pipelines and hardware I/O components
- Support, maintain, and document software functionality
- Integrate software with existing systems
Basic Qualifications:
General
- BS/MS in Computer Science (or similar degree) with 5+ years of experience
- Industry experience as a key member of a large development group or start-up experience with exposure to full Product Development Life-cycle, i.e. initial product specification, product design & development, and post launch maintenance.
- Extensive hands-on experience with commercial software development in Python and C/C++.
- Have a deep understanding of branching and software configuration management. Hands-on experience with GIT (including branching/merging/rebasing/tagging)
- Experience with code review processes (e.g. Pull Requests or Phabricator Diffs)
- Experience in software architecture design for customer facing applications or products.
- Excellent writing and communication skills
Embedded Platform/System
- Experience in Embedded software development for Linux
- Experience with profiling and debugging high-performance software systems
- Knowledge and experience in SoC power, performance, system design and specifications
Cloud / Backend
- Knowledge and experience with networking and security
- Experience in designing, developing, and deploying scalable services
Preferred Skills:
General
- In depth experience with parallel programming, thread-safe coding, memory management, garbage collection, queue processing, mutexes, semaphores, debugging complex systems, and other fundamental computer science concepts in resource-constrained environments. CUDA programming experience would be a plus
- Familiarity with operation of python numerical and data science libraries (e.g. numpy, scipy, opencv) and their resource/memory utilization
- Prior experience with development and deployment of automated build, continuous integration, and test automation systems (e.g. Jenkins)
- Experience with agile development methodologies, using Agile Lifecycle Management tools like JIRA or VersionOne
- Experience with other higher-level object-oriented (or similar style) programming languages, such as JAVA, Go, Ruby, etc.
Embedded Platform / System
- Experience with integration of different sensor modalities (HW) and algorithms (SW) including machine learning for an edge device
- Experience with GNU Make and/or CMake, and/or LLVM.
www.colinoncars.com is the go-to platform for job seekers looking for the best job postings from around the web. With a focus on quality, the platform guarantees that all job postings are from reliable sources and are up-to-date. It also offers a variety of tools to help users find the perfect job for them, such as searching by location and filtering by industry. Furthermore, www.colinoncars.com provides helpful resources like resume tips and career advice to give job seekers an edge in their search. With its commitment to quality and user-friendliness, www.colinoncars.com is the ideal place to find your next job.