Responsibilities
- Manage a team of developers/engineers.
- Perform complex development work and provide recommendations to management on potential solutions to issues.
- Manage staff and all phases of the project life cycle, including implementation, programming, testing, and maintaining software systems.
- Manage deadlines, budgets, and other department-related tasks.
- Lead the team effectively.
- Play a key role in the development and support of critical applications within the team.
- Work closely with other teams to implement end-to-end solutions.
- Develop and implement full stack solutions using Java 8 and above.
- Develop comprehensive and appropriate test cases for each release.
- Develop system and training documentation as needed.
- Provide technical programming support or subject matter expertise to other team members as needed.
- Manage and resolve a variety of problems within the respective technology setting.
- Provide solutions based on best practices and existing precedents.
- Demonstrate an understanding of the urgent nature of our business and the need to proactively find and fix problems quickly and effectively.
- Determine and fix root causes rather than just treating symptoms.
- Apply novel techniques to solve problems that are more ambiguous; challenge long-held beliefs when necessary.
- Quickly and effectively identify alternative solutions and the pros/cons of each; confirm that a proposed solution has no unintended consequences.
- Take steps to mitigate risk.
- Consult with colleagues and recommend solutions based on the best interests of customers and shareholders, even when the opinion is unpopular.
- Frequently interact with the team and management to resolve issues or inquiries related to development.
- Improve processes and procedures where possible.
- Actively listen and speak to, not over, others.
- Use clear and constructive language orally and in writing.
- Communicate important developments to the relevant and appropriate audiences in a timely and consistent manner.
- Ask follow-up questions to ensure all points are understood.
- Take time to objectively listen to all viewpoints before forming an opinion.
- Build consensus among differing views.
- Contribute to the team by managing projects assigned to junior developers.
- Assist other technical and product managers in the evaluation of product requirements for software applications.
- Develop and review detailed specifications.
Knowledge and Experience
- Bachelor's or Master's degree in Computer Science or Software/Computer Engineering (or foreign degree equivalent).
- Extensive experience.
- Strong programming and management skills in relevant technology.
- Exposure to modern software development tools and processes.
- Detail-oriented and good organizational skills.
- Very good communication skills.
- Ability to work in a team environment.
- Demonstrable experience to a high standard of development using Java, Oracle, and Linux technologies.
- Expert in the use of source version control using Git.
- Applied experience developing full stack solutions on Linux and/or Windows.
- A team player who collaborates effectively with other software engineers.
- Self-starter, who is both disciplined and accountable for delivering accurate and timely results.
- Contribution to open-source software is an advantage.
- Demonstrate a strong knowledge and understanding of the development area.
- Understand how team contributions factor into the overall health of the technology function.