Audiense is an equal opportunity employer, and we know it's our differences that makes us great, so we want to welcome people from all backgrounds to our family. We encourage Black, Brown, LQBTQ+, Disabled, Mums and Dads to apply!
During the application process please feel free to share which pronouns you use (she/her/hers, he/him/his, they/them/theirs). And please let us know if you need any reasonable adjustments for the application or the interview.
The challenge
At Audiense we process more than one thousand million social profiles. We enrich them by applying several classification and segmentation algorithms to help customers such as Twitter, Telefónica, DHL, and Puma to define their marketing campaigns, identify influencers and discover new market niches.
Our challenge is to optimise the intake, enriching and storage of that growing data asset and to bring the insights computing to be as close as possible to real time.
For that we have a pipeline that ingests data from an enriching system mainly written in Node.js. This system consumes from many third party APIs and applies algorithms to infer new characteristics. This pipeline is able to keep updating a data lake of more than 100 TB that is used to generate reports for our customers using Spark and Scala.
Most of the Data Engineering code base is written in Scala, Spark and Typescript. This codebase is used both for maintaining our data lake and consuming it.
Our current focus is migrating and refactoring all the legacy parts of the batch-oriented ETL pipeline that feeds our data lake to a more real-time, event-oriented architecture based on Kafka.
In order to tackle this challenge, we are looking for people that will feel comfortable with the wide range of skills involved, someone that will add their experience to ours and help us fill the gaps by joining our team.
All our stack is hosted in AWS, we use mainly Docker (ECS), EC2 and Lambda to execute our source code and a wide range of services like SQS and SNS for communication via events.
How do we work?
We have remote-first style work culture, and we have been working 100% remotely for more than 8 years. Although we have offices in Córdoba, our teams (management, sales, customer service, product, marketing and engineering) are distributed across different cities: London, Italy, Málaga, Barcelona, Madrid, Córdoba, Vigo, Seville, Granada, Cuenca...
Our mindset, workflows and communication assume that we are all remote. Almost everything is documented in Github: growth plans, learning path, architecture, protocols, onboarding, playbooks, design system, UX guidelines, etc. We invest everything in our power to automate our daily routines so that we can be as autonomous as possible to allow us to work remotely efficiently.
You will join a cohesive team (more than 4 years on average together) in a very collaborative environment in which you will feel cared for from the start of your onboarding.
Each team applies different agile methodologies but all follow some basic principles. We prioritize the features that bring more value to our customers and, instead of setting deadlines, we deliver small increments so that we always have a functional and deliverable version of the feature. We try to keep the number of tasks in parallel to the minimum possible. We have a few meetings scheduled but we will not miss the daily meetings, biweekly sprint planning and reviews. We have regular 1:1s with the manager and the CTO, and we do not hesitate to jump on to a hangout if a Slack or mail thread is getting longer.
We believe in extreme programming as a development technique so most of the time we do pair programming (yes, remotely) and TDD is our main tool for writing robust and testable code. Pair programming always helps us trust our code allowing for constant iterations. Once per sprint we spend time on joint code review to detect possible glitches to prioritize. We do continuous integration and we are in the process of extinguishing the branches to do trunk base development, there is a challenge here too.
The code we write today tries to respect the principles of SOLID, clean code, and we apply hexagonal architecture and domain driven design when complexity requires it. Of course, we are not going to lie to you, during 7 years we have also done a lot of bad code and antipatterns; consider it an opportunity to see real examples of what not to do and to practise refactoring techniques.
We have a culture of continuous learning and we encourage this to happen during working hours. As a team we have made a pact of following a learning path, so by joining Audiense, you are committing to it too. If you have followed a similar path, we are eager to get to know you and learn from your experiences, if you haven’t, we are looking forward to supporting you with resources, time and mentoring so that we are aligned.
You can learn more about our culture on our engineering blog and our Instagram account.
What are we looking for?
We would like you to be able to read, refactor and test Spark code following good practices, to have experience with Kafka architecture patterns and the best strategies to implement them at scale. Knowledge of the datalake, datawarehouse and deltalake concepts is a plus and in general, being in touch with the data engineering field trends
We are looking for someone with experience in Scala and Spark, or at least Java with an interest in Scala, but not necessarily experience with Functional Programming since we write our code using an OO approach. Also having experience with Terraform and AWS would definitely be a plus, as is the flexibility to learn the different technologies involved in our projects. While none of these requirements is written in stone, we would like you to feel comfortable working with real-time technologies like Kafka (KStreams and KSql) and Spark Streaming.
We believe in pair programming and despite being remote we spend a great part of the day pairing, so we hope you feel comfortable with this practice.
Our stack is wide: Scala, Spark, Node.js (ES6 and Typescript), Python, React, MongoDB, MySQL, RabbitMQ, Redis, AWS (SNS, SQS, API Gateway, Cognito, Lambda, Redshift, Aurora, DynamoDB). However, mastering them all is not a requirement. Again, mastering them all is not a requirement. We are more interested in the principles behind them.
We invest our time and support in helping each other towards continuous learning, so it is very important that you want to learn and continue practising the skills necessary to run our profession. Practise, practise, practise!
Working remotely has many advantages but also requires an extra effort of communication and responsibility, so we understand that the following skills are essential: self-management, fluid communication, respect, and inclusiveness.
What we offer?
Recruitment Process
About Audiense
Audiense enables innovative organizations to understand and apply the power of audience segmentation and insights by reinventing the use of compliant social data to make it more strategic and connect it with the business/marketing strategy to be relevant and deliver results.
Audiense’ advanced data science platform has attracted many premium clients such as Twitter, Telefónica, Puma and DHL. We have also developed important partnerships with Twitter and IBM. We are one of only two Twitter Official Partners certified for both data analysis and advertising, which ensures our clients can gather deep insights and then get the most from their investment in Twitter with advanced micro-targeting. We are also partnered with IBM Watson, which helps enrich our database with cognitive analysis, including personality, image and sentiment intelligence. This gives our clients an edge over their competitors as they can gather rich, detailed insights on audiences that matter to their business in real-time.
Founded in 2011 by Javier Burón and Alfredo Artiles, Audiense has offices in London, UK and Córdoba, Spain, and currently has 25 employees of which more than half are within engineering and product.