As a Java Technical Lead, you will lead a highly-dedicated team building internal and external software systems for Teach For America. You will be responsible for the design, and delivery of mission critical initiatives, leading design sessions, and extensive coding with developers to achieve success.
Our goal is to build dynamic, stable applications that enable our business partners to efficiently perform their jobs and maximize the impact our teachers are having in the classroom and beyond. We operate using agile development techniques (frequent delivery, strong customer interaction, simplicity, unit-testing, refactoring, etc.) We use open-source software whenever possible, and have a strong commitment to developing quality, low-maintenance software systems.
This position reports to the Managing Director of Application Development.
Technical responsibilities will include, but are not limited to:
- Design, develop and maintain Teach For America’s Java based software systems - 75%
- Develop using the following technologies / concepts: Service Oriented Architecture (SOA), Single Page Applications (SPA), Message-Based Architecture, Javascript, CSS, UI frameworks (Node.js, Angular, Backbone, etc.)
- Design, develop using TFA’s standardized architecture practices (and ensuring that developers are also following these practices)
- Write unit tests, perform code analysis, and automate common actions in our CI/CD environment
- Actively influence evolving application architecture
- Participate in all aspects of Teach For America’s agile software development cycle (including scrum processes, assessment, planning, design, development, testing, and support.) - 10%
Management responsibilities may include, but are not limited to:
- Lead a team of developers to successfully deliver mission critical initiatives - 15%
- Mentor junior developer(s), ensuring they have opportunities to grow and learn
- Work effectively with project managers, business analysts, and other teams inside and outside of IT to deliver projects
- Promote Agile/XP development practices (Test Driven Development, Pair Programming, etc…)
- 5+ years of experience with Java oriented service development using a Service Based Architecture
- 5+ years of experience with Java, SQL, and relevant open source frameworks (Spring framework, especially Spring Boot and REST / JDBC Templates)
- Experience building automated testing and deployment pipelines, code analysis tests, and other automation tasks in a CI/CD system (such as Jenkins)
- Experience building and working with messaging and event driven applications (JMS, ActiveMQ, or similar)
- Experience working in an agile development process (XP, Scrum, Kanban, etc)
- Proven track record of leading projects
- Experience architecting applications to run in a cloud environment (Azure, AWS, etc) a plus
- Experience with scripting languages such as Groovy or Python a plus
Skills and mindsets
- Proficient in single page application concepts and leveraging UI technologies to build them (Node.js, Angular, Backbone, etc.)
- Developing with modern frontend frameworks (Node.js, Angular, Backbone, etc.)
- Experience working in a Unix environment
- Understanding of complex infrastructure (Load balancer, F5, CDNs, firewall, etc)
- Must be a quick learner with strong organization, communication and interpersonal skills
- Ability to communicate clearly to technical and non-technical people verbally and in writing, including collaborating with business partners to devise solutions and troubleshoot issues
- Ability to operate effectively, and with a sense of possibility, in a fast-paced, deadline-driven environment
- Willingness to learn new skills as technology needs evolve
Work Demands
- This position is located on site in our downtown New York national office
- Limited domestic travel (1-2 times per year) may be required
- Limited evening or weekend work may be required based on project demands or maintenance schedules. We try to limit this as much as possible.