Design and implement software solutions for embedded systems with microcontrollers or PLCs. Construct rich user interfaces and coordinate the operation of electromechanical devices. Develop system software and tools for developers. Generate code in languages like C, C++, C#, Python, and the IEC 61131-3 PLC languages. Develop in GNU/Linux and Windows environments using proprietary and open-source tools. Generate technical documentation and employ the use of version control.