About the role
The National Center for Missing and Exploited Children (NCMEC) is seeking a creative and self-motivated Software Engineer to join their Software Engineering team. The role involves developing innovative solutions to complex problems related to child exploitation while collaborating with industry leaders and law enforcement agencies.
Responsibilities:
- Write well designed, testable, efficient code
- Develop innovative ideas and solutions for complex operational and technical challenges
- Rapidly iterate on new and existing applications to enhance and extend capabilities while ensuring scalability, reliability, and performance
- Participate in the full software development lifecycle as part of a high performing Scrum team
- Partner with technology industry leaders (Facebook, Google, Palantir, Amazon, Adobe, Intel, etc.) and domestic and international law enforcement agencies to help detect and prevent child exploitation
- Function as a domain expert on information systems
- Assist in the review and refinement of software requirements
- Assist with identifying and implementing process improvements to existing business and IT processes that will increase operating efficiencies
- Assist in the evaluation of technical solutions for the Technology Division and provide detailed estimates to support the planning efforts of the operational divisions
- Participate in code reviews to ensure applications support existing architecture and framework guidelines and adhere to high quality coding standards
- Respond to and assist in the resolution of production issues as needed, with the rare occurrence of support required after hours
- Maintain the integrity and confidentiality of highly sensitive material, information, and processes
- Work effectively with minimal supervision in an Agile environment while mentoring junior Engineers
Qualification:
- Bachelor's degree in Computer Science, Information Technology, or related field or equivalent experience
- 3-5 years of full stack Java development and familiarity with Spring Boot and the Spring Framework
- Experience building highly available, scalable, cloud-ready applications, including client, server, and database layers
- Strong object-oriented software development and data modeling skills
- Experience with the design and implementation of distributed systems and microservice architectures
- Experience with the design and implementation of RESTful web services
- Experience with the design and implementation of message-driven and event-driven architectures as well as message brokers (RabbitMQ, ActiveMQ, Kafka, etc.) and Spring AMQP
- Experience with the design and implementation of relational databases
- Strong ability to debug code and troubleshoot issues
- Experience with unit testing frameworks such as JUnit, Mockito, and TestNG
- Understanding of Agile software development, including the ability to gather and analyze requirements
- Ability to think beyond an immediate task and consider long-term goals and implications
- Ability to work well in a collaborative team environment and to accept and provide feedback
- Excellent organization and time management skills and the ability to prioritize and carry out multiple tasks
- Self-sufficiency and internal motivation to determine impediments and produce solutions
- Excellent critical thinking skills, attention to detail, and an eye for consistency and productivity
- Excellent interpersonal and oral and written communication skills
Skills
full stack Java development
Spring Boot
RESTful web services
Distributed systems
Microservice architectures
Cloud-ready applications
Message-driven architectures
Event-driven architectures
Relational databases
Frontend development
Containerized applications
CI/CD tools
Java
Object-oriented software development
Data modeling
RabbitMQ
ActiveMQ
Kafka
Spring AMQP
NoSQL data stores
Solr
Elasticsearch
MongoDB
Neo4j
JavaScript
TypeScript
Sass
Angular
React
Bootstrap