Media Services is the team responsible for publishing all of the BBC’s online audio and video content, powering iPlayer, iPlayer Radio, News and Sport. We handle live content, “catch-up”, and podcasts.
iPlayer supports over 1000 different devices, including PCs, phones, tablets, games consoles, and smart TVs. The iPlayer and iPlayer Radio apps are installed on over 30 million phones and tablets, and we handle 13 million plays per day. Every day we ingest and publish over 1000 hours of catchup content, and publish 3-4TB of new files.
We make programmes available using a range of the latest streaming technologies, providing the best possible playback across multiple platforms and devices. All of this adds up to a high-profile, large-scale product with a fast-moving development environment.
We are looking to recruit talented software engineers to join the team, helping us to continue to build the audio and video processing systems that power BBC online media, so our audience can continue to enjoy iPlayer.
Aims Of The Role
We’re looking for an experienced Lead Developer with in-depth knowledge of cloud based infrastructure design and delivery. You’ll primarily be responsible for delivery of one of the engineering teams within Media Services, as well as working closely with the other team Development Leads, Technical Architects, Product Managers, Audio/Video Specialists, Test Engineers and operations staff.
Key responsibilities of the Lead Developer will include:
- Build a high performing team of developers, grow and mentor the technical skills within the team and create development opportunities for them
- Designing and developing software and APIs for use within Media Services, the wider BBC, and partner organisations beyond.
- Writing unit and integration tests within automated test-driven environments to ensure quality, and monitoring the strength of testing applied by the rest of the team
- Reviewing the work of other team members, and coaching other team members to provide useful review feedback to their peers
- Ensuring that the team produces clear, concise and comprehensive technical documentation and operational support materials
- Working with product managers to make sure that requirements are clear and implementable
- Working with Technical Architects and Principal Software Engineers to develop the detailed technical design and plan the implementation tasks for upcoming work
- Give feedback into the product planning process based on rough estimation of implementation complexity / cost.
The Ideal Candidate
Essential Knowledge and Experience required will include:
- Experience of supporting teams of multiple developers, and leading the delivery of specific features by that team
- Advanced ability to coach/guide/influence less experienced developers
- Have the ability to rapidly acquire new software skills and work with new technologies
- Are comfortable working in a Unix-like environment (bash)
- Experience of asynchronous messaging systems and integration patterns
- Are competent programming in Java (7 or later), and at least one scripting language (e.g. Python, Perl, Ruby)
- Have experience of Test-Driven Development (mockito, junit, rspec)
- Have experience using build tools (e.g. Maven) and continuous integration tools (e.g. Jenkins)
- Have experience of source control systems (e.g. SVN, Git), bug tracking tools (e.g. Jira) and Wikis.
- Experience of cloud based technologies and infrastructure design, specifically AWS technologies
- Experience of service infrastructure design in high volume consumer facing environments.
- Experience in defining and developing high-volume, horizontally scalable architectures for always-up, always-available services
- Experience with ‘cloud’ computing (especially AWS: Lambda, EC2, SQS, SNS, S3, Cloudformation, auto-scaling)
- Experience of NoSQL databases / caches x Development: IntelliJ, Eclipse, Camel
- Debugging and diagnostics: jmap, jstack, strace, perf, tcpdump, wireshark
- Build experience with: Maven2, Artifactory, rake x Logging: Splunk, Elasticsearch, LogStash, Kibana, Sumologic
- Monitoring: CloudWatch, Zenoss, Nagios x Packaging: RPM
- Knowledge of public sector security and privacy policies
- Understanding of A/V systems, codecs, streaming technologies, content protection/DRM
- Experience of working in Agile teams x Experience of pair programming
- Experience using behaviour-driven development