Automation Products company needs a Sr. Software Developer who will design, program, and maintain C-based embedded applications for Linux and potentially other real-time operating systems. Full life-cycle application development and maintenance. Participate and/or lead in product definition, specification, and requirements analysis, working with Product Managers, Product Engineers, and others in the development organization.
Great things about working here!
- Quarterly bonuses and generous profit sharing
- Team-based culture
- Excellent benefits: health/dental/life insurance
- 401(k) matching - 100% vesting after 1 month of employment
- On-campus cafe and gym and exercise classes
- Tuition reimbursement
Requirements:
- Design, code, test and document new embedded firmware applications or feature enhancements to existing applications in C programming language
- Resolve issues (bugs reported through JIRA) with code
- Apply Object Oriented Design principles and adhere to appropriate standards and accepted practice
- Document, design and write source code as needed
- Participate in and support all phases of testing
- Participate in software release and post-release activities
- Support the user documentation team, providing source documentation as needed
- Learn new programming languages, job-related technologies, API’s and development and runtime environments as necessary
- Lead and/or support New Product Development (NPD) process continuous improvement
- Develop and mentor less experienced developers
- Participate in business meetings, etc. as needed
- Initiate strategic development discussions or projects for product roadmaps or NPD process design
Qualifications:
- Bachelor’s in Computer Science or equivalent required and 10 years related experience in embedded firmware applications or Master’s in Computer Science or equivalent and 7 years of experience
- 8 years of experience in developing code with resource limited runtime environments for embedded products is required
- Thorough understanding of Personal Computers (Memory, Storage, Processors, etc.) is required
- Proficient in Object-Oriented and Visual programming languages (e.g., C++/C#, Java, VB, etc.) is required
- Proficient with web technologies such as HTML5, CSS, JavaScript or XML is preferred
- Experience in low-level languages (e.g., Assembler, ladder, etc.) is required
- Expertise of microprocessors (ARM preferred) and hardware architectures (address/data buses, memory addressing and management, peripheral connections, programming instruction sets) is required
- Expertise with Real Time Operating Systems (RTOS) for embedded products is required
- Expertise with Linux operating systems required
- Experience with industrial programmable logic controllers and interface protocols is preferred
- Proficiency with internationalization and localization issues (language support, etc) is preferred
- Proficiency with data communications is required
- Basic understanding of electronics and electricity is strongly preferred
- Proficiency with database management is preferred