Bachelor's degree or equivalent
3+ years of non-internship professional software development experience
3+ years of non-internship design or architecture (design patterns, reliability and scaling) of new and existing systems experience
3+ years of computer science fundamentals (object-oriented design, data structures, algorithm design, problem solving and complexity analysis) experience
Experience with full software development life cycle, including coding standards, code reviews, source control management, build processes, testing, and operations
3+ years of embedded firmware development experience