Collaborate with cross-functional teams to design and implement software solutions.
Applies Software knowledge and experience to design, develop, create, modify, and validate embedded and cloud edge software, applications, and/or specialized utility programs.
Analyzes user needs and software requirements to design and customize software for optimal operational efficiency.
Designs and implements software modules for products and systems.
Participates in the design, coding for large features, unit testing, significant debugging fixes, and integration efforts to ensure projects are completed to specifications and schedules.
Performs code reviews and regression tests as well as triages and fixes issues to ensure the quality of code.
Collaborates with others inside project team to accomplish project objectives.
Writes technical documentation for Software projects.
Works under supervision.
Decision-making may affect work beyond immediate work group.
Requires verbal and written communication skills to convey information.
May require basic negotiation, influence, tact, etc.
Tasks do not have defined steps; planning, problem-solving, and prioritization must occur to complete the tasks effectively.
Bachelor's degree in Engineering, Information Systems, Computer Science, or related field and 2+ years of Software Engineering or related work experience.
OR Master's degree in Engineering, Information Systems, Computer Science, or related field and 1+ year of Software Engineering or related work experience.
OR PhD in Engineering, Information Systems, Computer Science, or related field.
2+ years of academic or work experience with Programming Language such as C, C++, Java, Python, etc.
3-5 years industry experience in the following areas.
Excellent coding and debugging skills in C/C++. Good knowledge on Data structure and algorithms.
Experience in object-oriented analysis and design (OOA and OOD) Good knowledge of Design patterns.
Experience with excellent analytical and problem-solving skills.
Have development experience in Windows/Linux based environment.
Experience with version control systems (e.g., Git). Knowledge of software development lifecycle (SDLC) processes.
Understanding of multi-threading and concurrency.
Web development skills, Electron, React, Angular, and Node.js, Jenkins, and CI/CD processes.
Development experience with USB drivers; knowledge of libusb is a plus.
AI programming / Large language models (LLMs etc..
Strong C programming skills.
Experience with multithreading and concurrency Strong understanding of memory management including heap and stack memory allocation.
Strong understanding of data structures and algorithms.
Experience with debugging tools (windbg, Visual Studio debugger, Process Explorer etc) Writing portable and cross platform code.
Experience with CMake for cross platform build configurations.
Experience in using source control management tools like git.
Experience in C++ programming.
Experience in Linux System Programming.
Experience in using Win32 APIs.
Use of Linux debugging tools (gdb, strace etc) Ability to work in a fast-paced dynamic team environment.
Possess good communication skills and be a team player.