Contribute to the research and design for software development assignments in various development environments such as Agile for specific software functional areas and product lines. Determine end-user needs, contribute to software development lifecycle planning, and determine software system architecture. Develop and manipulate data models using Java/J2EE, JavaScript, JSP, HTML, XML, SQL, Windows, UNIX, and .Net programming languages. Write and review detailed specifications for the development of complex software. Document every aspect of software applications or systems as a reference for future maintenance and upgrades. Collaborate with members of the development team to understand product requirements and translate them into software designs. Resolve technical issues and complete bug fixes. Perform other duties as needed.