BASIC FUNCTIONS: This position performs complex research, design, and software development assignments within a software functional area or product line, and provides direct input to project plans, schedules, and methodology in the development of cross-functional software products. This position performs software design — typically across multiple systems; mentors more-junior members of the team; and talks to users/customers and translates their requests into solutions.
• 5+ years of Software Engineering experience
• BS Engineering/Computer Science or equivalent experience required
• Advanced knowledge of software development methodologies (e.g., Agile, Waterfall).
• Strong proficiency with data manipulation language including optimization techniques.
• Strong understanding of normalized/dimensional data modeling principles.
• Strong knowledge of multiple data storage subsystems.
• Strong research skills.
• Strong knowledge in industry best practices in development.
• Knowledge in using and developing applicable tool sets.
• Ability to interface competently with other technical personnel or team members to finalize requirements.
• Ability to work well with internal and external technology resources.
• Knowledge of test-driven development.
• Ability to write and review portions of detailed specifications for the development of complex system components.
• Ability to complete complex bug fixes.
• Good oral and written communications skills.
• Interface with other technical personnel or team members to finalize requirements.
• Write and review portions of detailed specifications for the development of complex system components.
• Complete complex bug fixes.
• Work closely with other development team members to understand complex product requirements and translate them into software designs.
• Successfully implement development processes, coding best practices, and code reviews.
• Operate in various development environments (Agile, Waterfall, etc.) while collaborating with key stakeholders.
• Resolve complex technical issues as necessary.
• Train entry-level software engineers as directed by department management, ensuring they are knowledgeable in critical aspects of their roles.
• Keep abreast of new technology developments.
• Design and work with complex data models.
• Mentor less-senior software developers on development methodologies and optimization techniques.
• All other duties as assigned.