Accepting applications until: 24 February 2025 Job Description
Senior Java Developer
Reporting of the role
This role reports to the Tech Lead
Overview of job
The audio services team are responsible for developing the streaming servers that sit at the heart of DAX, Globals’ digital ad exchange. The application streams live, and on-demand content, to millions of listeners every day. This includes brands such as Capital, Heart, RadioX, Smooth and LBC, along with powering Alexa’s news-briefings within the UK.
While we deliver content, we also insert tailored ads, which empowers Global to offer its products at no-cost to end users. This involves finding an appropriate ad for every unique listener and inserting it into live and on-demand audio streams. This happens in real-time with sub-millisecond deadlines, so performance sits at the heart of what we do.
In this role, you will find yourself working closely with low-level audio formats, enhancing our ability to deliver audio to more listener devices while improving listener experience. With every new feature, you will be exposed to JVM profiling and tuning, as well as bespoke data structures; optimised for low latency in a highly concurrent environment. Due to this, our application is completely bespoke, built on top of Java17.
We are a friendly and close-knit team, working in a highly collaborative agile environment.
3 best things about the job
1. Work on a platform that requires millisecond response times, serving millions of people concurrently 24/7, 365.
2. Work with designing custom data structures and algorithms to optimise ad delivery, with peak requests of over 5000+ requests per second.
3. Work in an agile team, where you can have the time and freedom to explore solutions to technical problems. This can be from benchmarking algorithms to use on a critical path through the application, to exploring what packages we can make use of to hold user-state between servers. The problems are varied, and we are given space to research solutions before we build on top of them.
Measures of success –
In the first few months, you would have:
1. Followed good development practice and taken part in code reviews.
2. Delivered new audio streaming capabilities to millions of users around the world.
3. Supported and maintained production infrastructure (the team has a strong ethos around maintaining your own services).
4. Run performance tests, using Java17, Java Flight Recorder, Java Mission Control, Gatling, and custom audio streaming tool kits maintained by the team.
5. Worked with the team to help shape and design the product roadmap, balancing performance improvements, along with new feature requests from the business.
Responsibilities of the role
1. Developing features to a high technical standard, including performing code reviews, unit testing, integration testing, performance testing, and release management.
2. Help contribute to our agile development process.
3. Help drive our collaborative learning culture.
4. Help maintain a reliable production environment.
What you will need
1. The ideal candidate will have a passion for solving technical problems, enjoying both collaboration and exploring solutions on their own. They will strive to seek out new and interesting ways to approach distributed and concurrent problems. They will be creative in their approach, using repeatable testing and metrics to prove the success of their solution.
2. They should love to learn, both in upskilling their own knowledge, and sharing knowledge with other teams within Global.
3. The team deems this attitude more important than any previous technical experience; however, the following things are a nice to have based on the sort of work you will be doing daily:
4. Interest / experience in designing highly concurrent distributed systems.
5. Experience with managing Java Threads, along with the use of specialised concurrent data structures, such as Ring Buffers.
6. An understanding of hardware, and how operating systems interact with it, with a focus on memory management models and CPU/disk caching.
7. Experience with Java 8/11/17 (we currently run on Java 17).
8. Experience tuning and optimising Java bytecode and JVMs.
9. Experience in low-level networking with both TCP and UDP.
10. Experience with monitoring and maintaining large production systems.
11. An eye for detail and the desire to make sure things are done right.
Everyone is welcome at Global
Just like our media and entertainment platforms are for everyone, so are our workplaces. We know that we can’t possibly serve our diverse audiences without first nurturing and celebrating it in our people and that’s why we work hard to create an inclusive culture for everyone. We believe that diversity will set us apart, so no matter what you look like, where you come from or what your favourite radio station is, we want to hear from you.
We will always seek to make appropriate adjustments to the recruitment process and workplace to be fully inclusive to people with different needs and working styles. If you require us to make any reasonable adjustments for you or to disclose a condition, please email recruitment@global.com.
#J-18808-Ljbffr