Software Engineer
Date: Sept 06, 2024
Location: India (Remote)
Company: BPM Microsystems, Inc.
About BPM Microsystems and the Job
Imagine developing and supporting a world-class technology product required by every factory producing electronics in the world! BPM Microsystems produces the most advanced electronic device programming systems on the market. Our products are robotic high-speed instruments that load data patterns into flash memory chips and microcontrollers. Our customers include the world's top manufacturers of smartphones, tier 1 automotive suppliers, aerospace electronics, consumer electronics, industrial and medical device suppliers as well as component distributors and independent programming centers. You may not know our name, but literally billions of people depend on us every time they use their phones, computers, cars or a wide variety of other electronic devices.
Job Summary
As an exceptional member of our fast-paced Software Engineering Team, you will be creating, testing and maintaining complex applications and embedded systems used to program billions of electronic devices. This is a hands-on challenging position that offers you the opportunity to contribute to the development of new and existing products within highly visible product lines. You will be expected to rapidly learn and understand these complex systems. You will be developing Windows-based applications and embedded software in C++ as well as controlling BPM Microsystems’ semiconductor programming equipment and robotic pick-and-place systems incorporating lasers, vacuum systems, and various machine vision technologies. You are energized by getting hands-on and inventing original solutions to complex problems and seeing it through to customer delivery.
Responsibilities
- Support the Software Development Life Cycle by designing and developing new and current projects, directing system testing and validation procedures, and fixing defects.
- Communicate effectively with customers or departments to capture requirements for new product development and technical issues via documentation, phone conversations, and face-to-face meetings.
- Investigate and discover the root causes of system defects and devise software permanent solutions when possible.
- Conduct and participate in engineering meetings and communicate effectively about the relevant issues.
- Promote continuous improvement within the code and within the department.
- Provide software tools to manufacturing and other internal engineering departments.
- Contribute with creative problem-solving skills that balance thorough design with quick time-to-market and agile responses to customer needs in a fast-paced environment.
Required Skills
A B.E. or B.Tech degree or equivalent is required, preferred MS/ME
Modern C++ Developer with experience in the Visual Studio environment or similar environments
Strong OOD skills with the ability to generate logic diagrams out of engineering discussions and requirements documents
Experience with Templates, STL, and Boost/TR1 C++ Libraries
Experience writing unit and functional tests for automated software testing frameworks like GTest, CPP Unit
Exceptional verbal and written communication skills, with a drive to become a subject matter expert and influence design decisions
Advances and adheres to software engineering best practices
Strong team player who knows both how to lead and follow
Rapidly acquire skills and knowledge of complex systems and development environments
Proactive self-starter motivated to take actions known to benefit the company
Desired Skills
Multithreading in C++
Has understanding of API paradigms
Keen interest in robotics, embedded systems, device programming, and semiconductors
Team-based, source code revision controlled environment