NPR is a thriving, mission-driven multimedia organization that produces award-winning news and programming. They are seeking an experienced Java Software Engineer to develop and maintain their platform for distributing public media content to radio stations. The role involves collaboration with cross-functional teams and requires a detail-oriented engineer passionate about modern development tools.
Responsibilities:
- Responsible for design, development and maintenance of our Content Distribution System
- Work closely with the Product Owner and peers from the development team
- Follow software development procedures and report directly to the Sr. Manager of Software Development
- Write, edit, and debug software in Java
- Respond promptly and professionally to bugs reported by QA
- Ability to conduct system analysis independently to keep our systems current with changing technologies
- Analyze system specifications and break down requirements to well defined development tasks
- Test new code thoroughly to ensure logic is correct, and that program results are accurate
- Document code consistently throughout the development process
- Provide assistance to testers and support personnel as needed to determine system problems
- Participate in code deployments to QA and production systems
- Identify and respond appropriately to production problems
- Join the developer 'on-call' rotation after approximately 3 months
- Participate in disaster recovery site readiness and testing
- Participate in daily stand-ups and other scrum activities (e.g. backlog grooming, planning, demos and retrospectives)
Requirements:
- Three to five years experience with building and consuming API's as well as familiarity with various programming languages and frameworks
- Very comfortable using standard software development tools such as IDE's, Open Source Java/C development frameworks, profilers, SQL explorer, and issue/bug tracking tools
- Experience with designing and building tiered software systems using a major relational database
- Experience with Agile / Scrum software development practices
- Fluent in Java
- Fluent in relational databases, such as PosgreSQL
- Experience in front-end web application development
- Experience working with a version control system (Git preferred)
- Experience with unit testing, CI/CD pipelines, and production system deployment
- Experience working in Linux/Unix platform
- Experience with Spring application framework
- Excellent problem solving, analysis and troubleshooting skills
- Exceptional oral and written communication skills
- Strong organizational skills and the ability to work under tight deadlines
- Experience with Vaadin UI framework
- Familiarity with orchestration and automated workflows with tools like Nomad and Consul
- Experience with CI/CD pipelines (Teamcity or equivalent)
- Knowledge of C, C++
- Knowledge Audio over IP systems (e.g. AES67, Livewire, WheatNet, etc)
- Experience with real-time audio processing and low-latency systems
- Knowledge of various network protocols including SRT, RIST, RTP, UDP
- Knowledge of various codecs/formats including MP2, MP3, MPEG-TS, FLAC, Opus, Ogg, AAC
- Experience with audio tools/libraries ffmpeg, libav, gstreamer, ALSA, etc
- Experience with Docker/containers, and major cloud platforms