Be responsible for designing, coding, testing, implementing, maintaining, and supporting application software that is delivered on time and within budget. Work closely with customers, business analysts, technology, and project teams to understand business requirements, drive the analysis and design of quality technical solutions that are aligned with business and technology strategies, and comply with the organization's architectural standards. Provide technical guidance to the development team through the full software life cycle.
· Create low level design documents (including code samples/outlines) and detailed engineering specifications based on complex business, user, and non-functional (e.g., performance, reliability, balance, and controls) requirements. Write code that adheres to coding standards, procedures, and techniques. Maintain the integrity of existing program logic according to specifications.
· Actively participate in the code review process to ensure development work adheres to standards and specifications (including peer review and code review external to team). Ensure the quality of work completed by vendor partners. Write and/or revise system design documentation and operations documentation to include providing required input into operation support manuals.
· Unit test all code and programs prior to releasing them to quality assurance. Quickly resolve all unit test issues. Assist quality assurance in identifying test cases and creating/mining test data to enable a thorough test of all development deliverables. Respond to all inquiries and issues in a timely manner as developed code/program moves through the testing process.
· Provide mentoring and direction to more junior members of the application development team. Influence the shaping of standards and tools. Provide governance oversight to ensure project adherence to development strategy, standards, policies, tools, and procedures. Guide the development team to consistently apply appropriate development principles and standards during all phases.
· Work in partnership with the project team and business to fully understand project goals and requirements and use this knowledge to effectively plan and execute the development process. Participate in project design walkthroughs. Evaluate interrelationships between applications to determine whether a change in one part of the project would impact or cause undesirable results in related applications and design for effective interfaces between interrelated applications.
· Improve the health of system assets by identifying enhancements to improve performance, reliability, and resource consumption. Track exceptions to standards (e.g. security gaps) to ensure they are addressed in a planful and timely fashion. Evaluate and troubleshoot root-cause analysis for production issues and system failures; determine corrective action(s) and propose improvements to prevent their recurrence.
· Maintain up-to-date business domain knowledge and technical skills in software development technologies and methodologies. Provide input in the selection, implementation and use of development tools and best practices. Work effectively in a team environment to ensure that solution delivery is on time, within cost estimates and meets business needs.
· Performs other duties as assigned.
· Bachelors degree or equivalent (4-years) in Computer Science, Engineering, or related Field; or equivalent work experience.
· 5-7 years of relevant experience required.
· 5-7+ years of experience coding and/or designing in relevant programming languages (specific required languages will vary by position).
· 5+ years of practical experience and proven success with the design and build of complex software applications.
· Demonstrated experience coding and/or designing in multiple environments.
· Proven ability to successfully translate client/business needs into software designs.
· Proven analytical and business skills to reconcile conflicting objectives and find/design acceptable compromises within existing limitations.
· Understand and apply both current technical solution elements (specific tools, components, and frameworks) and abstract elements (algorithms and architectures).
· Effectively apply technology/engineering knowledge-base to multiple and evolving programs and languages