This includes research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities related to software products used internally or externally on product platforms supported by the firm. They work with architects, product managers, project management, and end-users in the development and enhancement of existing software systems and applications, proposing and recommending solutions that solve complex business problems.